* NonGNU ELPA package submission: EPIO @ 2022-04-01 15:02 Daniel Hutzley 2022-04-01 16:45 ` Stefan Monnier 0 siblings, 1 reply; 8+ messages in thread From: Daniel Hutzley @ 2022-04-01 15:02 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 724 bytes --] Hi all, I would like to submit my new EPIO (Emacs PlatformIO) package to NonGNU ELPA. It provides integration with the free software PlatformIO CLI for EMACS, and is loosely based on the semi-official PlatformIO package functionality wise-wise (though it is pretty much rewritten from the ground up code-wise, with highlights including the inclusion of TexInfo documentation and no dependence on Projectile). Thanks, --Danny Included patches: ============================================ Package name : epio Existing versions : 0.1.0, 0.1.1 Source code : https://git.sr.ht/~hutzdog/epio License : MPL-2.0 Documentation license : CC-BY-SA-4.0 Patch file : 0001-elpa-packages-epio-New-package.patch Target repo : NonGNU ELPA [-- Attachment #2: 0001-elpa-packages-epio-New-package.patch --] [-- Type: text/x-patch, Size: 844 bytes --] From bf5f3455480d9d4ea476e7e56ba50d51eac41a1e Mon Sep 17 00:00:00 2001 From: Danielle Hutzley <endergeryt@gmail.com> Date: Thu, 31 Mar 2022 16:53:59 -0700 Subject: [PATCH] elpa-packages (epio): New package --- elpa-packages | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/elpa-packages b/elpa-packages index c008f8c6af..3af034fa2b 100644 --- a/elpa-packages +++ b/elpa-packages @@ -114,6 +114,12 @@ :doc "elpher.texi" :ignored-files ("Makefile" "ISSUES.org" "RELEASE" "config.mk")) + ("epio" :url "https://git.sr.ht/~hutzdog/epio.git" + :ignored-files ("Makefile.am" "configure.ac" "shell.nix" "COPYING") + :readme "README.md" + :news "ChangeLog" + :doc "epio.texi") + ("evil" :url "https://github.com/emacs-evil/evil" :ignored-files ("COPYING" "lib" "scripts") :doc "doc/build/texinfo/evil.texi") -- 2.35.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: NonGNU ELPA package submission: EPIO 2022-04-01 15:02 NonGNU ELPA package submission: EPIO Daniel Hutzley @ 2022-04-01 16:45 ` Stefan Monnier 2022-04-01 18:59 ` Daniel Hutzley 0 siblings, 1 reply; 8+ messages in thread From: Stefan Monnier @ 2022-04-01 16:45 UTC (permalink / raw) To: Daniel Hutzley; +Cc: emacs-devel > I would like to submit my new EPIO (Emacs PlatformIO) package to > NonGNU ELPA. It provides integration with the free software PlatformIO > CLI for EMACS, and is loosely based on the semi-official PlatformIO > package functionality wise-wise (though it is pretty much rewritten > from the ground up code-wise, with highlights including the inclusion > of TexInfo documentation and no dependence on Projectile). > Thanks, The description I find at https://git.sr.ht/~hutzdog/epio is rather brief (e.g. mentions an old "PlatformIO-Mode" without any link to it nor explanation of what it does and how it differs from your package). Not knowing anything about PlatformIO, could you give some explanation of what your package does. Of particular interest w.r.t integration into NonGNU ELPA is a clarification about what the package may download from remote servers, if any, and what external tools it requires, if any. The descriptions I find at https://platformio.org/ use words like "place" and "platform" which makes it sound like it might depend on a centralized server (which all too often force the use of proprietary Javascript code), other places suggest that binary tools might be downloaded from somewhere, again raising questions w.r.t Free Software ideals. Stefan ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: NonGNU ELPA package submission: EPIO 2022-04-01 16:45 ` Stefan Monnier @ 2022-04-01 18:59 ` Daniel Hutzley 2022-04-01 21:10 ` Stefan Monnier 0 siblings, 1 reply; 8+ messages in thread From: Daniel Hutzley @ 2022-04-01 18:59 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel Hey, I apologise for the vagueness of the README, I'll update it when I have the chance (I forgot to include the license footer anyway, so that'll be updated). While it is similar interface-wise to the PlatformIO-Mode they link on their page (again, I'll update the README with links when I get the chance), the internals are almost completely different (this plugin has no dependencies outside of EMACS, is documented in TexInfo, etc.). As for what PlatformIO is, it is a free (their writings do suggest an ideological rationale here) system for developing on embedded platforms such as Arduino (distinctly not web-based). Their CLI tool (Apache-2.0 license) is used, which does not depend on a server (after a bit of additional research, opt-out telemetry does exist, though it is documented, minimal, togglable, and auditable in the source code. I'll include this in the edit) outside of those commands which would not function without (namedly, the commands for the features listed on https://docs.platformio.org/en/latest/plus/pio-account.html and the system for managing libraries for interacting with different boards). I will update the documentation to cover all of this, along with a setting which disables telemetry using an environment variable and licensing info. Are there any other changes that are blocking here? Thanks, --Danny On Fri, Apr 1, 2022 at 9:45 AM Stefan Monnier <monnier@iro.umontreal.ca> wrote: > > > I would like to submit my new EPIO (Emacs PlatformIO) package to > > NonGNU ELPA. It provides integration with the free software PlatformIO > > CLI for EMACS, and is loosely based on the semi-official PlatformIO > > package functionality wise-wise (though it is pretty much rewritten > > from the ground up code-wise, with highlights including the inclusion > > of TexInfo documentation and no dependence on Projectile). > > Thanks, > > The description I find at https://git.sr.ht/~hutzdog/epio is rather > brief (e.g. mentions an old "PlatformIO-Mode" without any link to it nor > explanation of what it does and how it differs from your package). > > Not knowing anything about PlatformIO, could you give some explanation > of what your package does. Of particular interest w.r.t integration > into NonGNU ELPA is a clarification about what the package may download > from remote servers, if any, and what external tools it requires, if any. > > The descriptions I find at https://platformio.org/ use words like > "place" and "platform" which makes it sound like it might depend on > a centralized server (which all too often force the use of proprietary > Javascript code), other places suggest that binary tools might be > downloaded from somewhere, again raising questions w.r.t Free > Software ideals. > > > Stefan > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: NonGNU ELPA package submission: EPIO 2022-04-01 18:59 ` Daniel Hutzley @ 2022-04-01 21:10 ` Stefan Monnier 2022-04-01 21:53 ` Daniel Hutzley 0 siblings, 1 reply; 8+ messages in thread From: Stefan Monnier @ 2022-04-01 21:10 UTC (permalink / raw) To: Daniel Hutzley; +Cc: emacs-devel Daniel Hutzley [2022-04-01 11:59:05] wrote: > I apologise for the vagueness of the README, I'll update it when I > have the chance (I forgot to include the license footer anyway, so > that'll be updated). While it is similar interface-wise to the > PlatformIO-Mode they link on their page (again, I'll update the README > with links when I get the chance), the internals are almost completely > different (this plugin has no dependencies outside of EMACS, is > documented in TexInfo, etc.). As for what PlatformIO is, it is a free > (their writings do suggest an ideological rationale here) system for > developing on embedded platforms such as Arduino (distinctly not > web-based). Their CLI tool (Apache-2.0 license) is used, which does > not depend on a server (after a bit of additional research, opt-out > telemetry does exist, though it is documented, minimal, togglable, and > auditable in the source code. I'll include this in the edit) outside > of those commands which would not function without (namedly, the > commands for the features listed on > https://docs.platformio.org/en/latest/plus/pio-account.html and the > system for managing libraries for interacting with different boards). > I will update the documentation to cover all of this, along with a > setting which disables telemetry using an environment variable and > licensing info. Are there any other changes that are blocking here? I see you distribute this code under the MPL-2.0. I'm not very familiar with that license but a brief web search suggests this is not compatible with the GPL, which makes it arguably "illegal" to distribute your code (since it can't be used without linking it with GPL code). Any chance you could change it to GPLv3+? Also see below the patch resulting from my "destructive" reading habits. I think integration with `project` would be the most important feature. Stefan diff --git a/epio.el b/epio.el index 60b56400cb..dbf7156819 100644 --- a/epio.el +++ b/epio.el @@ -1,4 +1,4 @@ -;;; epio.el --- PlatformIO support for EMACS +;;; epio.el --- PlatformIO support for EMACS -*- lexical-binding: t; -*- ;; Copyright (C) 2022 Danielle Hutzley @@ -16,9 +16,11 @@ ;;; Commentary: -;; This is a minor mode designed to make working with PlatformIO projects easier. -;; It is loosely based off of ZachMassia/PlatformIO-Mode, but uses standard EMACS -;; functionality to avoid dependencies. +;; This is a minor mode designed to make working with PlatformIO projects +;; easier. It is loosely based off of ZachMassia/PlatformIO-Mode, but uses +;; standard Emacs functionality to avoid dependencies. + +;; TODO: Integration with `project'? ;;; Code: (require 'compile) @@ -31,12 +33,10 @@ (defcustom epio-mode-prefix (kbd "C-c i") "EPIO keymap prefix." - :group 'epio :type 'key-sequence) (defcustom epio-pio-path "pio" "The path of the PlatformIO command-line tool." - :group 'epio :type 'string) ;;; Compilation mode @@ -51,7 +51,7 @@ (define-compilation-mode epio-compilation-mode "EPIO" "EPIO compilation mode." - (add-hook 'compilation-filter-hook 'epio-compilation-filter nil t)) + (add-hook 'compilation-filter-hook #'epio-compilation-filter nil t)) ;;; Auto-enable @@ -65,12 +65,15 @@ (defun epio--platformio-command (project &rest arguments) "Run PlatformIO in the given PROJECT with the given ARGUMENTS." (let* ((default-directory (epio--get-pio-project project)) + ;; FIXME: seq-reduce + concat is O(N²), better use `mapconcat'. + ;; FIXME: What about spaces or other special chars in `arguments'? + ;; You should likely pass those through `shell-quote-argument'. (arguments-with-spaces (seq-reduce (lambda (acc elt) (concat acc " " elt)) arguments "")) (command (concat "pio -c EPIO" arguments-with-spaces))) (when (null default-directory) (user-error "Not in PlatformIO project!")) (save-some-buffers (current-buffer)) - (compilation-start command 'epio-compilation-mode))) + (compilation-start command #'epio-compilation-mode))) (defmacro epio--defcommand (name docstring arguments) "Helper to create an EPIO command NAME using the given ARGUMENTS and DOCSTRING." @@ -106,11 +109,10 @@ ("i" epio-init+update-workspace))) map) "EPIO keymap after `epio-mode-prefix'.") -(fset 'epio-command-map epio-command-map) (defvar epio-mode-map (let ((map (make-sparse-keymap))) - (define-key map epio-mode-prefix 'epio-command-map) + (define-key map epio-mode-prefix epio-command-map) map) "Keymap for EPIO mode.") @@ -120,10 +122,8 @@ ;;;###autoload (define-minor-mode epio-mode "PlatformIO support for EMACS." - :lighter " EPIO" - :keymap epio-mode-map :group 'epio - :require 'epio) + :lighter " EPIO") (provide 'epio) ;;; epio.el ends here ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: NonGNU ELPA package submission: EPIO 2022-04-01 21:10 ` Stefan Monnier @ 2022-04-01 21:53 ` Daniel Hutzley 2022-04-01 22:40 ` Stefan Monnier 2022-04-03 3:58 ` Richard Stallman 0 siblings, 2 replies; 8+ messages in thread From: Daniel Hutzley @ 2022-04-01 21:53 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel Hey, From looking at the license list, the MPL2.0 is compatible (it's the MPL1.0 that is incompatible) with the GPL (I usually use it due to its weaker copyleft, which avoids software being "open source" but not "free" just because of the license of a dependency), but if you insist I can do so. I'll patch the code this afternoon, once I get the documentation fixed and telemetry switch (I'll make it opt-in, since it seems more fitting for EMACS) implemented. I originally was planning to base this on `project`, but found that `dominating-file` was sufficient (I'm a bit new, so correct me if I'm wrong). I probably will implement it as a backend switch, so that it'll work with both mechanisms (and possibly `projectile.el`). --Danny On Fri, Apr 1, 2022 at 2:10 PM Stefan Monnier <monnier@iro.umontreal.ca> wrote: > > Daniel Hutzley [2022-04-01 11:59:05] wrote: > > I apologise for the vagueness of the README, I'll update it when I > > have the chance (I forgot to include the license footer anyway, so > > that'll be updated). While it is similar interface-wise to the > > PlatformIO-Mode they link on their page (again, I'll update the README > > with links when I get the chance), the internals are almost completely > > different (this plugin has no dependencies outside of EMACS, is > > documented in TexInfo, etc.). As for what PlatformIO is, it is a free > > (their writings do suggest an ideological rationale here) system for > > developing on embedded platforms such as Arduino (distinctly not > > web-based). Their CLI tool (Apache-2.0 license) is used, which does > > not depend on a server (after a bit of additional research, opt-out > > telemetry does exist, though it is documented, minimal, togglable, and > > auditable in the source code. I'll include this in the edit) outside > > of those commands which would not function without (namedly, the > > commands for the features listed on > > https://docs.platformio.org/en/latest/plus/pio-account.html and the > > system for managing libraries for interacting with different boards). > > I will update the documentation to cover all of this, along with a > > setting which disables telemetry using an environment variable and > > licensing info. Are there any other changes that are blocking here? > > I see you distribute this code under the MPL-2.0. > I'm not very familiar with that license but a brief web search suggests > this is not compatible with the GPL, which makes it arguably "illegal" > to distribute your code (since it can't be used without linking it with > GPL code). > > Any chance you could change it to GPLv3+? > > Also see below the patch resulting from my "destructive" reading habits. > > I think integration with `project` would be the most important feature. > > > Stefan > > > diff --git a/epio.el b/epio.el > index 60b56400cb..dbf7156819 100644 > --- a/epio.el > +++ b/epio.el > @@ -1,4 +1,4 @@ > -;;; epio.el --- PlatformIO support for EMACS > +;;; epio.el --- PlatformIO support for EMACS -*- lexical-binding: t; -*- > > ;; Copyright (C) 2022 Danielle Hutzley > > @@ -16,9 +16,11 @@ > > ;;; Commentary: > > -;; This is a minor mode designed to make working with PlatformIO projects easier. > -;; It is loosely based off of ZachMassia/PlatformIO-Mode, but uses standard EMACS > -;; functionality to avoid dependencies. > +;; This is a minor mode designed to make working with PlatformIO projects > +;; easier. It is loosely based off of ZachMassia/PlatformIO-Mode, but uses > +;; standard Emacs functionality to avoid dependencies. > + > +;; TODO: Integration with `project'? > > ;;; Code: > (require 'compile) > @@ -31,12 +33,10 @@ > > (defcustom epio-mode-prefix (kbd "C-c i") > "EPIO keymap prefix." > - :group 'epio > :type 'key-sequence) > > (defcustom epio-pio-path "pio" > "The path of the PlatformIO command-line tool." > - :group 'epio > :type 'string) > > ;;; Compilation mode > @@ -51,7 +51,7 @@ > > (define-compilation-mode epio-compilation-mode "EPIO" > "EPIO compilation mode." > - (add-hook 'compilation-filter-hook 'epio-compilation-filter nil t)) > + (add-hook 'compilation-filter-hook #'epio-compilation-filter nil t)) > > ;;; Auto-enable > > @@ -65,12 +65,15 @@ > (defun epio--platformio-command (project &rest arguments) > "Run PlatformIO in the given PROJECT with the given ARGUMENTS." > (let* ((default-directory (epio--get-pio-project project)) > + ;; FIXME: seq-reduce + concat is O(N²), better use `mapconcat'. > + ;; FIXME: What about spaces or other special chars in `arguments'? > + ;; You should likely pass those through `shell-quote-argument'. > (arguments-with-spaces (seq-reduce (lambda (acc elt) (concat acc " " elt)) arguments "")) > (command (concat "pio -c EPIO" arguments-with-spaces))) > (when (null default-directory) > (user-error "Not in PlatformIO project!")) > (save-some-buffers (current-buffer)) > - (compilation-start command 'epio-compilation-mode))) > + (compilation-start command #'epio-compilation-mode))) > > (defmacro epio--defcommand (name docstring arguments) > "Helper to create an EPIO command NAME using the given ARGUMENTS and DOCSTRING." > @@ -106,11 +109,10 @@ > ("i" epio-init+update-workspace))) > map) > "EPIO keymap after `epio-mode-prefix'.") > -(fset 'epio-command-map epio-command-map) > > (defvar epio-mode-map > (let ((map (make-sparse-keymap))) > - (define-key map epio-mode-prefix 'epio-command-map) > + (define-key map epio-mode-prefix epio-command-map) > map) > "Keymap for EPIO mode.") > > @@ -120,10 +122,8 @@ > ;;;###autoload > (define-minor-mode epio-mode > "PlatformIO support for EMACS." > - :lighter " EPIO" > - :keymap epio-mode-map > :group 'epio > - :require 'epio) > + :lighter " EPIO") > > (provide 'epio) > ;;; epio.el ends here > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: NonGNU ELPA package submission: EPIO 2022-04-01 21:53 ` Daniel Hutzley @ 2022-04-01 22:40 ` Stefan Monnier 2022-04-03 3:58 ` Richard Stallman 1 sibling, 0 replies; 8+ messages in thread From: Stefan Monnier @ 2022-04-01 22:40 UTC (permalink / raw) To: Daniel Hutzley; +Cc: emacs-devel > From looking at the license list, the MPL2.0 is compatible (it's the > MPL1.0 that is incompatible) with the GPL Indeed, I found http://www.gnu.org/licenses/license-list.html#MPL-2.0 which clarifies it, I was looking at old documents. Stefan ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: NonGNU ELPA package submission: EPIO 2022-04-01 21:53 ` Daniel Hutzley 2022-04-01 22:40 ` Stefan Monnier @ 2022-04-03 3:58 ` Richard Stallman 2022-04-03 16:19 ` Daniel Hutzley 1 sibling, 1 reply; 8+ messages in thread From: Richard Stallman @ 2022-04-03 3:58 UTC (permalink / raw) To: Daniel Hutzley; +Cc: monnier, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > >From looking at the license list, the MPL2.0 is compatible (it's the > MPL1.0 that is incompatible) with the GPL (I usually use it due to its > weaker copyleft, which avoids software being "open source" but not > "free" just because of the license of a dependency), I can't relate those words to anything I know about the MPL 2 and free software, so I wonder if a misunderstanding might be involved. How might this result in a program that is open source but not free? That result does happen, but I don't see what in this situation could have that effect. Would you like to spell out the scenatio that you have in mind, and how it might result in a program that is open source but not free? Then we could determine whether it is a misunderstanding. -- Dr Richard Stallman (https://stallman.org) Chief GNUisance of the GNU Project (https://gnu.org) Founder, Free Software Foundation (https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org) ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: NonGNU ELPA package submission: EPIO 2022-04-03 3:58 ` Richard Stallman @ 2022-04-03 16:19 ` Daniel Hutzley 0 siblings, 0 replies; 8+ messages in thread From: Daniel Hutzley @ 2022-04-03 16:19 UTC (permalink / raw) To: rms; +Cc: monnier, emacs-devel [-- Attachment #1: Type: text/plain, Size: 3087 bytes --] Hey, Sure, though I may misunderstand here. Imagine that a GPL project is the best viable option for a component where the license’s viral nature comes into play. If a company wishes to use it without holding free software ideals, they can use the license to fulfil the requirement of being open source without trying to respect user freedoms. Worse still, this makes them a “wolf in sheep’s clothing”, since they are making their software open source for a less-than-ideological reason (this likely will result in malware which is open source in license only). With a license like the MPL, the true nature of the user is far more on display, since they have to willingly make the rest of their software free (with a choice as to which license they use, allowing more flexibility). In essence, products based on MPL projects must voluntarily support freedom (and hence prove themselves to the user) or show that they are not going to respect freedom more than they must (companies already using open source licenses are usually even harder to demand freedom of, as there are fewer voices speaking). Should we entrust our freedoms to companies forced to make their software open source to respect freedom now and in the future (possibly employing tactics such as EEE to choke out their competition), or should we allow people doing the right thing willingly to have the support they need to avoid being choked out. I hope this cleared things up, —Danny P.S. Huge fan of the GNU project’s work, by the way. While I have one of the two Broadcom cards that don’t have working reverse-engineered drivers and made the horrible mistake of buying a Nvidia card, I try to stick with free software where practical. On Sat, Apr 2, 2022 at 20:58, Richard Stallman <rms@gnu.org> wrote: > [[[ To any NSA and FBI agents reading my email: please consider ]]] > [[[ whether defending the US Constitution against all enemies, ]]] > [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > > > >From looking at the license list, the MPL2.0 is compatible (it's the > > MPL1.0 that is incompatible) with the GPL (I usually use it due to its > > weaker copyleft, which avoids software being "open source" but not > > "free" just because of the license of a dependency), > > I can't relate those words to anything I know about the MPL 2 and free > software, so I wonder if a misunderstanding might be involved. > How might this result in a program that is open source but not free? > That result does happen, but I don't see what in this situation > could have that effect. > > Would you like to spell out the scenatio that you have in mind, and > how it might result in a program that is open source but not free? > Then we could determine whether it is a misunderstanding. > > -- > Dr Richard Stallman (https://stallman.org) > Chief GNUisance of the GNU Project (https://gnu.org) > Founder, Free Software Foundation (https://fsf.org) > Internet Hall-of-Famer (https://internethalloffame.org) > > > [-- Attachment #2: Type: text/html, Size: 3930 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-04-03 16:19 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-04-01 15:02 NonGNU ELPA package submission: EPIO Daniel Hutzley 2022-04-01 16:45 ` Stefan Monnier 2022-04-01 18:59 ` Daniel Hutzley 2022-04-01 21:10 ` Stefan Monnier 2022-04-01 21:53 ` Daniel Hutzley 2022-04-01 22:40 ` Stefan Monnier 2022-04-03 3:58 ` Richard Stallman 2022-04-03 16:19 ` Daniel Hutzley
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).