* streams are cool, you could stream virtually anything! @ 2015-11-04 12:39 Nicolas Petton 2015-11-04 15:50 ` John Wiegley ` (2 more replies) 0 siblings, 3 replies; 209+ messages in thread From: Nicolas Petton @ 2015-11-04 12:39 UTC (permalink / raw) To: emacs-devel, Damien Cassou [-- Attachment #1: Type: text/plain, Size: 708 bytes --] Hi guys, Aren't you tired of writing the same for loops in various contexts? I know I was, and there's a better way! I just added a function `stream-regexp' to stream.el to stream the search of a regexp in a buffer: (let ((str (stream-regexp buf ".*foo\\(.*\\)$"))) (seq-map (lambda (match-data) ...) str)) (I still have to document it and test it properly) Because streams are lazy and immutable, you can reuse such a stream forever or keep it for later, move around in a buffer or modify the buffer and re-evaluate the stream (you'll get new match data), or map the result, etc. All the credit goes to Damien Cassou for giving me the idea :-) Cheers, Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-04 12:39 streams are cool, you could stream virtually anything! Nicolas Petton @ 2015-11-04 15:50 ` John Wiegley 2015-11-04 16:59 ` Damien Cassou 2015-11-04 18:06 ` Michael Heerdegen 2015-11-04 17:00 ` Phillip Lord 2015-11-04 17:57 ` Michael Heerdegen 2 siblings, 2 replies; 209+ messages in thread From: John Wiegley @ 2015-11-04 15:50 UTC (permalink / raw) To: Nicolas Petton; +Cc: Damien Cassou, emacs-devel >>>>> Nicolas Petton <nicolas@petton.fr> writes: > I just added a function `stream-regexp' to stream.el to stream the search of > a regexp in a buffer: This is amazing, Nicolas! I've wanted this exact construction so many times! Do you know the memory behavior of doing it this way? That is, for 1000 hits, how does the number of cons's allocated compare to the iterative approach? John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-04 15:50 ` John Wiegley @ 2015-11-04 16:59 ` Damien Cassou 2015-11-04 18:06 ` Michael Heerdegen 1 sibling, 0 replies; 209+ messages in thread From: Damien Cassou @ 2015-11-04 16:59 UTC (permalink / raw) To: John Wiegley; +Cc: Nicolas Petton, emacs-devel John Wiegley <jwiegley@gmail.com> writes: >> I just added a function `stream-regexp' to stream.el to stream the search of >> a regexp in a buffer: > > This is amazing, Nicolas! I've wanted this exact construction so many times! > > Do you know the memory behavior of doing it this way? That is, for 1000 hits, > how does the number of cons's allocated compare to the iterative approach? I think it does not cost anything because nothing is stored in memory. It's just a different way to write the while loop. -- Damien Cassou http://damiencassou.seasidehosting.st "Success is the ability to go from one failure to another without losing enthusiasm." --Winston Churchill ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-04 15:50 ` John Wiegley 2015-11-04 16:59 ` Damien Cassou @ 2015-11-04 18:06 ` Michael Heerdegen 2015-11-04 19:17 ` Michael Heerdegen 2015-11-04 21:58 ` Nicolas Petton 1 sibling, 2 replies; 209+ messages in thread From: Michael Heerdegen @ 2015-11-04 18:06 UTC (permalink / raw) To: emacs-devel John Wiegley <jwiegley@gmail.com> writes: > Do you know the memory behavior of doing it this way? That is, for > 1000 hits, how does the number of cons's allocated compare to the > iterative approach? That depends on whether you want/need to keep the matches so far. If you don't need to save prior matches, you can just (setq stream (stream-cdr stream)) after generating an element, and memory usage will be O(1). (Note to Nicolas: a `stream-pop' function would be nice in this context). In that case, you can alternatively use generators (generator.el) or the derived iterators.el. If you keep the complete stream in memory, you get O(nbr-matches) conses (of course). Not much a problem IME, if you keep an eye on what you want to keep and what you can throw away when using streams. Regards, Michael. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-04 18:06 ` Michael Heerdegen @ 2015-11-04 19:17 ` Michael Heerdegen 2015-11-04 21:58 ` Nicolas Petton 1 sibling, 0 replies; 209+ messages in thread From: Michael Heerdegen @ 2015-11-04 19:17 UTC (permalink / raw) To: emacs-devel Michael Heerdegen <michael_heerdegen@web.de> writes: > after generating an element, and memory usage will be O(1). If you iterate you will produce O(nbr-matches) new conses of course. But as had been said, that's not different from a (regular) loop. Michael. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-04 18:06 ` Michael Heerdegen 2015-11-04 19:17 ` Michael Heerdegen @ 2015-11-04 21:58 ` Nicolas Petton 2015-11-04 23:20 ` T.V Raman 2015-11-04 23:34 ` streams are cool, you could stream virtually anything! Michael Heerdegen 1 sibling, 2 replies; 209+ messages in thread From: Nicolas Petton @ 2015-11-04 21:58 UTC (permalink / raw) To: Michael Heerdegen, emacs-devel [-- Attachment #1: Type: text/plain, Size: 443 bytes --] Michael Heerdegen <michael_heerdegen@web.de> writes: > That depends on whether you want/need to keep the matches so far. If > you don't need to save prior matches, you can just > > (setq stream (stream-cdr stream)) > > after generating an element, and memory usage will be O(1). (Note to > Nicolas: a `stream-pop' function would be nice in this context). Indeed! Could I by any chance get another pull request from you on GitHub? Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-04 21:58 ` Nicolas Petton @ 2015-11-04 23:20 ` T.V Raman 2015-11-04 23:31 ` Nicolas Petton 2015-11-05 0:27 ` John Wiegley 2015-11-04 23:34 ` streams are cool, you could stream virtually anything! Michael Heerdegen 1 sibling, 2 replies; 209+ messages in thread From: T.V Raman @ 2015-11-04 23:20 UTC (permalink / raw) To: Nicolas Petton; +Cc: Michael Heerdegen, emacs-devel As more of these patterns emerge, I'm even more convinced that the stream package belongs alongside thunk.el in core emacs. -- ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-04 23:20 ` T.V Raman @ 2015-11-04 23:31 ` Nicolas Petton 2015-11-05 0:27 ` John Wiegley 1 sibling, 0 replies; 209+ messages in thread From: Nicolas Petton @ 2015-11-04 23:31 UTC (permalink / raw) To: T.V Raman; +Cc: Michael Heerdegen, emacs-devel [-- Attachment #1: Type: text/plain, Size: 220 bytes --] "T.V Raman" <raman@google.com> writes: > As more of these patterns emerge, I'm even more convinced that the > stream package belongs alongside thunk.el in core emacs. I think so too, but I'm obviously biased :) Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-04 23:20 ` T.V Raman 2015-11-04 23:31 ` Nicolas Petton @ 2015-11-05 0:27 ` John Wiegley 2015-11-05 0:38 ` T.V Raman 2015-11-05 17:06 ` streams and generators (was: streams are cool, you could stream virtually anything!) Michael Heerdegen 1 sibling, 2 replies; 209+ messages in thread From: John Wiegley @ 2015-11-05 0:27 UTC (permalink / raw) To: T.V Raman; +Cc: Michael Heerdegen, Nicolas Petton, emacs-devel >>>>> T V Raman <raman@google.com> writes: > As more of these patterns emerge, I'm even more convinced that the stream > package belongs alongside thunk.el in core emacs. Let's see it develop during these earlier stages on ELPA, so people can easily update the package as it develops. Once it stabilizes, I agree we should move it into core. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-05 0:27 ` John Wiegley @ 2015-11-05 0:38 ` T.V Raman 2015-11-05 0:48 ` ELPA policy (Was: streams are cool, you could stream virtually anything!) John Wiegley 2015-11-05 17:06 ` streams and generators (was: streams are cool, you could stream virtually anything!) Michael Heerdegen 1 sibling, 1 reply; 209+ messages in thread From: T.V Raman @ 2015-11-05 0:38 UTC (permalink / raw) To: jwiegley; +Cc: michael_heerdegen, nicolas, emacs-devel, raman SGTM. While on the topic -- should we move things out of core into elpa -- there are a lot of elisp packages that are presently bundled -- mostly because "there was no elpa around when they were bundled". John Wiegley writes: > >>>>> T V Raman <raman@google.com> writes: > > > As more of these patterns emerge, I'm even more convinced that the stream > > package belongs alongside thunk.el in core emacs. > > Let's see it develop during these earlier stages on ELPA, so people can easily > update the package as it develops. Once it stabilizes, I agree we should move > it into core. > > John -- -- ^ permalink raw reply [flat|nested] 209+ messages in thread
* ELPA policy (Was: streams are cool, you could stream virtually anything!) 2015-11-05 0:38 ` T.V Raman @ 2015-11-05 0:48 ` John Wiegley 2015-11-05 0:52 ` T.V Raman 2015-11-08 17:18 ` ELPA policy Achim Gratz 0 siblings, 2 replies; 209+ messages in thread From: John Wiegley @ 2015-11-05 0:48 UTC (permalink / raw) To: T.V Raman; +Cc: michael_heerdegen, nicolas, emacs-devel >>>>> T V Raman <raman@google.com> writes: > While on the topic -- should we move things out of core into elpa -- there > are a lot of elisp packages that are presently bundled -- mostly because > "there was no elpa around when they were bundled". I would in fact like to see more packages move from core into ELPA, although I'm not eager to do so willy nilly. Some packages now in Core are just fun, or should be there because people are used to them being there, even if today we wouldn't necessarily add that package to core. If someone would be willing to go through every core package, and produce a list of what should stay in core, what should move to ELPA, and why they think so, that would be a great starting point. I know from past experience that reading every core file is highly interesting and educational, and I guarantee whoever volunteers for this will discover many cool and interesting things. :) John ^ permalink raw reply [flat|nested] 209+ messages in thread
* ELPA policy (Was: streams are cool, you could stream virtually anything!) 2015-11-05 0:48 ` ELPA policy (Was: streams are cool, you could stream virtually anything!) John Wiegley @ 2015-11-05 0:52 ` T.V Raman 2015-11-08 17:18 ` ELPA policy Achim Gratz 1 sibling, 0 replies; 209+ messages in thread From: T.V Raman @ 2015-11-05 0:52 UTC (permalink / raw) To: jwiegley; +Cc: michael_heerdegen, nicolas, emacs-devel, raman Reading through those files is how I taught myself enough about Emacs to write emacspeak:-) John Wiegley writes: > >>>>> T V Raman <raman@google.com> writes: > > > While on the topic -- should we move things out of core into elpa -- there > > are a lot of elisp packages that are presently bundled -- mostly because > > "there was no elpa around when they were bundled". > > I would in fact like to see more packages move from core into ELPA, although > I'm not eager to do so willy nilly. Some packages now in Core are just fun, or > should be there because people are used to them being there, even if today we > wouldn't necessarily add that package to core. > > If someone would be willing to go through every core package, and produce a > list of what should stay in core, what should move to ELPA, and why they think > so, that would be a great starting point. > > I know from past experience that reading every core file is highly interesting > and educational, and I guarantee whoever volunteers for this will discover > many cool and interesting things. :) > > John -- -- ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-05 0:48 ` ELPA policy (Was: streams are cool, you could stream virtually anything!) John Wiegley 2015-11-05 0:52 ` T.V Raman @ 2015-11-08 17:18 ` Achim Gratz 2015-11-08 17:49 ` Eli Zaretskii 1 sibling, 1 reply; 209+ messages in thread From: Achim Gratz @ 2015-11-08 17:18 UTC (permalink / raw) To: emacs-devel John Wiegley writes: > I would in fact like to see more packages move from core into ELPA, although > I'm not eager to do so willy nilly. Some packages now in Core are just fun, or > should be there because people are used to them being there, even if today we > wouldn't necessarily add that package to core. I've proposed this before, but I guess I should run it by you again (and warn you it wasn't favorably received): The current definition of "core" is that the sources live inside the Emacs repository. Several of the larger core packages like Org, CEDET and Gnus are already largely developed outside Emacs, for instance because the developers want to keep them compatible with different/older Emacsen and need to be synced into Emacs sources to make them "core" anyway. I posit that the only thing that actually matters for something to be considered "core" is that authors of other packages can rely on the (stable) API provided by these packages to be available in an Emacs as it gets distributed and no installation of further packages or software is necessary, neither by the sysadmin nor the user. If so, instead of keeping the "core" sources all in Emacs, they could equally well be living in ELPA and be pre-installed into the distribution, or installed into the Emacs build tree as submodules or subtrees. The most radical (and likely most controversial) thing to do would be to move everything to ELPA that isn't needed to bootstrap Emacs. Doing this would need some as of yet non-existing infrastructure to get the chosen ELPA version of each package built into the distribution, and facilities for sysadmins and users to update (but not disable) the "core" packages at the system level or in their private directories. Emacs may eventually distribute some "non-core" packages also that sysadmins or users could disable if they chose to not use them. Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ SD adaptation for Waldorf Blofeld V1.15B11: http://Synth.Stromeko.net/Downloads.html#WaldorfSDada ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-08 17:18 ` ELPA policy Achim Gratz @ 2015-11-08 17:49 ` Eli Zaretskii 2015-11-08 20:52 ` Aaron Ecay 0 siblings, 1 reply; 209+ messages in thread From: Eli Zaretskii @ 2015-11-08 17:49 UTC (permalink / raw) To: Achim Gratz; +Cc: emacs-devel > From: Achim Gratz <Stromeko@nexgo.de> > Date: Sun, 08 Nov 2015 18:18:26 +0100 > > I posit that the only thing that actually matters for something to be > considered "core" is that authors of other packages can rely on the > (stable) API provided by these packages to be available in an Emacs as > it gets distributed and no installation of further packages or software > is necessary, neither by the sysadmin nor the user. If so, instead of > keeping the "core" sources all in Emacs, they could equally well be > living in ELPA and be pre-installed into the distribution, or installed > into the Emacs build tree as submodules or subtrees. IMO, no serious move such as this one should be argued for, let alone attempted, without some minimal analysis of advantages and disadvantages. In particular, such an analysis cannot be limited to the POV of maintainers of packages tat are currently not bundled, it must first and foremost look at this from the POV of the Emacs maintenance, definitely if the argument is to leave in the Emacs repository only what's needed for bootstrap. And any change in maintenance routine, small or large, should have enough advantages to justify the energy that will certainly go into the move itself and into cleaning up the resulting fallout. I don't see how we can seriously discuss such suggestions when they are not accompanied by anything like the analysis they need. > The most radical (and likely most controversial) thing to do would > be to move everything to ELPA that isn't needed to bootstrap Emacs. Most such packages don't have any active maintainers, i.e. they are maintained by the "FSF", which means us the core developers. IMO, it makes very little sense to spread the stuff we maintain between 2 separate repositories, because all this does is add overhead and complexity without any clear benefits that I could see. Another important aspect that this suggestion seems to overlook is that Emacs packages rely on others not only via APIs, but also by inheritance, like all the modes that derive from Text mode etc. > Doing this would need some as of yet non-existing infrastructure to get > the chosen ELPA version of each package built into the distribution, and > facilities for sysadmins and users to update (but not disable) the > "core" packages at the system level or in their private directories. Yes, and the effort this will require is squarely in the disadvantages camp. Let me turn the table and ask: Are there any _advantages_ in moving stuff like Dired, CC Mode, Shell Mode, Speedbar, and ps-print, to name just a random few? ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-08 17:49 ` Eli Zaretskii @ 2015-11-08 20:52 ` Aaron Ecay 2015-11-09 3:42 ` Eli Zaretskii 0 siblings, 1 reply; 209+ messages in thread From: Aaron Ecay @ 2015-11-08 20:52 UTC (permalink / raw) To: Eli Zaretskii, Achim Gratz; +Cc: emacs-devel Hi Eli, 2015ko azaroak 8an, Eli Zaretskii-ek idatzi zuen: [...] > > Let me turn the table and ask: Are there any _advantages_ in moving > stuff like Dired, CC Mode, Shell Mode, Speedbar, and ps-print, to name > just a random few? Imagine someone implements an awesome new feature for dired. Emacs users the world over are amazed by this, and fill their blogs, twitter, etc. with the news. If dired is an ELPA package, everyone who hears this news can get the new feature in their emacs instantly by upgrading their ELPA packages. No need to wait N months for a new release of emacs, or compile a non-release version of emacs from git. Whether this counts as an advantage or not is complicated, and partially depends on one’s point of view. It would spell the end of an era where each emacs release’s features are explicated through a year of excited blogposts (for example <http://endlessparentheses.com/tags-expanded.html#emacs-25>). Users will be able to choose a new model where features trickle in rather than coming in sudden major chunks. This might make it more complicated to advocate adoption of new emacs versions. But I don’t think so actually: we regularly get big features at the language level too, which are very exciting (for emacs 24 lexical binding, now dynamic modules and xwidgets, and one dares to hope for the concurrency branch in emacs26). I also think that discussion around this topic is distorted by a long-tailed distribution. Most people probably have in mind the big emacs packages with dynamic developer communities and independent release cycles. Org, Gnus, CEDET, and maybe a few others. On the other hand, it seems to me that you have in mind (in addition to these) all the tiny packages that see very few commits and perhaps no new features (in the extreme case take kermit.el, which has seen no substantive changes since at least 1992, but still gets its copyright header lovingly updated every year). I don’t know how to reconcile these viewpoints, or even if it’s necessary. Just something to consider. Speaking for myself, my primary interest in emacs development is working on org-mode, and I heavily use org as well as third-party packages for python (elpy), clojure (cider), R (ESS), and a few other random things. I build emacs from git every month or so in order to pick up little quality of life improvements, like with-eval-afer-load, some of the subr-x stuff, seq.el, the overhauled package menu, etc. But I have to make sure to keep a couple months’ worth of old emacsen around, in case my monthly pull happens to land on a buggy commit – one that causes regular segfaults, which I have had happen more than once. I use emacs for work so I don’t have the luxury of just going without for a few days until the problem is fixed. I could go back to a previous released version of course, but then my init.el breaks because it relies on new features since the release. I’d be much happier running released versions of emacs for stability, if it were easier to pull in new versions of core elisp libraries as they are developed. I suspect there are some others out there like me, and many more who don’t currently build emacs from source for whatever reason but would enjoy more regular access to new features in core elisp libraries. My 2 cents FWIW, Aaron PS I also have the impression that life would be easier for org’s maintainers under a system that freed them from merging code back and forth from org’s repo to emacs. This would have indirect positive effects on me as I work on org development. However, I’m sure the maintainers themselves – and maintainers of other projects in the same situation like CEDET and Gnus – can speak to the question better than I can. -- Aaron Ecay ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-08 20:52 ` Aaron Ecay @ 2015-11-09 3:42 ` Eli Zaretskii 2015-11-09 3:51 ` Dmitry Gutov 2015-11-09 18:22 ` Achim Gratz 0 siblings, 2 replies; 209+ messages in thread From: Eli Zaretskii @ 2015-11-09 3:42 UTC (permalink / raw) To: Aaron Ecay; +Cc: Stromeko, emacs-devel > From: Aaron Ecay <aaronecay@gmail.com> > Cc: emacs-devel@gnu.org > Date: Sun, 08 Nov 2015 20:52:12 +0000 > > Imagine someone implements an awesome new feature for dired. Emacs > users the world over are amazed by this, and fill their blogs, twitter, > etc. with the news. If dired is an ELPA package, everyone who hears > this news can get the new feature in their emacs instantly by upgrading > their ELPA packages. No need to wait N months for a new release of > emacs, or compile a non-release version of emacs from git. How is this different when Dired is in the Emacs repository? The Emacs repository is a public one, so anyone and everyone can get the latest version from there and use it, if they want. > I also think that discussion around this topic is distorted by a > long-tailed distribution. Most people probably have in mind the big > emacs packages with dynamic developer communities and independent > release cycles. Org, Gnus, CEDET, and maybe a few others. On the other > hand, it seems to me that you have in mind (in addition to these) all > the tiny packages that see very few commits and perhaps no new features > (in the extreme case take kermit.el, which has seen no substantive > changes since at least 1992, but still gets its copyright header > lovingly updated every year). I don’t know how to reconcile these > viewpoints, or even if it’s necessary. Just something to consider. The suggestion was to move _all_ of them, except the few that are needed for bootstrap, out of the Emacs repository. Most of the packages in that category are neither like Org nor like kermit. They are relatively small, but get quite a significant number of changes. > Speaking for myself, my primary interest in emacs development is working > on org-mode, and I heavily use org as well as third-party packages for > python (elpy), clojure (cider), R (ESS), and a few other random things. > I build emacs from git every month or so in order to pick up little > quality of life improvements, like with-eval-afer-load, some of the > subr-x stuff, seq.el, the overhauled package menu, etc. But I have to > make sure to keep a couple months’ worth of old emacsen around, in case > my monthly pull happens to land on a buggy commit – one that causes > regular segfaults, which I have had happen more than once. I use emacs > for work so I don’t have the luxury of just going without for a few days > until the problem is fixed. I could go back to a previous released > version of course, but then my init.el breaks because it relies on new > features since the release. I don't see how the issue at hand can affect you, then. Your usage is very similar to mine, FWIW. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 3:42 ` Eli Zaretskii @ 2015-11-09 3:51 ` Dmitry Gutov 2015-11-09 11:15 ` New ELPA policy proposal (was: ELPA policy) Oleh Krehel 2015-11-09 16:05 ` ELPA policy Eli Zaretskii 2015-11-09 18:22 ` Achim Gratz 1 sibling, 2 replies; 209+ messages in thread From: Dmitry Gutov @ 2015-11-09 3:51 UTC (permalink / raw) To: Eli Zaretskii, Aaron Ecay; +Cc: Stromeko, emacs-devel On 11/09/2015 05:42 AM, Eli Zaretskii wrote: >> Imagine someone implements an awesome new feature for dired. Emacs >> users the world over are amazed by this, and fill their blogs, twitter, >> etc. with the news. If dired is an ELPA package, everyone who hears >> this news can get the new feature in their emacs instantly by upgrading >> their ELPA packages. No need to wait N months for a new release of >> emacs, or compile a non-release version of emacs from git. > > How is this different when Dired is in the Emacs repository? The > Emacs repository is a public one, so anyone and everyone can get the > latest version from there and use it, if they want. a) That's a more involved endeavor than installing a package from ELPA. And then you don't get the same conveniences, such as automatic updates. b) There's a much higher probability that Dired depends on something only the current development version of Emacs has. ELPA packages declare their version requirements explicitly, and try not to break compatibility with earlier versions without sufficient reasons. > The suggestion was to move _all_ of them, except the few that are > needed for bootstrap, out of the Emacs repository. Most of the > packages in that category are neither like Org nor like kermit. They > are relatively small, but get quite a significant number of changes. There were different suggestions, with different degrees between "let's move Org and Gnus out" and "let's move everything out". ^ permalink raw reply [flat|nested] 209+ messages in thread
* New ELPA policy proposal (was: ELPA policy) 2015-11-09 3:51 ` Dmitry Gutov @ 2015-11-09 11:15 ` Oleh Krehel 2015-11-09 13:51 ` Artur Malabarba 2015-11-09 16:11 ` New ELPA policy proposal (was: ELPA policy) Eli Zaretskii 2015-11-09 16:05 ` ELPA policy Eli Zaretskii 1 sibling, 2 replies; 209+ messages in thread From: Oleh Krehel @ 2015-11-09 11:15 UTC (permalink / raw) To: emacs-devel Hi all, In the previous thread, a few concerns were posted: 1. Having ELPA separate from Emacs requires internet access to install extra packages, which might be undesirable. 2. Merging all ELPA commits into Emacs might be too noisy. 3. Waiting for new core features until Emacs release, as opposed to obtaining them immediately from ELPA. Here's my proposal to address these issues: 1. Only packages which are relatively independent are allowed to be moved to ELPA. This is a rule that we adhere to right now, I just wanted to re-state it. And it's important for the next point. 2. Each package is developed it its own Git repository, and is included into the common ELPA directory as a Git submodule. No actual code is ever committed into the Emacs git repository, only the commit hashes, when an ELPA package maintainer deems it appropriate to merge, e.g. the package is assumed to work fine with the current Emacs git version, at the moment of the merge. Then there will also be some script, like $ make elpa that will update all packages with "git submodule update". In my opinion, this is very close the model of MELPA - a very successful Emacs package archive with 2786 packages to GELPA's 130. The only difference here is that the updates aren't automatic, and are instead up to the maintainer, which should give more stability. 3. On Emacs release, we'll have emacs.tar (for people with low bandwidth) and emacs-with-elpa.tar (the recommended download). The user will have several options to configure the Emacs installation: a. Only core Emacs. b. Core Emacs with a separate offline ELPA repository. The user will be able to install from this offline ELPA repository at any time. This should be a nice default option, I think. c. Emacs with all ELPA packages installed, because why not? 4. Thanks to the version system, it will be possible to update these "offline" ELPA packages with the current online version, just like it's currently possible to have the GELPA version of a package to update to the MELPA version. Additionally, with the feature of pinning a package to an archive, we give the user the flexibility to pin ELPA packages to the offline ELPA repository, instead of having them update automatically from GNU ELPA. regards, Oleh ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: New ELPA policy proposal (was: ELPA policy) 2015-11-09 11:15 ` New ELPA policy proposal (was: ELPA policy) Oleh Krehel @ 2015-11-09 13:51 ` Artur Malabarba 2015-11-09 15:02 ` New ELPA policy proposal Oleh Krehel 2015-11-09 15:41 ` Wolfgang Jenkner 2015-11-09 16:11 ` New ELPA policy proposal (was: ELPA policy) Eli Zaretskii 1 sibling, 2 replies; 209+ messages in thread From: Artur Malabarba @ 2015-11-09 13:51 UTC (permalink / raw) To: Oleh Krehel; +Cc: emacs-devel 2015-11-09 11:15 GMT+00:00 Oleh Krehel <ohwoeowho@gmail.com>: > 1. Only packages which are relatively independent are allowed to be > moved to ELPA. This is a rule that we adhere to right now, I just wanted > to re-state it. And it's important for the next point. > > 2. Each package is developed it its own Git repository, and is included > into the common ELPA directory as a Git submodule. No actual code is > ever committed into the Emacs git repository, only the commit hashes, > when an ELPA package maintainer deems it appropriate to merge, Two Things: * The first and simplest issue here is that we would lose control over the code on Gelpa. We can still remove any package from Gelpa entirely, of course. But it would be difficult for the Emacs maintainers to edit a package on Gelpa that's doing something wrong. For instance, Stefan has edited several of my packages in the past (which I'm grateful for), and he wouldn't have been able to do that if the source wasn't on elpa.git. But maybe that's just a cost that needs to be paid if we want Gelpa to scale. * Another thing to remember is that we need to be able to trust that code made available by Gelpa has been properly copyright assigned. The current way we do that is to: 1. Only make available code that has been pushed to elpa.git. 2. We trust those with push access to only push code that's been assigned (to the best of their knowledge). 3. We trust that those who submit code are not lying about its origins. IIUC, your proposal is that new releases would be marked by editing a file in the Gelpa repo and adding a hash of the relevant commit. This sounds more or less ok: 2. The manual edit of a hash would still have to be done by people with push access, so only they could ultimately make new code available on Gelpa. 3. The act of a developer asking us to edit a hash could be considered analogous to the act submitting a package (i.e., they are declaring that all the new code in that commit has been properly assigned, just like they originally declared so when first submitting the package). > 3. On Emacs release, we'll have emacs.tar (for people with low > bandwidth) and emacs-with-elpa.tar (the recommended download). I'm perfectly in favor of this. And it's pretty much independent of the points above. Of course, the inner workings of Gelpa affect how the build-script might create this emacs-with-elpa.tar, but they don't affect the feasibility or difficulty of this task. So it's just a matter of someone writting the necessary scripts/documentation for the next release. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: New ELPA policy proposal 2015-11-09 13:51 ` Artur Malabarba @ 2015-11-09 15:02 ` Oleh Krehel 2015-11-09 16:22 ` Artur Malabarba 2015-11-09 15:41 ` Wolfgang Jenkner 1 sibling, 1 reply; 209+ messages in thread From: Oleh Krehel @ 2015-11-09 15:02 UTC (permalink / raw) To: Artur Malabarba; +Cc: emacs-devel Artur Malabarba <bruce.connor.am@gmail.com> writes: > Two Things: > > * The first and simplest issue here is that we would lose control over > the code on Gelpa. > > We can still remove any package from Gelpa entirely, of course. But it > would be difficult for the Emacs maintainers to edit a package on > Gelpa that's doing something wrong. For instance, Stefan has edited > several of my packages in the past (which I'm grateful for), and he > wouldn't have been able to do that if the source wasn't on elpa.git. > > But maybe that's just a cost that needs to be paid if we want Gelpa to scale. This doesn't have to be so. GELPA is a git repository on Savannah. Anyone with proper SSH keys can edit it. What I propose is to split GELPA into 130 git repositories on Savannah (or separate git branches of one repository if that's more convenient). All Emacs devs will still have the same access to every package. But the commit log won't be a mingled mess: each package will have its own commit log and its own version - the latest version tag on the appropriate branch. Then the main ELPA directory will hold the current version hashes for each ELPA package. And the main Emacs repository will hold one ELPA hash snapshot for each Emacs release. > * Another thing to remember is that we need to be able to trust that > code made available by Gelpa has been properly copyright assigned. > > The current way we do that is to: > 1. Only make available code that has been pushed to elpa.git. > 2. We trust those with push access to only push code that's been > assigned (to the best of their knowledge). > 3. We trust that those who submit code are not lying about its origins. > > IIUC, your proposal is that new releases would be marked by editing a > file in the Gelpa repo and adding a hash of the relevant commit. > This sounds more or less ok: > 2. The manual edit of a hash would still have to be done by people > with push access, so only they could ultimately make new code > available on Gelpa. > 3. The act of a developer asking us to edit a hash could be considered > analogous to the act submitting a package (i.e., they are declaring > that all the new code in that commit has been properly assigned, just > like they originally declared so when first submitting the package). I assume the process could have several tiers. tier 1: I edit my package in a Git repository on my machine and accept contributions with CA. tier 2: I sync my Git repository with its Git repository on Savannah (a sub-directory of GELPA) tier 3: The main directory of GELPA should always hold the hashes of all packages, the stable versions that are to be published to https://elpa.gnu.org/packages/. This information will be updated with each new release of any package. tier 4: On release of a new Emacs version, a snapshot of GELPA hashes will be committed into Emacs. All code that corresponds to that snapshot will be bundled with emacs-with-elpa.tar. Currently, tier 3 is done with ";; Version: ..." cookie. I propose that we do it with git tags and hashes instead/additionally. As for tier 4, the package maintainers take the responsibility to ensure that the package hash included into Emacs works correctly around the time when each feature freeze is announced. The above system can solve an inconvenience that I've occasionally run into with the current GELPA setup: the "git subtree merge" doesn't allow me to easily pull anyone's changes done in GELPA back into my package. In fact, at times I haven't noticed a change for a month, committed a bunch on top of the version in GELPA, and then had to do a rebase and resolve merge conflicts. In the end, I'd like to setup a workflow where my package has two identical public fronts: one on Github and one on Savannah. Pushing to one should push to the other one. And if I pull from both, I'll be immediately notified if any other Emacs developer edited my package on Savannah, and I'll just commit on top of these changes. Here's a visual representation of the ELPA directory on Savannah that I propose: |-elpa/ |--.git/ |--ace-window/ |---./git/ |--ack/ |---.git/ ... |--.gitignore |--package-list Everyone that currently has access to ./elpa/ will automatically have access to ./elpa/*. Each sub-directory is its own git repository, and ./.gitignore will ignore everything except ./package-list, and maybe some auxiliary scripts. ./package-list could have the following structure: ace-window: eef897e590c4ce63c28fd29ebff3c97aec8a69ae ack: 1487ae155ccc2a3099b8e0f20334a79fa8f5b9a8 ... In the end, ./package-list could simply be built automatically by a shell command examining each repository for a version tag. But it might be good to have each new version release accompanied by a commit to ./package-list. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: New ELPA policy proposal 2015-11-09 15:02 ` New ELPA policy proposal Oleh Krehel @ 2015-11-09 16:22 ` Artur Malabarba 0 siblings, 0 replies; 209+ messages in thread From: Artur Malabarba @ 2015-11-09 16:22 UTC (permalink / raw) To: Oleh Krehel; +Cc: emacs-devel Ok, I had misunderstood you. I thought you were suggesting we do some automated pulling from arbitrary remote repos. But I see you still want to keep the code in savannah repos, which is indeed more reasonable. However, I have no idea of the logistics involved in setting up several (or several dozen?) savannah repos. So it would be nice if one of the big shots could provide feedback. Oleh Krehel <ohwoeowho@gmail.com> writes: > What I propose is to split GELPA into 130 git repositories on > Savannah. Let's slow down a bit. :-) Plenty of packages require very little maintenance are doing just fine as a part of the repository itself. It would be nothing but a pain to spread all of these small packages into their own repos. Other than that, I'm all on board. Giving packages _the possibility_ of being a savannah repo (which are then added as submodules of elpa.git) sounds right and good for me. And I know that many packages would cherish this possibility. If that turns out to work well, we can maybe make it so that the only way of having "external" packages (dropping the current two methods). So every package will either be directly in elpa.git or a savannah submodule. > All Emacs devs will still have the same access to every package. But > the commit log won't be a mingled mess: each package will have its own > commit log and its own version - the latest version tag on the > appropriate branch. All good. (Again, as long as it's a possibility, not a demand. Most packages barely make a dent on the commit log.) ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: New ELPA policy proposal 2015-11-09 13:51 ` Artur Malabarba 2015-11-09 15:02 ` New ELPA policy proposal Oleh Krehel @ 2015-11-09 15:41 ` Wolfgang Jenkner 2015-11-09 15:50 ` Dmitry Gutov 2015-11-09 16:25 ` Artur Malabarba 1 sibling, 2 replies; 209+ messages in thread From: Wolfgang Jenkner @ 2015-11-09 15:41 UTC (permalink / raw) To: Artur Malabarba; +Cc: Oleh Krehel, emacs-devel On Mon, Nov 09 2015, Artur Malabarba wrote: > * The first and simplest issue here is that we would lose control over > the code on Gelpa. But when is control over elisp code not bundled in the emacs tarball actually needed? I'd say, only in two cases: (1) code that is poised to be bundled in a short- or mid-term perspective. (2) code that is removed from the bundled code, until a separate maintainer is found for it. So, a policy of minimal control would have bundled code in emacs.git (and nowhere else), while elpa would be merely a staging area for it. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: New ELPA policy proposal 2015-11-09 15:41 ` Wolfgang Jenkner @ 2015-11-09 15:50 ` Dmitry Gutov 2015-11-09 16:13 ` Wolfgang Jenkner 2015-11-09 16:25 ` Artur Malabarba 1 sibling, 1 reply; 209+ messages in thread From: Dmitry Gutov @ 2015-11-09 15:50 UTC (permalink / raw) To: Artur Malabarba, Oleh Krehel, emacs-devel On 11/09/2015 05:41 PM, Wolfgang Jenkner wrote: > On Mon, Nov 09 2015, Artur Malabarba wrote: > >> * The first and simplest issue here is that we would lose control over >> the code on Gelpa. > > But when is control over elisp code not bundled in the emacs tarball > actually needed? So far, the code that's been pushed to ELPA, has all been more or less reviewed. AFAIK, when Stefan pushes new versions (if that still happens semi-manually), he can make sure that nothing precarious has sneaked into one of the packages. Since GNU ELPA is the official repository, the Emacs developers have a responsibility over its contents. Not just individual developers. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: New ELPA policy proposal 2015-11-09 15:50 ` Dmitry Gutov @ 2015-11-09 16:13 ` Wolfgang Jenkner 2015-11-09 21:50 ` Richard Stallman 0 siblings, 1 reply; 209+ messages in thread From: Wolfgang Jenkner @ 2015-11-09 16:13 UTC (permalink / raw) To: Dmitry Gutov; +Cc: Oleh Krehel, Artur Malabarba, emacs-devel On Mon, Nov 09 2015, Dmitry Gutov wrote: > Since GNU ELPA is the official repository, the Emacs developers have > a responsibility over its contents. Not just individual developers. Sure, but how does this contradict what I said? I suggested a `policy of minimal control' where elpa remains an official repository, but with transient content. I'm aware that this is different from elpa's current purpose. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: New ELPA policy proposal 2015-11-09 16:13 ` Wolfgang Jenkner @ 2015-11-09 21:50 ` Richard Stallman 0 siblings, 0 replies; 209+ messages in thread From: Richard Stallman @ 2015-11-09 21:50 UTC (permalink / raw) To: Wolfgang Jenkner; +Cc: emacs-devel, ohwoeowho, bruce.connor.am, dgutov [[[ 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. ]]] We must make sure that the principal Emacs developers can edit the code in GELPA. > I shipped to Paris 1 baby GNU and 200 stickers of each type. Thanks for telling me. That means I can take a smaller quantity with me from here. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: New ELPA policy proposal 2015-11-09 15:41 ` Wolfgang Jenkner 2015-11-09 15:50 ` Dmitry Gutov @ 2015-11-09 16:25 ` Artur Malabarba 1 sibling, 0 replies; 209+ messages in thread From: Artur Malabarba @ 2015-11-09 16:25 UTC (permalink / raw) To: Oleh Krehel; +Cc: emacs-devel Wolfgang Jenkner <wjenkner@inode.at> writes: > So, a policy of minimal control would have bundled code in emacs.git > (and nowhere else), while elpa would be merely a staging area for it. I'm not sure if I understand you correctly. But Gelpa code will always be available online, regardless of whether we bundle it into Emacs releases or not. So Gelpa is not a staging area, and the code that goes into it does need to be under our control. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: New ELPA policy proposal (was: ELPA policy) 2015-11-09 11:15 ` New ELPA policy proposal (was: ELPA policy) Oleh Krehel 2015-11-09 13:51 ` Artur Malabarba @ 2015-11-09 16:11 ` Eli Zaretskii 2015-11-10 7:26 ` New ELPA policy proposal Oleh Krehel 1 sibling, 1 reply; 209+ messages in thread From: Eli Zaretskii @ 2015-11-09 16:11 UTC (permalink / raw) To: Oleh Krehel; +Cc: emacs-devel > From: Oleh Krehel <ohwoeowho@gmail.com> > Date: Mon, 09 Nov 2015 12:15:29 +0100 > > 3. On Emacs release, we'll have emacs.tar (for people with low > bandwidth) and emacs-with-elpa.tar (the recommended download). The user > will have several options to configure the Emacs installation: > > a. Only core Emacs. > > b. Core Emacs with a separate offline ELPA repository. The user will > be able to install from this offline ELPA repository at any time. > This should be a nice default option, I think. > > c. Emacs with all ELPA packages installed, because why not? Why not have only one distribution, the full one? ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: New ELPA policy proposal 2015-11-09 16:11 ` New ELPA policy proposal (was: ELPA policy) Eli Zaretskii @ 2015-11-10 7:26 ` Oleh Krehel 2015-11-10 14:24 ` John Wiegley 0 siblings, 1 reply; 209+ messages in thread From: Oleh Krehel @ 2015-11-10 7:26 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: Oleh Krehel <ohwoeowho@gmail.com> >> Date: Mon, 09 Nov 2015 12:15:29 +0100 >> >> 3. On Emacs release, we'll have emacs.tar (for people with low >> bandwidth) and emacs-with-elpa.tar (the recommended download). The user >> will have several options to configure the Emacs installation: >> >> a. Only core Emacs. >> >> b. Core Emacs with a separate offline ELPA repository. The user will >> be able to install from this offline ELPA repository at any time. >> This should be a nice default option, I think. >> >> c. Emacs with all ELPA packages installed, because why not? > > Why not have only one distribution, the full one? If fine with it, if that's what we agree upon. Some people might still care about bandwidth. I don't. But we do offer emacs-24.5.tar.gz and emacs-24.5.tar.xz variants currently, I assume it's for the purposes of bandwidth. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: New ELPA policy proposal 2015-11-10 7:26 ` New ELPA policy proposal Oleh Krehel @ 2015-11-10 14:24 ` John Wiegley 2015-11-10 16:36 ` Eli Zaretskii 0 siblings, 1 reply; 209+ messages in thread From: John Wiegley @ 2015-11-10 14:24 UTC (permalink / raw) To: Oleh Krehel; +Cc: Eli Zaretskii, emacs-devel >>>>> Oleh Krehel <ohwoeowho@gmail.com> writes: >> Why not have only one distribution, the full one? > If fine with it, if that's what we agree upon. Some people might still care > about bandwidth. I don't. But we do offer emacs-24.5.tar.gz and > emacs-24.5.tar.xz variants currently, I assume it's for the purposes of > bandwidth. I'd be fine with just one "full distribution" too, unless there are other strong objections. It ought to be a difference of tens of megabytes at most. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: New ELPA policy proposal 2015-11-10 14:24 ` John Wiegley @ 2015-11-10 16:36 ` Eli Zaretskii 0 siblings, 0 replies; 209+ messages in thread From: Eli Zaretskii @ 2015-11-10 16:36 UTC (permalink / raw) To: John Wiegley; +Cc: ohwoeowho, emacs-devel > From: John Wiegley <jwiegley@gmail.com> > Cc: Eli Zaretskii <eliz@gnu.org>, emacs-devel@gnu.org > Date: Tue, 10 Nov 2015 06:24:15 -0800 > > >>>>> Oleh Krehel <ohwoeowho@gmail.com> writes: > > >> Why not have only one distribution, the full one? > > > If fine with it, if that's what we agree upon. Some people might still care > > about bandwidth. I don't. But we do offer emacs-24.5.tar.gz and > > emacs-24.5.tar.xz variants currently, I assume it's for the purposes of > > bandwidth. > > I'd be fine with just one "full distribution" too, unless there are other > strong objections. It ought to be a difference of tens of megabytes at most. emacs-24.5.tar.xz is 38MB. IMO, that's not "large" by any measure nowadays. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 3:51 ` Dmitry Gutov 2015-11-09 11:15 ` New ELPA policy proposal (was: ELPA policy) Oleh Krehel @ 2015-11-09 16:05 ` Eli Zaretskii 2015-11-09 16:15 ` Dmitry Gutov 1 sibling, 1 reply; 209+ messages in thread From: Eli Zaretskii @ 2015-11-09 16:05 UTC (permalink / raw) To: Dmitry Gutov; +Cc: aaronecay, Stromeko, emacs-devel > Cc: Stromeko@nexgo.de, emacs-devel@gnu.org > From: Dmitry Gutov <dgutov@yandex.ru> > Date: Mon, 9 Nov 2015 05:51:16 +0200 > > On 11/09/2015 05:42 AM, Eli Zaretskii wrote: > > >> Imagine someone implements an awesome new feature for dired. Emacs > >> users the world over are amazed by this, and fill their blogs, twitter, > >> etc. with the news. If dired is an ELPA package, everyone who hears > >> this news can get the new feature in their emacs instantly by upgrading > >> their ELPA packages. No need to wait N months for a new release of > >> emacs, or compile a non-release version of emacs from git. > > > > How is this different when Dired is in the Emacs repository? The > > Emacs repository is a public one, so anyone and everyone can get the > > latest version from there and use it, if they want. > > a) That's a more involved endeavor than installing a package from ELPA. > And then you don't get the same conveniences, such as automatic updates. Nothing prevents us from making the same arrangements in the Emacs repository as we have in ELPA, and then users could add the Emacs repository to their list of sites that package.el knows about. Besides, most core packages don't need any elaborate setup, you just drop them in and restart Emacs. > b) There's a much higher probability that Dired depends on something > only the current development version of Emacs has. ELPA packages declare > their version requirements explicitly, and try not to break > compatibility with earlier versions without sufficient reasons. How will that change if we move them outside Emacs? It's not like there's some magic at ELPA that just putting a package there magically resolves all these issues. And if someone will have to work on that, she can do that without moving the package aside. > > The suggestion was to move _all_ of them, except the few that are > > needed for bootstrap, out of the Emacs repository. Most of the > > packages in that category are neither like Org nor like kermit. They > > are relatively small, but get quite a significant number of changes. > > There were different suggestions, with different degrees between "let's > move Org and Gnus out" and "let's move everything out". I didn't see any. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 16:05 ` ELPA policy Eli Zaretskii @ 2015-11-09 16:15 ` Dmitry Gutov 2015-11-09 16:20 ` Eli Zaretskii 0 siblings, 1 reply; 209+ messages in thread From: Dmitry Gutov @ 2015-11-09 16:15 UTC (permalink / raw) To: Eli Zaretskii; +Cc: aaronecay, Stromeko, emacs-devel On 11/09/2015 06:05 PM, Eli Zaretskii wrote: > Nothing prevents us from making the same arrangements in the Emacs > repository as we have in ELPA, and then users could add the Emacs > repository to their list of sites that package.el knows about. Create yet another package archive? With a separate publishing mechanism? > Besides, most core packages don't need any elaborate setup, you just > drop them in and restart Emacs. "Just drop them in" doesn't address the issue of package updates, not in the slightest. > How will that change if we move them outside Emacs? It's not like > there's some magic at ELPA that just putting a package there magically > resolves all these issues. And if someone will have to work on that, > she can do that without moving the package aside. They will be forced to declare the required Emacs version, for one. And abide by it. But yes, that's also possible to do inside the Emacs repo. >> There were different suggestions, with different degrees between "let's >> move Org and Gnus out" and "let's move everything out". > > I didn't see any. All right, then. Let me make one right now: let's move out Org, Gnus and CEDET. And consider doing that with any other big codebase that's also maintained separately (Calc comes to mind). There have been objections to doing that for each of these packages, but there you go. Suggestion made. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 16:15 ` Dmitry Gutov @ 2015-11-09 16:20 ` Eli Zaretskii 2015-11-09 16:26 ` Dmitry Gutov ` (2 more replies) 0 siblings, 3 replies; 209+ messages in thread From: Eli Zaretskii @ 2015-11-09 16:20 UTC (permalink / raw) To: Dmitry Gutov; +Cc: aaronecay, Stromeko, emacs-devel > Cc: aaronecay@gmail.com, Stromeko@nexgo.de, emacs-devel@gnu.org > From: Dmitry Gutov <dgutov@yandex.ru> > Date: Mon, 9 Nov 2015 18:15:28 +0200 > > On 11/09/2015 06:05 PM, Eli Zaretskii wrote: > > > Nothing prevents us from making the same arrangements in the Emacs > > repository as we have in ELPA, and then users could add the Emacs > > repository to their list of sites that package.el knows about. > > Create yet another package archive? With a separate publishing mechanism? Why not? There are several already, no? > > Besides, most core packages don't need any elaborate setup, you just > > drop them in and restart Emacs. > > "Just drop them in" doesn't address the issue of package updates, not in > the slightest. It does, for most of the core. That's what you do each time you say "git pull", I believe. > >> There were different suggestions, with different degrees between "let's > >> move Org and Gnus out" and "let's move everything out". > > > > I didn't see any. > > All right, then. Let me make one right now: let's move out Org, Gnus and > CEDET. And consider doing that with any other big codebase that's also > maintained separately (Calc comes to mind). > > There have been objections to doing that for each of these packages, but > there you go. Suggestion made. It was made before -- that's the "let's move Org and Gnus out" variant, to which I said I could easily agree. And then there was the "move everything" one, to which I object for the reasons stated. What I meant was that there was no 3rd variant, AFAIR. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 16:20 ` Eli Zaretskii @ 2015-11-09 16:26 ` Dmitry Gutov 2015-11-09 16:44 ` Eli Zaretskii 2015-11-09 16:35 ` Artur Malabarba 2015-11-09 19:52 ` John Wiegley 2 siblings, 1 reply; 209+ messages in thread From: Dmitry Gutov @ 2015-11-09 16:26 UTC (permalink / raw) To: Eli Zaretskii; +Cc: aaronecay, Stromeko, emacs-devel On 11/09/2015 06:20 PM, Eli Zaretskii wrote: >> Create yet another package archive? With a separate publishing mechanism? > > Why not? There are several already, no? So far, it seems we're short of manpower to manage even the current one. To manage the infrastructure, improve the scripts, etc. > It does, for most of the core. That's what you do each time you say > "git pull", I believe. I cannot "git pull" a new version of Dired into my stable installation of Emacs 24.5. > It was made before -- that's the "let's move Org and Gnus out" > variant, to which I said I could easily agree. And then there was the > "move everything" one, to which I object for the reasons stated. What > I meant was that there was no 3rd variant, AFAIR. Well, I enumerated 4 packages instead of 2, didn't I? :) I agree that "move everything" is a non-starter (or very hard, at least). So it seems more like a red herring, there's no real use arguing against it. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 16:26 ` Dmitry Gutov @ 2015-11-09 16:44 ` Eli Zaretskii 2015-11-09 17:46 ` Dmitry Gutov 0 siblings, 1 reply; 209+ messages in thread From: Eli Zaretskii @ 2015-11-09 16:44 UTC (permalink / raw) To: Dmitry Gutov; +Cc: aaronecay, Stromeko, emacs-devel > Cc: aaronecay@gmail.com, Stromeko@nexgo.de, emacs-devel@gnu.org > From: Dmitry Gutov <dgutov@yandex.ru> > Date: Mon, 9 Nov 2015 18:26:58 +0200 > > On 11/09/2015 06:20 PM, Eli Zaretskii wrote: > > >> Create yet another package archive? With a separate publishing mechanism? > > > > Why not? There are several already, no? > > So far, it seems we're short of manpower to manage even the current one. > To manage the infrastructure, improve the scripts, etc. Is it really such a significant effort? I wasn't aware of that. > > It does, for most of the core. That's what you do each time you say > > "git pull", I believe. > > I cannot "git pull" a new version of Dired into my stable installation > of Emacs 24.5. Of course you can: just copy the file over. > > It was made before -- that's the "let's move Org and Gnus out" > > variant, to which I said I could easily agree. And then there was the > > "move everything" one, to which I object for the reasons stated. What > > I meant was that there was no 3rd variant, AFAIR. > > Well, I enumerated 4 packages instead of 2, didn't I? :) We could probably find a few more. MH-E, for example. (Of course, their developers will have to agree to move.) > I agree that "move everything" is a non-starter (or very hard, at > least). So it seems more like a red herring, there's no real use arguing > against it. Agreed. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 16:44 ` Eli Zaretskii @ 2015-11-09 17:46 ` Dmitry Gutov 0 siblings, 0 replies; 209+ messages in thread From: Dmitry Gutov @ 2015-11-09 17:46 UTC (permalink / raw) To: Eli Zaretskii; +Cc: aaronecay, Stromeko, emacs-devel On 11/09/2015 06:44 PM, Eli Zaretskii wrote: >> So far, it seems we're short of manpower to manage even the current one. >> To manage the infrastructure, improve the scripts, etc. > > Is it really such a significant effort? I wasn't aware of that. There are things to be done, and just a couple months ago nobody was doing them. I see some movement now, e.g. the last commit by Thomas Fitzsimmons. >> I cannot "git pull" a new version of Dired into my stable installation >> of Emacs 24.5. > > Of course you can: just copy the file over. Automatic update is a really handy feature when you have 50+ packages installed. See some user statistics at https://www.reddit.com/r/emacs/comments/3s4k03/how_many_packages_do_you_use/ > We could probably find a few more. MH-E, for example. (Of course, > their developers will have to agree to move.) Yeah, I bet the majority of our users are unaware of what MH-E is. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 16:20 ` Eli Zaretskii 2015-11-09 16:26 ` Dmitry Gutov @ 2015-11-09 16:35 ` Artur Malabarba 2015-11-09 19:52 ` John Wiegley 2 siblings, 0 replies; 209+ messages in thread From: Artur Malabarba @ 2015-11-09 16:35 UTC (permalink / raw) To: Eli Zaretskii; +Cc: aaronecay, Stromeko, emacs-devel, Dmitry Gutov Eli Zaretskii <eliz@gnu.org> writes: >> > Nothing prevents us from making the same arrangements in the Emacs >> > repository as we have in ELPA, and then users could add the Emacs >> > repository to their list of sites that package.el knows about. >> >> Create yet another package archive? With a separate publishing mechanism? > > Why not? There are several already, no? This sounds already quite similar to the system that Fabian implemented a couple months ago (which I hear isn't quite perfect yet, but should be almost there). With this system, the daily script that Gelpa runs would copy some packages straight from Emacs core. This way you could very well configure Gelpa to always offer the lastest Dired (or maybe only when we bump a version number, but that's a detail). ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 16:20 ` Eli Zaretskii 2015-11-09 16:26 ` Dmitry Gutov 2015-11-09 16:35 ` Artur Malabarba @ 2015-11-09 19:52 ` John Wiegley 2015-11-09 20:17 ` Achim Gratz ` (4 more replies) 2 siblings, 5 replies; 209+ messages in thread From: John Wiegley @ 2015-11-09 19:52 UTC (permalink / raw) To: Eli Zaretskii; +Cc: aaronecay, Stromeko, emacs-devel, Dmitry Gutov >>>>> Eli Zaretskii <eliz@gnu.org> writes: > It was made before -- that's the "let's move Org and Gnus out" variant, to > which I said I could easily agree. And then there was the "move everything" > one, to which I object for the reasons stated. What I meant was that there > was no 3rd variant, AFAIR. Wow, a lot of discussion about ELPA policy, this is great. We definitely have an opportunity here to bring clarity to an area that is on people's minds. I agree with a lot of what I read, although it was a too spread out for me to add specific quotes here. Let me just summarize a possible path forward: 1. Things that are maintained by the core Emacs developers should be in core, and in the Emacs.git repository. This makes it easy for them to access and build, search history, read emacs-diffs, etc. 2. Things that are maintained outside of Emacs, but contributed back for inclusion, should be in ELPA, and in the Elpa.git repository. This includes Gnus, Org, CEDET, and a few more. (We don't want to go crazy, so let's start with the big ones). 3. There should be a defined subset of packages that get copied from ELPA into the Emacs tarball during release, and an easy way to manage this list for the core developers. That way, certain packages like seq.el and stream.el can feel like "core" packages to users, when they are really "external" packages from the point of view of the core developers. 4. Everything else in ELPA is Internet-installation based, as it is today. I would very much like for ELPA to be a way to: - give the core developers a smaller surface area to focus on; - allow ELPA package maintainers to "have their package in Emacs", while retaining nimble in their own development process and in delivering updates to users; - allow the core maintainers to decide what exactly is going into "Emacs": For example, I wouldn't want to pull Org releases into the distribution from a submodule; I really do want a version of that source code to be in ELPA, so we can separately patch if there are last minute problems. ELPA should thus benefit core developers by reducing load, and benefit package maintainers by being an easier platform for their contributions and their users. If it causes extra work for anyone, that's something I'd want to change. There are three actions I'd like to take from here: a. That we clearly document an ELPA policy we all agree on; b. That we move "external" packages from core into ELPA, starting with the really big ones; c. That we assess any points of friction after doing so, and adjust as necessary. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 19:52 ` John Wiegley @ 2015-11-09 20:17 ` Achim Gratz 2015-11-09 21:38 ` John Wiegley 2015-11-09 21:51 ` Richard Stallman ` (3 subsequent siblings) 4 siblings, 1 reply; 209+ messages in thread From: Achim Gratz @ 2015-11-09 20:17 UTC (permalink / raw) To: emacs-devel John Wiegley writes: > 3. There should be a defined subset of packages that get copied from ELPA > into the Emacs tarball during release, and an easy way to manage this list > for the core developers. That way, certain packages like seq.el and > stream.el can feel like "core" packages to users, when they are really > "external" packages from the point of view of the core developers. They could (and probably should) effectively be in the build environment as well. In other words, I would try to not pull them into the release tarball at the last possible moment. One thing that would make difficult is to test interactions between such "external core" packages and here I have to agree with Eli that this has potential for degradation of quality. > - allow the core maintainers to decide what exactly is going into "Emacs": > For example, I wouldn't want to pull Org releases into the distribution > from a submodule; I really do want a version of that source code to be in > ELPA, so we can separately patch if there are last minute problems. You'd do that with branches if it really becomes necessary. I don't really see why submodules could not be used, except for the extra rope they give you to hang yourself with. Any other solution is going to have the same basic complexity beneath and the potential to not work on some platform or other. > ELPA should thus benefit core developers by reducing load, and benefit package > maintainers by being an easier platform for their contributions and their > users. If it causes extra work for anyone, that's something I'd want to > change. I maintain that ELPA should benefit Emacs users first. > b. That we move "external" packages from core into ELPA, starting with the > really big ones; ...after the necessary changes to Emacs' build system and package.el are architected and implemented. Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ SD adaptations for KORG EX-800 and Poly-800MkII V0.9: http://Synth.Stromeko.net/Downloads.html#KorgSDada ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 20:17 ` Achim Gratz @ 2015-11-09 21:38 ` John Wiegley 2015-11-10 20:07 ` Achim Gratz 0 siblings, 1 reply; 209+ messages in thread From: John Wiegley @ 2015-11-09 21:38 UTC (permalink / raw) To: Achim Gratz; +Cc: emacs-devel >>>>> Achim Gratz <Stromeko@nexgo.de> writes: > They could (and probably should) effectively be in the build environment as > well. In other words, I would try to not pull them into the release tarball > at the last possible moment. One thing that would make difficult is to test > interactions between such "external core" packages and here I have to agree > with Eli that this has potential for degradation of quality. Could this be solved by branching ELPA leading up to a release -- this being the "frozen ELPA" that we do integration against before cutting the tarball -- while cherry-picking fixes in from master? I think the way we proceed here would be similar to what we do for Emacs itself. > You'd do that with branches if it really becomes necessary. I don't really > see why submodules could not be used, except for the extra rope they give > you to hang yourself with. Any other solution is going to have the same > basic complexity beneath and the potential to not work on some platform or > other. A submodule doesn't allow us to have "Org + some-patch-not-yet-in-Org". > I maintain that ELPA should benefit Emacs users first. I'm intrigued; could you clarify this a bit more? I saw what you wrote in response to Eli, but that didn't really help. Specifically, do you have a scenario in mind that is better for users and worse for developers? >> b. That we move "external" packages from core into ELPA, starting with the >> really big ones; > ...after the necessary changes to Emacs' build system and package.el are > architected and implemented. Agreed. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 21:38 ` John Wiegley @ 2015-11-10 20:07 ` Achim Gratz 0 siblings, 0 replies; 209+ messages in thread From: Achim Gratz @ 2015-11-10 20:07 UTC (permalink / raw) To: emacs-devel John Wiegley writes: >> You'd do that with branches if it really becomes necessary. I don't really >> see why submodules could not be used, except for the extra rope they give >> you to hang yourself with. Any other solution is going to have the same >> basic complexity beneath and the potential to not work on some platform or >> other. > > A submodule doesn't allow us to have "Org + some-patch-not-yet-in-Org". You'd branch on ELPA to something like emacs-25.0.50, patch away and point the submodule there if you really can't wait for the patch to be committed in Org upstream and mirrored back to ELPA. >> I maintain that ELPA should benefit Emacs users first. > > I'm intrigued; could you clarify this a bit more? I saw what you wrote in > response to Eli, but that didn't really help. Specifically, do you have a > scenario in mind that is better for users and worse for developers? It was a long day and I'm afraid I'd not be too coherent, so I'll punt for now. But in short, look at CPAN, CRAN and CTAN for NIH examples of what ELPA might possibly become. Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ Wavetables for the Terratec KOMPLEXER: http://Synth.Stromeko.net/Downloads.html#KomplexerWaves ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 19:52 ` John Wiegley 2015-11-09 20:17 ` Achim Gratz @ 2015-11-09 21:51 ` Richard Stallman 2015-11-09 22:06 ` John Wiegley 2015-11-09 23:44 ` Nicolas Petton 2015-11-09 23:42 ` Nicolas Petton ` (2 subsequent siblings) 4 siblings, 2 replies; 209+ messages in thread From: Richard Stallman @ 2015-11-09 21:51 UTC (permalink / raw) To: John Wiegley; +Cc: aaronecay, eliz, Stromeko, emacs-devel, dgutov [[[ 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. ]]] > I agree with a lot of what I read, although it was a too spread out for me to > add specific quotes here. Let me just summarize a possible path forward: This plan seems good, overall, But in the specific case of stream.el and seq.el, shouldn't they be maintained in the core? I don't see stream.el in the sources I fetched, but seq.el is small, in emacs-lisp, and it says Maintainer: emacs-devel. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 21:51 ` Richard Stallman @ 2015-11-09 22:06 ` John Wiegley 2015-11-09 23:05 ` Artur Malabarba 2015-11-09 23:47 ` Nicolas Petton 2015-11-09 23:44 ` Nicolas Petton 1 sibling, 2 replies; 209+ messages in thread From: John Wiegley @ 2015-11-09 22:06 UTC (permalink / raw) To: Richard Stallman; +Cc: aaronecay, eliz, Stromeko, emacs-devel, dgutov >>>>> Richard Stallman <rms@gnu.org> writes: > This plan seems good, overall, But in the specific case of stream.el and > seq.el, shouldn't they be maintained in the core? I don't see stream.el in > the sources I fetched, but seq.el is small, in emacs-lisp, and it says > Maintainer: emacs-devel. If that's the case, then yes, it should be in core. I'm personally a bit surprised that a library of this nature is in ELPA, unless it was being provided and actively maintained by a non-core developer. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 22:06 ` John Wiegley @ 2015-11-09 23:05 ` Artur Malabarba 2015-11-10 18:18 ` Richard Stallman 2015-11-09 23:47 ` Nicolas Petton 1 sibling, 1 reply; 209+ messages in thread From: Artur Malabarba @ 2015-11-09 23:05 UTC (permalink / raw) To: Aaron Ecay, emacs-devel, Richard Stallman, eliz, dgutov, Stromeko [-- Attachment #1: Type: text/plain, Size: 748 bytes --] On 9 Nov 2015 10:06 pm, "John Wiegley" <jwiegley@gmail.com> wrote: > > >>>>> Richard Stallman <rms@gnu.org> writes: > > > This plan seems good, overall, But in the specific case of stream.el and > > seq.el, shouldn't they be maintained in the core? I don't see stream.el in > > the sources I fetched, but seq.el is small, in emacs-lisp, and it says > > Maintainer: emacs-devel. > > If that's the case, then yes, it should be in core. I'm personally a bit > surprised that a library of this nature is in ELPA, unless it was being > provided and actively maintained by a non-core developer. Seq.el was put on Gelpa so that it can be used by emacsen < 25. I'm very grateful for that as I use it as a dependency in quite a few of my packages already. [-- Attachment #2: Type: text/html, Size: 1009 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 23:05 ` Artur Malabarba @ 2015-11-10 18:18 ` Richard Stallman 2015-11-11 15:11 ` Nicolas Petton 0 siblings, 1 reply; 209+ messages in thread From: Richard Stallman @ 2015-11-10 18:18 UTC (permalink / raw) To: bruce.connor.am; +Cc: aaronecay, eliz, dgutov, Stromeko, 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. ]]] > Seq.el was put on Gelpa so that it can be used by emacsen < 25. It is fine to have it there, but this suggests we should maintain it inside Emacs. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:18 ` Richard Stallman @ 2015-11-11 15:11 ` Nicolas Petton 2015-11-11 17:03 ` Richard Stallman 0 siblings, 1 reply; 209+ messages in thread From: Nicolas Petton @ 2015-11-11 15:11 UTC (permalink / raw) To: rms, bruce.connor.am; +Cc: aaronecay, eliz, Stromeko, emacs-devel, dgutov [-- Attachment #1: Type: text/plain, Size: 419 bytes --] Richard Stallman <rms@gnu.org> writes: > It is fine to have it there, but this suggests we should maintain > it inside Emacs. I'm not sure I understand what you mean Richard. seq.el is maintained inside Emacs (in lisp/emacs-lisp/seq.el and test/automated/seq-tests.el). The version published in ELPA is there for backward-compatibility, and does not have all the features (some features do require Emacs 25). Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-11 15:11 ` Nicolas Petton @ 2015-11-11 17:03 ` Richard Stallman 0 siblings, 0 replies; 209+ messages in thread From: Richard Stallman @ 2015-11-11 17:03 UTC (permalink / raw) To: Nicolas Petton Cc: aaronecay, bruce.connor.am, emacs-devel, Stromeko, dgutov, eliz [[[ 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. ]]] > > It is fine to have it there, but this suggests we should maintain > > it inside Emacs. > I'm not sure I understand what you mean Richard. I mean that we should maintain the file inside Emacs, not inside ELPA. > seq.el is maintained > inside Emacs (in lisp/emacs-lisp/seq.el and > test/automated/seq-tests.el). That means people are already doing what I think we should do. I didn't have this information when I wrote my previous message. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 22:06 ` John Wiegley 2015-11-09 23:05 ` Artur Malabarba @ 2015-11-09 23:47 ` Nicolas Petton 1 sibling, 0 replies; 209+ messages in thread From: Nicolas Petton @ 2015-11-09 23:47 UTC (permalink / raw) To: John Wiegley, Richard Stallman Cc: aaronecay, eliz, Stromeko, dgutov, emacs-devel [-- Attachment #1: Type: text/plain, Size: 538 bytes --] John Wiegley <jwiegley@gmail.com> writes: > If that's the case, then yes, it should be in core. I'm personally a bit > surprised that a library of this nature is in ELPA, In the case of seq.el, it's for backward-compatibility. It made it possible for instance for CIDER devs to start using it while Emacs 25 is still in progress. > unless it was being > provided and actively maintained by a non-core developer. IIRC, Stefan thought that having stream.el in the ELPA meant more sense at least until people start using it more. Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 21:51 ` Richard Stallman 2015-11-09 22:06 ` John Wiegley @ 2015-11-09 23:44 ` Nicolas Petton 1 sibling, 0 replies; 209+ messages in thread From: Nicolas Petton @ 2015-11-09 23:44 UTC (permalink / raw) To: rms, John Wiegley; +Cc: aaronecay, eliz, Stromeko, dgutov, emacs-devel [-- Attachment #1: Type: text/plain, Size: 424 bytes --] Richard Stallman <rms@gnu.org> writes: > This plan seems good, overall, But in the specific case of stream.el > and seq.el, shouldn't they be maintained in the core? I don't see > stream.el in the sources I fetched, but seq.el is small, in emacs-lisp, > and it says Maintainer: emacs-devel. stream.el is currently in ELPA, which can make some sense, but regarding seq.el, I think it should really stay in the core. Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 19:52 ` John Wiegley 2015-11-09 20:17 ` Achim Gratz 2015-11-09 21:51 ` Richard Stallman @ 2015-11-09 23:42 ` Nicolas Petton 2015-11-09 23:52 ` Aaron Ecay 2015-11-10 18:06 ` Stephen Leake 4 siblings, 0 replies; 209+ messages in thread From: Nicolas Petton @ 2015-11-09 23:42 UTC (permalink / raw) To: John Wiegley, Eli Zaretskii Cc: aaronecay, Stromeko, Dmitry Gutov, emacs-devel [-- Attachment #1: Type: text/plain, Size: 1047 bytes --] John Wiegley <jwiegley@gmail.com> writes: > 3. There should be a defined subset of packages that get copied from ELPA > into the Emacs tarball during release, and an easy way to manage this list > for the core developers. That way, certain packages like seq.el and > stream.el can feel like "core" packages to users, when they are really > "external" packages from the point of view of the core developers. I only added seq.el to ELPA for backward compatibility with Emacs 24.5. The development of seq.el (and map.el for that matter) happen only in Emacs trunk. Moving it out of lisp/emacs-lisp/, and only having it copied in the release tarballs would be a step backward IMHO, it would make it hard to use it in core packages, and would basically mean demoting the libraries to external ones while I'm really working on seq.el to provide a good, consistent and comprehensive *built-in* sequence library to Emacs-Lisp. That's also why all the functions are documented in the Sequences chapter of the Elisp documentation. Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 19:52 ` John Wiegley ` (2 preceding siblings ...) 2015-11-09 23:42 ` Nicolas Petton @ 2015-11-09 23:52 ` Aaron Ecay 2015-11-10 0:04 ` John Wiegley 2015-11-10 18:06 ` Stephen Leake 4 siblings, 1 reply; 209+ messages in thread From: Aaron Ecay @ 2015-11-09 23:52 UTC (permalink / raw) To: John Wiegley, emacs-devel Hi John, Thanks for setting this out very concretely. 2015ko azaroak 9an, John Wiegley-ek idatzi zuen: > >>>>>> Eli Zaretskii <eliz@gnu.org> writes: > >> It was made before -- that's the "let's move Org and Gnus out" variant, to >> which I said I could easily agree. And then there was the "move everything" >> one, to which I object for the reasons stated. What I meant was that there >> was no 3rd variant, AFAIR. > > Wow, a lot of discussion about ELPA policy, this is great. We definitely have > an opportunity here to bring clarity to an area that is on people's minds. > > I agree with a lot of what I read, although it was a too spread out for me to > add specific quotes here. Let me just summarize a possible path forward: > > 1. Things that are maintained by the core Emacs developers should be in core, > and in the Emacs.git repository. This makes it easy for them to access and > build, search history, read emacs-diffs, etc. > > 2. Things that are maintained outside of Emacs, but contributed back for > inclusion, should be in ELPA, and in the Elpa.git repository. This > includes Gnus, Org, CEDET, and a few more. (We don't want to go crazy, > so let's start with the big ones). > > 3. There should be a defined subset of packages that get copied from ELPA > into the Emacs tarball during release, and an easy way to manage this list > for the core developers. That way, certain packages like seq.el and > stream.el can feel like "core" packages to users, when they are really > "external" packages from the point of view of the core developers. > > 4. Everything else in ELPA is Internet-installation based, as it is > today. The one thing that I see missing from this list is a way to take packages that are developed in emacs.git and distribute them on an ELPA. (Either GNU ELPA, or a (g)new ELPA as was suggested by Eli.) This would be the inverse of your 3: packages that feel like core packages to emacs devs, but feel like external packages to users (at least in the sense of receiving updates outside of the emacs release cycle). I’m not sure if that omission was intentional or not. I hope it wasn’t: this model of distribution has been chosen for several important “low-level” packages, like seq, cl-lib, and let-alist. If this addition is desired then: [...] > > There are three actions I'd like to take from here: > > a. That we clearly document an ELPA policy we all agree on; > > b. That we move "external" packages from core into ELPA, starting with the > really big ones; > > c. That we assess any points of friction after doing so, and adjust as > necessary. This list needs an additional item, namely the development of the script that publishes elisp from emacs.git to an ELPA. I think people have said that Fabian is already working on this. Thanks, -- Aaron Ecay ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 23:52 ` Aaron Ecay @ 2015-11-10 0:04 ` John Wiegley 0 siblings, 0 replies; 209+ messages in thread From: John Wiegley @ 2015-11-10 0:04 UTC (permalink / raw) To: Aaron Ecay; +Cc: emacs-devel >>>>> Aaron Ecay <aaronecay@gmail.com> writes: > I’m not sure if that omission was intentional or not. I hope it wasn’t: this > model of distribution has been chosen for several important “low-level” > packages, like seq, cl-lib, and let-alist. [...] > This list needs an additional item, namely the development of the script > that publishes elisp from emacs.git to an ELPA. I think people have said > that Fabian is already working on this. It was an unintentional omission, and I agree that we should support that usage pattern as well. So let it be 4 modes of looking at "Emacs packages", then. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 19:52 ` John Wiegley ` (3 preceding siblings ...) 2015-11-09 23:52 ` Aaron Ecay @ 2015-11-10 18:06 ` Stephen Leake [not found] ` <"<87lha5snji.fsf"@isaac.fritz.box> 2015-11-10 18:28 ` John Wiegley 4 siblings, 2 replies; 209+ messages in thread From: Stephen Leake @ 2015-11-10 18:06 UTC (permalink / raw) To: Eli Zaretskii; +Cc: aaronecay, Stromeko, emacs-devel, Dmitry Gutov John Wiegley <jwiegley@gmail.com> writes: >>>>>> Eli Zaretskii <eliz@gnu.org> writes: > >> It was made before -- that's the "let's move Org and Gnus out" variant, to >> which I said I could easily agree. And then there was the "move everything" >> one, to which I object for the reasons stated. What I meant was that there >> was no 3rd variant, AFAIR. > > Wow, a lot of discussion about ELPA policy, this is great. We definitely have > an opportunity here to bring clarity to an area that is on people's minds. > > I agree with a lot of what I read, although it was a too spread out for me to > add specific quotes here. Let me just summarize a possible path forward: > > 1. Things that are maintained by the core Emacs developers should be in core, > and in the Emacs.git repository. This makes it easy for them to access and > build, search history, read emacs-diffs, etc. > > 2. Things that are maintained outside of Emacs, but contributed back for > inclusion, should be in ELPA, and in the Elpa.git repository. This > includes Gnus, Org, CEDET, and a few more. (We don't want to go crazy, > so let's start with the big ones). > > 3. There should be a defined subset of packages that get copied from ELPA > into the Emacs tarball during release, and an easy way to manage this list > for the core developers. That way, certain packages like seq.el and > stream.el can feel like "core" packages to users, when they are really > "external" packages from the point of view of the core developers. ELPA packages that other core code depends on (like CEDET; xref uses it - called "core ELPA packages" hereinafter) have to be in every developer's build environment everyday; the other core code has to see the current version of the package, and it has to be the same for every developer. If core ELPA packages are in the ELPA git repository, you would copy some subtrees of the ELPA git workspace into the Emacs git workspace. People have looked into doing this, but it gets messy and confusing. "git fetch" is dealing with two upstreams for one workspace. There has been talk about git submodules, etc, but nothing concrete. The alternative, which is being implemented by the :core external package feature in Gnu ELPA, and has been shown to work (but has some details to work out), is to keep core ELPA packages in the emacs git repository. Then they are part of the developer's build environment using the current git workflow, and they are included in both the emacs tarball and the ELPA package server with the current release workflows. There are two rationales for moving a package to ELPA: 1) Allow a release schedule independent of the core Emacs release schedule. 2) Reduce the size of the Emacs git workspace, which simplifies managing it. But a _core_ ELPA package must remain in the Emacs git workspace, so the only rationale for moving a core package to ELPA is for an independent release schedule. > There are three actions I'd like to take from here: > > a. That we clearly document an ELPA policy we all agree on; In admin/notes/elpa ? > b. That we move "external" packages from core into ELPA, starting with the > really big ones; It's not clear that "really big" implies "independent release schedule". "externally managed" implies that. "not used by other core code" is also a good reason to move a package to ELPA. > c. That we assess any points of friction after doing so, and adjust as > necessary. If we use the approach of keeping core ELPA packages in the Emacs git repository, there is _zero_ friction for the current core Emacs developers; the only change is in the ELPA config scripts. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
[parent not found: <"<87lha5snji.fsf"@isaac.fritz.box>]
[parent not found: <"<87d1vhsmuj.fsf"@isaac.fritz.box>]
[parent not found: <"<878u65slue.fsf"@isaac.fritz.box>]
[parent not found: <"<874mgtsjwn.fsf"@isaac.fritz.box>]
* Re: ELPA policy 2015-11-10 18:06 ` Stephen Leake [not found] ` <"<87lha5snji.fsf"@isaac.fritz.box> @ 2015-11-10 18:28 ` John Wiegley 2015-11-10 18:32 ` Dmitry Gutov ` (3 more replies) 1 sibling, 4 replies; 209+ messages in thread From: John Wiegley @ 2015-11-10 18:28 UTC (permalink / raw) To: Stephen Leake Cc: aaronecay, Eli Zaretskii, Stromeko, Dmitry Gutov, emacs-devel >>>>> Stephen Leake <stephen_leake@stephe-leake.org> writes: > ELPA packages that other core code depends on (like CEDET; xref uses it - > called "core ELPA packages" hereinafter) have to be in every developer's > build environment everyday; the other core code has to see the current > version of the package, and it has to be the same for every developer. > > If core ELPA packages are in the ELPA git repository, you would copy some > subtrees of the ELPA git workspace into the Emacs git workspace. People have > looked into doing this, but it gets messy and confusing. "git fetch" is > dealing with two upstreams for one workspace. There has been talk about git > submodules, etc, but nothing concrete. Elpa.git should be a submodule referenced from within Emacs.git (under "elpa"). This allows us to expressly state which "version" of Elpa is expected to work with the current Emacs.git. Large packages like CEDET should move outside of Emacs.git and into Elpa.git. If xref.el depends on CEDET, it would move to Elpa.git as well. > If we use the approach of keeping core ELPA packages in the Emacs git > repository, there is _zero_ friction for the current core Emacs developers; > the only change is in the ELPA config scripts. I do not want this code replication. We will promote ELPA as an active development space alongside core Emacs. If we use a submodule, and improve our tooling slightly, it should become a seamless thing. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:28 ` John Wiegley @ 2015-11-10 18:32 ` Dmitry Gutov 2015-11-10 18:35 ` John Wiegley 2015-11-10 18:37 ` David Engster 2015-11-10 18:43 ` David Engster ` (2 subsequent siblings) 3 siblings, 2 replies; 209+ messages in thread From: Dmitry Gutov @ 2015-11-10 18:32 UTC (permalink / raw) To: Stephen Leake, Eli Zaretskii, aaronecay, Stromeko, emacs-devel On 11/10/2015 08:28 PM, John Wiegley wrote: > If xref.el depends on CEDET, it would move to Elpa.git as well. I can cut out xref.el's dependency on CEDET easily enough. Moving it into ELPA would be kinda problematic, because guess what M-. and M-, and bound to by default now. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:32 ` Dmitry Gutov @ 2015-11-10 18:35 ` John Wiegley 2015-11-10 18:44 ` David Engster ` (2 more replies) 2015-11-10 18:37 ` David Engster 1 sibling, 3 replies; 209+ messages in thread From: John Wiegley @ 2015-11-10 18:35 UTC (permalink / raw) To: Dmitry Gutov Cc: aaronecay, Eli Zaretskii, Stromeko, Stephen Leake, emacs-devel >>>>> Dmitry Gutov <dgutov@yandex.ru> writes: > I can cut out xref.el's dependency on CEDET easily enough. Great, let's do that. I'd prefer to have the functionality of xref.el in core. Thanks, John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:35 ` John Wiegley @ 2015-11-10 18:44 ` David Engster 2015-11-10 18:49 ` John Wiegley 2015-11-10 20:00 ` Dmitry Gutov 2015-11-10 19:15 ` ELPA policy Eli Zaretskii 2015-11-10 21:52 ` ELPA policy Dmitry Gutov 2 siblings, 2 replies; 209+ messages in thread From: David Engster @ 2015-11-10 18:44 UTC (permalink / raw) To: Dmitry Gutov Cc: aaronecay, Eli Zaretskii, Stromeko, Stephen Leake, emacs-devel John Wiegley writes: >>>>>> Dmitry Gutov <dgutov@yandex.ru> writes: > >> I can cut out xref.el's dependency on CEDET easily enough. > > Great, let's do that. I'd prefer to have the functionality of xref.el in core. So that means xref won't support CEDET out of the box? What is gained by that, exactly? -David ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:44 ` David Engster @ 2015-11-10 18:49 ` John Wiegley 2015-11-10 20:00 ` Dmitry Gutov 1 sibling, 0 replies; 209+ messages in thread From: John Wiegley @ 2015-11-10 18:49 UTC (permalink / raw) To: David Engster Cc: aaronecay, emacs-devel, Stromeko, Dmitry Gutov, Eli Zaretskii, Stephen Leake >>>>> David Engster <deng@randomsample.de> writes: > So that means xref won't support CEDET out of the box? What is gained by > that, exactly? It could always support it with customization hooks. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:44 ` David Engster 2015-11-10 18:49 ` John Wiegley @ 2015-11-10 20:00 ` Dmitry Gutov 2015-11-11 15:15 ` xref and GNU Global (Re: ELPA policy) Nicolas Petton 1 sibling, 1 reply; 209+ messages in thread From: Dmitry Gutov @ 2015-11-10 20:00 UTC (permalink / raw) To: David Engster Cc: aaronecay, Eli Zaretskii, Stromeko, Stephen Leake, emacs-devel On 11/10/2015 08:44 PM, David Engster wrote: > So that means xref won't support CEDET out of the box? What is gained by > that, exactly? It doesn't support CEDET even now. Nobody wrote the Semantic implementation of a xref backend, and it might be tool late now for the 25.1 release. If CEDET were moved to ELPA, however, you can add that support at your leisure later. And that's an orthogonal issue. xref has no need to support CEDET: CEDET should support xref (the support code will be in CEDET's tree). ^ permalink raw reply [flat|nested] 209+ messages in thread
* xref and GNU Global (Re: ELPA policy) 2015-11-10 20:00 ` Dmitry Gutov @ 2015-11-11 15:15 ` Nicolas Petton 2015-11-11 15:22 ` Dmitry Gutov 2015-11-11 23:12 ` Stephen Leake 0 siblings, 2 replies; 209+ messages in thread From: Nicolas Petton @ 2015-11-11 15:15 UTC (permalink / raw) To: Dmitry Gutov, David Engster Cc: aaronecay, Eli Zaretskii, Stromeko, Stephen Leake, emacs-devel [-- Attachment #1: Type: text/plain, Size: 412 bytes --] Dmitry Gutov <dgutov@yandex.ru> writes: > It doesn't support CEDET even now. Nobody wrote the Semantic > implementation of a xref backend, and it might be tool late now for the > 25.1 release. What about having support for Global (I haven't followed the development of xref in a while, so I might have missed it). I'm using ggtags now, but having support for it in xref would be awesome. Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: xref and GNU Global (Re: ELPA policy) 2015-11-11 15:15 ` xref and GNU Global (Re: ELPA policy) Nicolas Petton @ 2015-11-11 15:22 ` Dmitry Gutov 2015-11-11 23:19 ` Stephen Leake 2015-11-11 23:12 ` Stephen Leake 1 sibling, 1 reply; 209+ messages in thread From: Dmitry Gutov @ 2015-11-11 15:22 UTC (permalink / raw) To: Nicolas Petton, David Engster Cc: aaronecay, Eli Zaretskii, Stromeko, Stephen Leake, emacs-devel On 11/11/2015 05:15 PM, Nicolas Petton wrote: > What about having support for Global (I haven't followed the development > of xref in a while, so I might have missed it). I'm using ggtags now, > but having support for it in xref would be awesome. It's the other way around: ggtags will need to implement support for xref. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: xref and GNU Global (Re: ELPA policy) 2015-11-11 15:22 ` Dmitry Gutov @ 2015-11-11 23:19 ` Stephen Leake 2015-11-11 23:32 ` Dmitry Gutov 0 siblings, 1 reply; 209+ messages in thread From: Stephen Leake @ 2015-11-11 23:19 UTC (permalink / raw) To: Dmitry Gutov Cc: David Engster, aaronecay, Nicolas Petton, emacs-devel, Stromeko, Eli Zaretskii Dmitry Gutov <dgutov@yandex.ru> writes: > On 11/11/2015 05:15 PM, Nicolas Petton wrote: > >> What about having support for Global (I haven't followed the development >> of xref in a while, so I might have missed it). I'm using ggtags now, >> but having support for it in xref would be awesome. > > It's the other way around: ggtags will need to implement support for xref. ggtags is a fairly thin elisp package that interfaces to command-line Gnu Global. cedet also provides a thin elisp package (cedet-global) that interfaces to command-line Gnu Global, and is integrated with the rest of cedet. There's no reason to have both cedet-global and ggtags. There are many reasons to keep cedet, so it makes sense to provide xref support for Gnu Global via the cedet package, not the ggtags package. There may be features that are in ggtags that are not in cedet; I'll have to check after I get the basics working, and see if it is reasonable to add them to cedet. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: xref and GNU Global (Re: ELPA policy) 2015-11-11 23:19 ` Stephen Leake @ 2015-11-11 23:32 ` Dmitry Gutov 2015-11-12 7:07 ` Stephen Leake 0 siblings, 1 reply; 209+ messages in thread From: Dmitry Gutov @ 2015-11-11 23:32 UTC (permalink / raw) To: Stephen Leake Cc: David Engster, aaronecay, Nicolas Petton, emacs-devel, Stromeko, Eli Zaretskii On 11/12/2015 01:19 AM, Stephen Leake wrote: > There's no reason to have both cedet-global and ggtags. ggtags has some other things as well, like a completion-at-point-functions element, hooks to update the current database automatically, eldoc support, etc. > There are many reasons to keep cedet, so it makes sense to provide xref > support for Gnu Global via the cedet package, not the ggtags package. We can have either, as far as I'm concerned. But it would be better to have more features from ggtags in the core to replace the things etags.el is commonly used for, eventually. > There may be features that are in ggtags that are not in cedet; I'll > have to check after I get the basics working, and see if it is > reasonable to add them to cedet. CEDET only uses Global is a fairly narrow way. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: xref and GNU Global (Re: ELPA policy) 2015-11-11 23:32 ` Dmitry Gutov @ 2015-11-12 7:07 ` Stephen Leake 0 siblings, 0 replies; 209+ messages in thread From: Stephen Leake @ 2015-11-12 7:07 UTC (permalink / raw) To: Dmitry Gutov Cc: David Engster, aaronecay, Nicolas Petton, emacs-devel, Stromeko, Eli Zaretskii Dmitry Gutov <dgutov@yandex.ru> writes: > On 11/12/2015 01:19 AM, Stephen Leake wrote: > >> There's no reason to have both cedet-global and ggtags. > > ggtags has some other things as well, like a > completion-at-point-functions element, hooks to update the current > database automatically, eldoc support, etc. Right. All of which should also be in CEDET. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: xref and GNU Global (Re: ELPA policy) 2015-11-11 15:15 ` xref and GNU Global (Re: ELPA policy) Nicolas Petton 2015-11-11 15:22 ` Dmitry Gutov @ 2015-11-11 23:12 ` Stephen Leake 2015-11-11 23:52 ` Nicolas Petton 1 sibling, 1 reply; 209+ messages in thread From: Stephen Leake @ 2015-11-11 23:12 UTC (permalink / raw) To: Nicolas Petton Cc: David Engster, aaronecay, emacs-devel, Stromeko, Dmitry Gutov, Eli Zaretskii Nicolas Petton <nicolas@petton.fr> writes: > Dmitry Gutov <dgutov@yandex.ru> writes: > > >> It doesn't support CEDET even now. Nobody wrote the Semantic >> implementation of a xref backend, and it might be tool late now for the >> 25.1 release. > > What about having support for Global (I haven't followed the development > of xref in a while, so I might have missed it). I'm using ggtags now, > but having support for it in xref would be awesome. I'm working on it, but I seem to be going very slowly. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: xref and GNU Global (Re: ELPA policy) 2015-11-11 23:12 ` Stephen Leake @ 2015-11-11 23:52 ` Nicolas Petton 2015-11-12 7:05 ` Stephen Leake 0 siblings, 1 reply; 209+ messages in thread From: Nicolas Petton @ 2015-11-11 23:52 UTC (permalink / raw) To: Stephen Leake Cc: David Engster, aaronecay, emacs-devel, Stromeko, Dmitry Gutov, Eli Zaretskii [-- Attachment #1: Type: text/plain, Size: 516 bytes --] Stephen Leake <stephen_leake@stephe-leake.org> writes: >> What about having support for Global (I haven't followed the development >> of xref in a while, so I might have missed it). I'm using ggtags now, >> but having support for it in xref would be awesome. > > I'm working on it, but I seem to be going very slowly. Do you want help? BTW, regarding CEDET, I never tried it, but I don't plan to use it either. I think the best would be to just add a simple backend for xref, with no dependency to CEDET. Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: xref and GNU Global (Re: ELPA policy) 2015-11-11 23:52 ` Nicolas Petton @ 2015-11-12 7:05 ` Stephen Leake 0 siblings, 0 replies; 209+ messages in thread From: Stephen Leake @ 2015-11-12 7:05 UTC (permalink / raw) To: Nicolas Petton Cc: David Engster, aaronecay, emacs-devel, Stromeko, Dmitry Gutov, Eli Zaretskii Nicolas Petton <nicolas@petton.fr> writes: > Stephen Leake <stephen_leake@stephe-leake.org> writes: > >>> What about having support for Global (I haven't followed the development >>> of xref in a while, so I might have missed it). I'm using ggtags now, >>> but having support for it in xref would be awesome. >> >> I'm working on it, but I seem to be going very slowly. > > Do you want help? Yes, but the main reason I'm not making progress on this backend is that I keep getting distracted by other project.el and xref issues. Here's what I have so far - feel free to play with it: --- file symref-patches.el ;; Additions to semantic/symref.el ;; semantic/symref implementation of xref-find-function (defun semantic-symref--xref-find-definitions (symbol &optional symref-tool) "Implement `xref-find-function' for 'definitions for the semantic/symref backend. SYMREF-TOOL determines which symref tool to use (default 'detect); see `semantic-symref-tool-alist'." (require 'semantic/symref) (defvar semantic-symref-tool) (let* ((semantic-symref-tool (or symref-tool 'detect)) (res (semantic-symref-find-tags-by-name symbol 'project)) (hits (and res (oref res hit-lines))) xrefs) (dolist (hit hits) (push (xref-file-location :file (cdr hit) :line (car hit) :column 0) ;; FIXME: add :hint (match-string 3)) xrefs)) xrefs)) (defun semantic-symref-xref-find (action id) "Implement `xref-find-function' for semantic/symref." (cl-ecase action (definitions (semantic-symref--xref-find-definitions id)) (references (semantic-symref--xref-find-references id)) (apropos (semantic-symref--xref-find-apropos id))) ) (provide 'symref-patches) --- end file > BTW, regarding CEDET, I never tried it, but I don't plan to use it > either. I think the best would be to just add a simple backend for > xref, with no dependency to CEDET. The above requires that you enable EDE via: (require 'ede) (global-ede-mode) (ede-enable-generic-projects) but it does not require semantic-mode. EDE is required because the symref backend detection uses EDE to find the project root. For Gnu Global, that could be changed to one call to locate-dominating-file. But I'm waiting for the current CEDET merge to master to be complete before suggesting changes to this. This gets to the issue of whether CEDET is part of the Emacs standard library or not. If it is, we should use it, while also making it more transparent to users like you, who would rather not be bothered by it. Which is an example of the kind of thing I get distracted by :). Can you elaborate on why you don't want to use CEDET? I'm assuming you mean you don't want to enable semantic-mode or ede-mode; you should not care whether the file cedet-global.el is loaded. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:35 ` John Wiegley 2015-11-10 18:44 ` David Engster @ 2015-11-10 19:15 ` Eli Zaretskii 2015-11-10 22:44 ` xref CEDET (was ELPA policy) Stephen Leake 2015-11-10 21:52 ` ELPA policy Dmitry Gutov 2 siblings, 1 reply; 209+ messages in thread From: Eli Zaretskii @ 2015-11-10 19:15 UTC (permalink / raw) To: John Wiegley; +Cc: aaronecay, emacs-devel, Stromeko, stephen_leake, dgutov > From: John Wiegley <jwiegley@gmail.com> > Date: Tue, 10 Nov 2015 10:35:13 -0800 > Cc: aaronecay@gmail.com, Eli Zaretskii <eliz@gnu.org>, Stromeko@nexgo.de, > Stephen Leake <stephen_leake@stephe-leake.org>, emacs-devel@gnu.org > > >>>>> Dmitry Gutov <dgutov@yandex.ru> writes: > > > I can cut out xref.el's dependency on CEDET easily enough. > > Great, let's do that. Sounds like a step backward to me. CEDET allows xref to be more versatile and support more back-ends. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: xref CEDET (was ELPA policy) 2015-11-10 19:15 ` ELPA policy Eli Zaretskii @ 2015-11-10 22:44 ` Stephen Leake 0 siblings, 0 replies; 209+ messages in thread From: Stephen Leake @ 2015-11-10 22:44 UTC (permalink / raw) To: Eli Zaretskii; +Cc: John Wiegley, Stromeko, emacs-devel, aaronecay, dgutov Eli Zaretskii <eliz@gnu.org> writes: >> From: John Wiegley <jwiegley@gmail.com> >> Date: Tue, 10 Nov 2015 10:35:13 -0800 >> Cc: aaronecay@gmail.com, Eli Zaretskii <eliz@gnu.org>, Stromeko@nexgo.de, >> Stephen Leake <stephen_leake@stephe-leake.org>, emacs-devel@gnu.org >> >> >>>>> Dmitry Gutov <dgutov@yandex.ru> writes: >> >> > I can cut out xref.el's dependency on CEDET easily enough. >> >> Great, let's do that. > > Sounds like a step backward to me. CEDET allows xref to be more > versatile and support more back-ends. I will provide an ELPA package that implements a CEDET backend for xref. Or, if it's simple enough, add that to the CEDET ELPA package. This issue is not a show-stopper to moving CEDET to ELPA. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:35 ` John Wiegley 2015-11-10 18:44 ` David Engster 2015-11-10 19:15 ` ELPA policy Eli Zaretskii @ 2015-11-10 21:52 ` Dmitry Gutov 2 siblings, 0 replies; 209+ messages in thread From: Dmitry Gutov @ 2015-11-10 21:52 UTC (permalink / raw) To: Stephen Leake, Eli Zaretskii, aaronecay, Stromeko, emacs-devel On 11/10/2015 08:35 PM, John Wiegley wrote: >>>>>> Dmitry Gutov <dgutov@yandex.ru> writes: > >> I can cut out xref.el's dependency on CEDET easily enough. > > Great, let's do that. I'd prefer to have the functionality of xref.el in core. Let me know when it becomes a blocker, and I'll do it in the simplest way. But I'd like to defer that for now, because it comes with making choices (see the other messages in this thread), and I'm running low on decision-making juice these days. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:32 ` Dmitry Gutov 2015-11-10 18:35 ` John Wiegley @ 2015-11-10 18:37 ` David Engster 2015-11-10 19:57 ` Dmitry Gutov 1 sibling, 1 reply; 209+ messages in thread From: David Engster @ 2015-11-10 18:37 UTC (permalink / raw) To: Dmitry Gutov Cc: aaronecay, Eli Zaretskii, Stromeko, Stephen Leake, emacs-devel Dmitry Gutov writes: > On 11/10/2015 08:28 PM, John Wiegley wrote: > >> If xref.el depends on CEDET, it would move to Elpa.git as well. > > I can cut out xref.el's dependency on CEDET easily enough. Which illustrates nicely the downside of moving packages to ELPA. -David ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:37 ` David Engster @ 2015-11-10 19:57 ` Dmitry Gutov 2015-11-10 20:01 ` Eli Zaretskii 2015-11-10 20:45 ` David Engster 0 siblings, 2 replies; 209+ messages in thread From: Dmitry Gutov @ 2015-11-10 19:57 UTC (permalink / raw) To: David Engster Cc: aaronecay, Eli Zaretskii, Stromeko, Stephen Leake, emacs-devel On 11/10/2015 08:37 PM, David Engster wrote: >> I can cut out xref.el's dependency on CEDET easily enough. > > Which illustrates nicely the downside of moving packages to ELPA. Nope. It will be beneficial to the code in Emacs, because xref is currently depending on a minor feature of CEDET (the semantic-symref-tool infrastructure), which could use a rewrite, to be available for a more general usage. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 19:57 ` Dmitry Gutov @ 2015-11-10 20:01 ` Eli Zaretskii 2015-11-10 20:19 ` Dmitry Gutov 2015-11-10 20:45 ` David Engster 1 sibling, 1 reply; 209+ messages in thread From: Eli Zaretskii @ 2015-11-10 20:01 UTC (permalink / raw) To: Dmitry Gutov; +Cc: aaronecay, Stromeko, stephen_leake, deng, emacs-devel > Cc: Stephen Leake <stephen_leake@stephe-leake.org>, > Eli Zaretskii <eliz@gnu.org>, aaronecay@gmail.com, Stromeko@nexgo.de, > emacs-devel@gnu.org > From: Dmitry Gutov <dgutov@yandex.ru> > Date: Tue, 10 Nov 2015 21:57:25 +0200 > > On 11/10/2015 08:37 PM, David Engster wrote: > > >> I can cut out xref.el's dependency on CEDET easily enough. > > > > Which illustrates nicely the downside of moving packages to ELPA. > > Nope. It will be beneficial to the code in Emacs, because xref is > currently depending on a minor feature of CEDET (the > semantic-symref-tool infrastructure), which could use a rewrite, to be > available for a more general usage. I think a point we should take from this is that the prerequisites (in this case, the said rewrite) should be in place _before_ we seriously consider such moves (pun intended ;-). ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 20:01 ` Eli Zaretskii @ 2015-11-10 20:19 ` Dmitry Gutov 2015-11-10 20:34 ` Eli Zaretskii 2015-11-10 22:40 ` Stephen Leake 0 siblings, 2 replies; 209+ messages in thread From: Dmitry Gutov @ 2015-11-10 20:19 UTC (permalink / raw) To: Eli Zaretskii; +Cc: aaronecay, Stromeko, stephen_leake, deng, emacs-devel On 11/10/2015 10:01 PM, Eli Zaretskii wrote: > I think a point we should take from this is that the prerequisites (in > this case, the said rewrite) should be in place _before_ we seriously > consider such moves (pun intended ;-). The only prerequisite is to have this functionality (which is fairly self-contained) in the core. It would benefit from a rewrite (and moving away from CEDET would encourage that), but as the first step, we can just copy it and do some renaming. However, like mentioned in the "project.el semantics" thread: I'm seriously considering to get away from it and always use Grep, because the other tools, while they can be faster, they're also entirely opaque to the user, can have outdated databases, non-indexed relevant directories, unsupported languages, and so on. So this feature, which xref is depending on for the default xref-find-references implementation, requires certain amount of hand-holding from the user. And I don't know how to approach documenting it, and otherwise make it apparent to the user. So someone else should probably start on taking care of that. Otherwise, I'd rather fall back on Grep, until such point that Emacs starts to manage the Global/id-utils/CScope datbases for the user, and learns to make sure that the database is up-to-date. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 20:19 ` Dmitry Gutov @ 2015-11-10 20:34 ` Eli Zaretskii 2015-11-10 21:16 ` Dmitry Gutov 2015-11-10 22:40 ` Stephen Leake 1 sibling, 1 reply; 209+ messages in thread From: Eli Zaretskii @ 2015-11-10 20:34 UTC (permalink / raw) To: Dmitry Gutov; +Cc: aaronecay, Stromeko, stephen_leake, deng, emacs-devel > Cc: deng@randomsample.de, stephen_leake@stephe-leake.org, > aaronecay@gmail.com, Stromeko@nexgo.de, emacs-devel@gnu.org > From: Dmitry Gutov <dgutov@yandex.ru> > Date: Tue, 10 Nov 2015 22:19:46 +0200 > > So someone else should probably start on taking care of that. Otherwise, > I'd rather fall back on Grep, until such point that Emacs starts to > manage the Global/id-utils/CScope datbases for the user, and learns to > make sure that the database is up-to-date. Grep doesn't scale well to large projects, IME. You get too many false positives. Outdated databases are easy to avoid with the likes of cron jobs. Yes, that's hand-holding, but when you have to quickly find stuff in a project with 3 million lines of code and thousands of classes, there really is no other alternative. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 20:34 ` Eli Zaretskii @ 2015-11-10 21:16 ` Dmitry Gutov 2015-11-10 21:27 ` Dmitry Gutov 0 siblings, 1 reply; 209+ messages in thread From: Dmitry Gutov @ 2015-11-10 21:16 UTC (permalink / raw) To: Eli Zaretskii; +Cc: aaronecay, Stromeko, stephen_leake, deng, emacs-devel On 11/10/2015 10:34 PM, Eli Zaretskii wrote: > Grep doesn't scale well to large projects, IME. You get too many > false positives. We can also check the "inside string or comment" status, as well as use the Emacs syntax tables to make sure that the match begins and ends at symbol boundaries appropriate for the file's language. Everything necessary for that is already written (and you can try it out by calling project-find-regexp and using something like \_<tool_bar_items\_> as the regexp). I don't think that id-utils does anything more to weed out false positives. Grep is still probably going to be slower than at least some of the tools in question. Could you test, on a large project of your choice? > Outdated databases are easy to avoid with the likes of cron jobs. > Yes, that's hand-holding, but when you have to quickly find stuff in a > project with 3 million lines of code and thousands of classes, there > really is no other alternative. Yes. But the xref commands should be easy to use. Even if the above is not rocket science, the user would still have to know what they need to do to get up-to-date results. (Believe it or not, I haven't created a single cron job for code writing purposes in my life, and I don't know its syntax for the time intervals. I'm likely not alone in that.) ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 21:16 ` Dmitry Gutov @ 2015-11-10 21:27 ` Dmitry Gutov 0 siblings, 0 replies; 209+ messages in thread From: Dmitry Gutov @ 2015-11-10 21:27 UTC (permalink / raw) To: Eli Zaretskii; +Cc: aaronecay, Stromeko, stephen_leake, deng, emacs-devel On 11/10/2015 11:16 PM, Dmitry Gutov wrote: > project-find-regexp and using something like \_<tool_bar_items\_> as the Sorry, using the Emacs-only syntax there doesn't exactly work yet. But you can compare by calling xref-find-references when the project has an id-utils index file, and doing the same without it. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 20:19 ` Dmitry Gutov 2015-11-10 20:34 ` Eli Zaretskii @ 2015-11-10 22:40 ` Stephen Leake 1 sibling, 0 replies; 209+ messages in thread From: Stephen Leake @ 2015-11-10 22:40 UTC (permalink / raw) To: Dmitry Gutov; +Cc: aaronecay, Eli Zaretskii, Stromeko, deng, emacs-devel Dmitry Gutov <dgutov@yandex.ru> writes: > However, like mentioned in the "project.el semantics" thread: please change the thread subject. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 19:57 ` Dmitry Gutov 2015-11-10 20:01 ` Eli Zaretskii @ 2015-11-10 20:45 ` David Engster 2015-11-10 21:07 ` Dmitry Gutov 1 sibling, 1 reply; 209+ messages in thread From: David Engster @ 2015-11-10 20:45 UTC (permalink / raw) To: Dmitry Gutov Cc: aaronecay, Eli Zaretskii, Stromeko, Stephen Leake, emacs-devel Dmitry Gutov writes: > On 11/10/2015 08:37 PM, David Engster wrote: > >>> I can cut out xref.el's dependency on CEDET easily enough. >> >> Which illustrates nicely the downside of moving packages to ELPA. > > Nope. It will be beneficial to the code in Emacs, because xref is > currently depending on a minor feature of CEDET (the > semantic-symref-tool infrastructure), which could use a rewrite, to be > available for a more general usage. As you know, we will drop our upstream repository. During the last merge, I will also have to discuss with Eric what we can do to narrow CEDET's scope. I agree with you that semantic-symref is probably one of the packages that should be replaced with something more general. But as long as it's there, I'd appreciate if you could leave whatever support you have coded for it. I'd also be happy to drop the completion GUI stuff, BTW. I've repeatedly said that company should be in core for that. -David ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 20:45 ` David Engster @ 2015-11-10 21:07 ` Dmitry Gutov 0 siblings, 0 replies; 209+ messages in thread From: Dmitry Gutov @ 2015-11-10 21:07 UTC (permalink / raw) To: David Engster Cc: aaronecay, Eli Zaretskii, Stromeko, Stephen Leake, emacs-devel On 11/10/2015 10:45 PM, David Engster wrote: > As you know, we will drop our upstream repository. During the last > merge, I will also have to discuss with Eric what we can do to narrow > CEDET's scope. > I agree with you that semantic-symref is probably one of > the packages that should be replaced with something more general. In the end, I would leave only the "backend" part of semantic-symref (calling the tools + piping the results through Semantic), and use it in the Semantic xref backend. So the results will be displayed by xref. Alas, xref is not up to feature parity yet (cannot group hits by containing functions, no checkboxes, simplistic "rename" command), and I'm having difficulties deciding on the changes to the xref data structures that would make that possible, as well as keep allowing certain other uses of xref, such as project-find-regexp. I'll write that up in a separate thread later this week. > But as > long as it's there, I'd appreciate if you could leave whatever support > you have coded for it. Just to be clear, there's no "support" for semantic-symref in xref yet. We just use some low-level pieces of it as a "fast Grep". > I'd also be happy to drop the completion GUI stuff, BTW. I've repeatedly > said that company should be in core for that. Also not exactly necessary. Semantic should make its completion-at-point-functions element the main entry point for completion, and Company will pick it up. You can even have argument list annotations, if you add the :annotation-function property. I do want to have Company more widely available, but probably not in 25.1. There are quite a few things I wanted to do with it first, and most are still untouched. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:28 ` John Wiegley 2015-11-10 18:32 ` Dmitry Gutov @ 2015-11-10 18:43 ` David Engster 2015-11-10 18:52 ` John Wiegley 2015-11-10 18:49 ` Eli Zaretskii 2015-11-10 22:36 ` Stephen Leake 3 siblings, 1 reply; 209+ messages in thread From: David Engster @ 2015-11-10 18:43 UTC (permalink / raw) To: Stephen Leake Cc: aaronecay, Eli Zaretskii, Stromeko, Dmitry Gutov, emacs-devel John Wiegley writes: >>>>>> Stephen Leake <stephen_leake@stephe-leake.org> writes: >> ELPA packages that other core code depends on (like CEDET; xref uses it - >> called "core ELPA packages" hereinafter) have to be in every developer's >> build environment everyday; the other core code has to see the current >> version of the package, and it has to be the same for every developer. >> >> If core ELPA packages are in the ELPA git repository, you would copy some >> subtrees of the ELPA git workspace into the Emacs git workspace. People have >> looked into doing this, but it gets messy and confusing. "git fetch" is >> dealing with two upstreams for one workspace. There has been talk about git >> submodules, etc, but nothing concrete. > > Elpa.git should be a submodule referenced from within Emacs.git (under "elpa"). > This allows us to expressly state which "version" of Elpa is expected to work > with the current Emacs.git. Since ELPA comprises many packages, that simply cannot work. > Large packages like CEDET should move outside of Emacs.git and into Elpa.git. Why? > I do not want this code replication. We will promote ELPA as an active > development space alongside core Emacs. If we use a submodule, and improve our > tooling slightly, it should become a seamless thing. From my experience, git submodules are never seamless to work with. -David ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:43 ` David Engster @ 2015-11-10 18:52 ` John Wiegley 2015-11-10 18:58 ` David Engster ` (2 more replies) 0 siblings, 3 replies; 209+ messages in thread From: John Wiegley @ 2015-11-10 18:52 UTC (permalink / raw) To: David Engster Cc: aaronecay, emacs-devel, Stromeko, Dmitry Gutov, Eli Zaretskii, Stephen Leake >>>>> David Engster <deng@randomsample.de> writes: >> Elpa.git should be a submodule referenced from within Emacs.git (under "elpa"). >> This allows us to expressly state which "version" of Elpa is expected to work >> with the current Emacs.git. > Since ELPA comprises many packages, that simply cannot work. Perhaps I should say, "The version of Elpa.git, a subset of which will appear in the release tarball of this commit". >> Large packages like CEDET should move outside of Emacs.git and into >> Elpa.git. > Why? There will never be 100% agreement on whether they should be in ELPA, or be in Core, so I'm making the decision that they belong in ELPA. The big three that will be moved first are: Gnus, Org and CEDET. > From my experience, git submodules are never seamless to work with. Even still, they work perfectly fine for this purpose. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:52 ` John Wiegley @ 2015-11-10 18:58 ` David Engster 2015-11-10 19:03 ` John Wiegley 2015-11-10 19:17 ` Eli Zaretskii 2015-11-10 22:52 ` Stephen Leake 2 siblings, 1 reply; 209+ messages in thread From: David Engster @ 2015-11-10 18:58 UTC (permalink / raw) To: Stephen Leake Cc: aaronecay, Eli Zaretskii, Stromeko, emacs-devel, Dmitry Gutov John Wiegley writes: >>> Large packages like CEDET should move outside of Emacs.git and into >>> Elpa.git. > >> Why? > > There will never be 100% agreement on whether they should be in ELPA, or be in > Core, so I'm making the decision that they belong in ELPA. So you simply don't want to give any reason? -David ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:58 ` David Engster @ 2015-11-10 19:03 ` John Wiegley 2015-11-10 19:20 ` David Engster 0 siblings, 1 reply; 209+ messages in thread From: John Wiegley @ 2015-11-10 19:03 UTC (permalink / raw) To: David Engster Cc: aaronecay, emacs-devel, Stromeko, Dmitry Gutov, Eli Zaretskii, Stephen Leake >>>>> David Engster <deng@randomsample.de> writes: > So you simply don't want to give any reason? David, although I work by consensus as much as possible, I won't explain everything I choose to do. My reason is that I think this will improve Emacs development. Part of my goal is to make the boundary between Emacs and ELPA thinner, so it will actually be *easier* to move CEDET and friends back into core later, if my reasoning is wrong. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 19:03 ` John Wiegley @ 2015-11-10 19:20 ` David Engster 2015-11-10 19:43 ` John Wiegley 0 siblings, 1 reply; 209+ messages in thread From: David Engster @ 2015-11-10 19:20 UTC (permalink / raw) To: Stephen Leake Cc: aaronecay, Eli Zaretskii, Stromeko, Dmitry Gutov, emacs-devel John Wiegley writes: >>>>>> David Engster <deng@randomsample.de> writes: > >> So you simply don't want to give any reason? > > David, although I work by consensus as much as possible, I won't explain > everything I choose to do. My reason is that I think this will improve Emacs > development. This is not about reaching a consensus. This is about you giving proper reasons for such a big change. -David ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 19:20 ` David Engster @ 2015-11-10 19:43 ` John Wiegley 2015-11-10 20:02 ` David Engster 2015-11-10 22:53 ` Stephen Leake 0 siblings, 2 replies; 209+ messages in thread From: John Wiegley @ 2015-11-10 19:43 UTC (permalink / raw) To: David Engster Cc: aaronecay, emacs-devel, Stromeko, Dmitry Gutov, Eli Zaretskii, Stephen Leake >>>>> David Engster <deng@randomsample.de> writes: > This is not about reaching a consensus. This is about you giving proper > reasons for such a big change. To be clear, I would also put Eshell (though not pcomplete) into the category of "big things that should be in ELPA" -- albeit, the subset of ELPA that will be in the release tarball. It's hard to pin down why in a manner that fits in an e-mail. If Eshell were in ELPA today, and we were talking about moving it into core, I would have just as much trouble justifying that move too. Perhaps this simply underscores the fact that we don't have an agreed upon ELPA policy we can all refer to. OK, David, I won't decide this by fiat. Let us decide what our ELPA policy will be, until it becomes clear, based on that document, what should go where, and why. We'll defer discussions of package movement until we have that in place. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 19:43 ` John Wiegley @ 2015-11-10 20:02 ` David Engster 2015-11-10 20:24 ` John Wiegley 2015-11-10 23:01 ` Stephen Leake 2015-11-10 22:53 ` Stephen Leake 1 sibling, 2 replies; 209+ messages in thread From: David Engster @ 2015-11-10 20:02 UTC (permalink / raw) To: Stephen Leake Cc: aaronecay, Eli Zaretskii, Stromeko, emacs-devel, Dmitry Gutov John Wiegley writes: >>>>>> David Engster <deng@randomsample.de> writes: > >> This is not about reaching a consensus. This is about you giving proper >> reasons for such a big change. > > To be clear, I would also put Eshell (though not pcomplete) into the category > of "big things that should be in ELPA" -- albeit, the subset of ELPA that will > be in the release tarball. > > It's hard to pin down why in a manner that fits in an e-mail. If Eshell were > in ELPA today, and we were talking about moving it into core, I would have > just as much trouble justifying that move too. Perhaps this simply underscores > the fact that we don't have an agreed upon ELPA policy we can all refer to. In my opinion, the main question is whether something provides infrastructure for other packages to use. This is precisely what CEDET tries to do. I wouldn't have much trouble with putting parts of CEDET in ELPA, namely those parts that do not directly provide infrastructure, like support for certain languages, project types, indexing tools, etc. > OK, David, I won't decide this by fiat. Let us decide what our ELPA policy > will be, until it becomes clear, based on that document, what should go where, > and why. We'll defer discussions of package movement until we have that in > place. It is still not clear to me what exactly is gained by moving core packages to ELPA. In my opinion, packages like Org, Gnus or CEDET didn't create significant problems for Emacs development in the past. On the contrary, it made sure that those packages were adapted quickly when larger changes in core were made. Those changes got synced back upstream by people like Bastien, Katsumi and me. So in my opinion, you are trying to fix something that is not broken. What actually *does* create problems are packages that don't have an active maintainer. The 'big three' however are not among those. -David ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 20:02 ` David Engster @ 2015-11-10 20:24 ` John Wiegley 2015-11-10 23:08 ` Stephen Leake 2015-11-10 23:01 ` Stephen Leake 1 sibling, 1 reply; 209+ messages in thread From: John Wiegley @ 2015-11-10 20:24 UTC (permalink / raw) To: David Engster Cc: aaronecay, emacs-devel, Stromeko, Dmitry Gutov, Eli Zaretskii, Stephen Leake >>>>> David Engster <deng@randomsample.de> writes: > the main question is whether something provides infrastructure for other > packages to use. Sounds like a good sentence for an ELPA policy. :) > It is still not clear to me what exactly is gained by moving core packages > to ELPA. Agility. What is appropriate. Knowing when a thing goes into core, and when in ELPA. Org is an application, it's not infrastructure; the same with Gnus. *Parts* of Gnus might rightly be considered infrastructure, but the whole of Gnus just doesn't belong there. Parts of CEDET probably do belong in Emacs core, but as an application, I don't think the whole of it does. Since we don't have an agreed upon basis by which to draw such lines, we're both talking about what we feel is right. Let's agree to revisit after having the ELPA discussion. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 20:24 ` John Wiegley @ 2015-11-10 23:08 ` Stephen Leake 2015-11-10 23:31 ` John Wiegley 0 siblings, 1 reply; 209+ messages in thread From: Stephen Leake @ 2015-11-10 23:08 UTC (permalink / raw) To: David Engster Cc: aaronecay, Eli Zaretskii, Stromeko, Dmitry Gutov, emacs-devel John Wiegley <jwiegley@gmail.com> writes: >>>>>> David Engster <deng@randomsample.de> writes: > >> the main question is whether something provides infrastructure for other >> packages to use. > > Sounds like a good sentence for an ELPA policy. :) > >> It is still not clear to me what exactly is gained by moving core packages >> to ELPA. Since no other core code depends on ELPA, CEDET is _not_ a "core package". Rather, CEDET is a "tarball package"; it is in Emacs git solely to ensure that it is included in the Emacs release tarball. A better example of a possible "core ELPA package" is the "seq" package. > Agility. I hear that as "easier to make small/frequent changes". That is what the ELPA release policy gives you, yes. So this is one rationale for moving packages to ELPA. > What is appropriate. That's what we are trying to figure out :) > Knowing when a thing goes into core, and when in ELPA. Ditto. > Org is an application, it's not infrastructure; the same with Gnus. *Parts* of > Gnus might rightly be considered infrastructure, but the whole of Gnus just > doesn't belong there. Parts of CEDET probably do belong in Emacs core, but as > an application, I don't think the whole of it does. I think the distinction between "tarball package" and "core package" is helpful here. I'm guessing that the main motivation for including Org and Gnus in Emacs git (well, CVS back then?) was to include them in the release tarball. If we have a mechanism to allow that for ELPA packages, moving them to ELPA makes sense. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 23:08 ` Stephen Leake @ 2015-11-10 23:31 ` John Wiegley 2015-11-11 0:32 ` Drew Adams 0 siblings, 1 reply; 209+ messages in thread From: John Wiegley @ 2015-11-10 23:31 UTC (permalink / raw) To: Stephen Leake Cc: David Engster, aaronecay, emacs-devel, Stromeko, Dmitry Gutov, Eli Zaretskii >>>>> Stephen Leake <stephen_leake@stephe-leake.org> writes: > I think the distinction between "tarball package" and "core package" is > helpful here. > > I'm guessing that the main motivation for including Org and Gnus in Emacs > git (well, CVS back then?) was to include them in the release tarball. If we > have a mechanism to allow that for ELPA packages, moving them to ELPA makes > sense. I like this. I think we have a good striation: core tarball ELPA net ELPA To the user, core and tarball ELPA should be indistinguishable. I think also that some tarball ELPA packages should come "pre-installed", if that is not already done. This would makes them accessible via autoload, rather than requiring the package interface to opt-in. If core == tarball ELPA for everyone but us, this makes the decision easy whether something should be in core or not a lot: We put it in core if core requires it. If nothing at all in core uses the package -- and if that package doesn't define "essential" functionality, like isearch.el or grep.el -- it can shift to tarball ELPA. This still leaves open the meaning of "essential", but it does make the picture clearer. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* RE: ELPA policy 2015-11-10 23:31 ` John Wiegley @ 2015-11-11 0:32 ` Drew Adams 2015-11-11 0:36 ` John Wiegley 0 siblings, 1 reply; 209+ messages in thread From: Drew Adams @ 2015-11-11 0:32 UTC (permalink / raw) To: John Wiegley, Stephen Leake Cc: David Engster, aaronecay, emacs-devel, Stromeko, Dmitry Gutov, Eli Zaretskii > > I think the distinction between "tarball package" and "core package" is > > helpful here. > > > > I'm guessing that the main motivation for including Org and Gnus in > > Emacs git (well, CVS back then?) was to include them in the release tarball. > > If we have a mechanism to allow that for ELPA packages, moving them to ELPA > > makes sense. > > I like this. I think we have a good striation: > core > tarball ELPA > net ELPA > To the user, core and tarball ELPA should be indistinguishable. I haven't yet received an answer to my question whether anything will change for users, depending on where you happen to manage the code wrt ELPA etc. But it sounds like the answer is yes. If some stuff that has traditionally been part of the distribution gets moved to (net) ELPA, it will no longer be distributed to users. They will need to pull it down using the package interface. Is that right? If so, I'm not crazy about that. I don't particularly want to go fishing in (net) ELPA for stuff that I've always been able to simply grep from within the distribution `lisp' directory. Especially, but not only, when I am not on the Internet. I hope you will continue to (also) distribute Emacs with all of its (traditional) source code, and not just make users request it from (net) ELPA. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-11 0:32 ` Drew Adams @ 2015-11-11 0:36 ` John Wiegley 2015-11-11 9:25 ` Stephen Leake [not found] ` <<86bnb06g7g.fsf@stephe-leake.org> 0 siblings, 2 replies; 209+ messages in thread From: John Wiegley @ 2015-11-11 0:36 UTC (permalink / raw) To: Drew Adams Cc: David Engster, aaronecay, emacs-devel, Stromeko, Dmitry Gutov, Eli Zaretskii, Stephen Leake >>>>> Drew Adams <drew.adams@oracle.com> writes: > I haven't yet received an answer to my question whether anything will change > for users, depending on where you happen to manage the code wrt ELPA etc. > > But it sounds like the answer is yes. If some stuff that has traditionally > been part of the distribution gets moved to (net) ELPA, it will no longer be > distributed to users. They will need to pull it down using the package > interface. Is that right? Correct. Sorry I assumed that the discussion had answered your question in passing. > If so, I'm not crazy about that. I don't particularly want to go fishing in > (net) ELPA for stuff that I've always been able to simply grep from within > the distribution `lisp' directory. Especially, but not only, when I am not > on the Internet. Those things could then be in tarball ELPA. The distinction between tarball ELPA and net ELPA is much more plastic than core and tarball ELPA. In fact, I have a feeling that, initially, tarball ELPA and net ELPA will just be the same thing, until we have a reason to tease them apart. > I hope you will continue to (also) distribute Emacs with all of its > (traditional) source code, and not just make users request it from (net) > ELPA. This is my preference as well. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-11 0:36 ` John Wiegley @ 2015-11-11 9:25 ` Stephen Leake 2015-11-11 13:52 ` Filipp Gunbin ` (2 more replies) [not found] ` <<86bnb06g7g.fsf@stephe-leake.org> 1 sibling, 3 replies; 209+ messages in thread From: Stephen Leake @ 2015-11-11 9:25 UTC (permalink / raw) To: emacs-devel John Wiegley <jwiegley@gmail.com> writes: > The distinction between tarball > ELPA and net ELPA is much more plastic than core and tarball ELPA. In fact, I > have a feeling that, initially, tarball ELPA and net ELPA will just be the > same thing, until we have a reason to tease them apart. Including a package in tarball ELPA means that the Emacs project has decided that the package is sufficiently important to be made immediately available to all Emacs users with no effort on their part beyond installing Emacs from the tarball. That implies a certain level of maturity and quality, and implies that it should be favored over other similar packages. On the other hand, we have in several cases recommended that someone put a package in Gnu ELPA in order to give it more exposure, so that it might eventually become higher quality and more mature. In general, ELPA packages have far less oversight than core packages. tarball ELPA packages should have the same oversight as core, or at least more than normal ELPA packages. So I disagree that all of Gnu ELPA should be included in the tarball. Another choice would be to say "use MELPA for experimental packages", but it is already too late for that. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-11 9:25 ` Stephen Leake @ 2015-11-11 13:52 ` Filipp Gunbin 2015-11-11 21:22 ` Stephen Leake 2015-11-11 17:02 ` Richard Stallman 2015-11-14 17:23 ` Jorge A. Alfaro-Murillo 2 siblings, 1 reply; 209+ messages in thread From: Filipp Gunbin @ 2015-11-11 13:52 UTC (permalink / raw) To: emacs-devel I do not consider myself competent enough in this area, but I'd like to share some thoughts here: For each package version there is a range (possibly sparse) of core versions on which the package is supported (or just should work). While the intent to move as much as possible in ELPA can be understood, it leads to potentially more incompatibilities between important parts which can provide API by themselves. So, there should be some compromise between "latency" of new features before they generally become available for use in packages and overall core stability. To me, it seems that the latter is more important and it's better to keep infrastructure & library things in core, while moving everything that uses them for a concrete purpose to ELPA. If that in turn provides some API which others use, then we have package interdependencies and that is probably OK (but can lead to conflicts). If sufficient amount of important packages use some API and that API is rather mature, then the maintainer can decide to move that in core to simplify dependency management. So, I'd suggest that: - Language features go straight into core (and people working on them / using them will have to use git version of Emacs until next release) - New libraries which are not supposed to be in very common use go to ELPA first - Then they are probably promoted to core as they get mature and more widely used - just to simplify their usage ("they will always be available"). - Major applications (like Gnus) and smaller ones always go to ELPA (most probably we should also bundle them in a tarball, but keep outside of the core). A user can then decide whether to use git version of e.g. Gnus (from Elpa or private package repository) if she likes, or update to a released package version from Elpa (if core supports it), or just keep using the Elpa version she uses at the moment (which probably came together with current core). - If such an application provides things useful for other applications, then it probably should extract that into a library to go through the cycle oulined above (elpa --maturity--> core). The API / SPI notion can also be used to provide implementations (backends) for different features which may have default simple implementations in core and more advanced ones in packages. A package must somehow "register" itself as a candidate for being a service for a concrete feature during installation. Filipp ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-11 13:52 ` Filipp Gunbin @ 2015-11-11 21:22 ` Stephen Leake 2015-11-12 13:24 ` Filipp Gunbin 0 siblings, 1 reply; 209+ messages in thread From: Stephen Leake @ 2015-11-11 21:22 UTC (permalink / raw) To: Filipp Gunbin; +Cc: emacs-devel Filipp Gunbin <fgunbin@fastmail.fm> writes: > For each package version there is a range (possibly sparse) of core > versions on which the package is supported (or just should work). For normal ELPA packages, that's true. For core and tarball ELPA packages, they must work in each current Emacs release (since they are in the release tarball). They may also support some set of previous Emacs releases. > While the intent to move as much as possible in ELPA can be understood, > it leads to potentially more incompatibilities between important parts > which can provide API by themselves. Yes. > So, there should be some compromise between "latency" of new features > before they generally become available for use in packages and overall > core stability. To me, it seems that the latter is more important and > it's better to keep infrastructure & library things in core, while > moving everything that uses them for a concrete purpose to ELPA. For normal ELPA packages, that's true. But this is partly why core and tarball ELPA packages are being considered. > If that in turn provides some API which others use, then we have > package interdependencies and that is probably OK (but can lead to > conflicts). A more flexible requirements spec may be needed. For example, Debian packages allow specifying a range of versions in the dependency; that can reflect actual testing, and not rely on implicit promises of future backward compatibility. Of course, it can also lead to false failures. > If sufficient amount of important packages use some API and that API > is rather mature, then the maintainer can decide to move that in core > to simplify dependency management. or to a tarball ELPA package, or to a core ELPA package. Perhaps that is too much choice? > So, I'd suggest that: > > - Language features go straight into core (and people working on them > / using them will have to use git version of Emacs until next > release) By "language features" do you mean things like ada-mode.el (primary mode for editing Ada source files)? If so, I strongly disagree; ada-mode.el is very happy as a normal ELPA package. Similar modes for other languages with a small audience could be in ELPA as well; I have not looked to see what's actually there. cc-mode is the core for a lot of similar C-like languages, so it probably makes sense to keep that in core. But it would be interesting to see what the consequences of moving it to a normal or tarball ELPA package would be. But if you mean things like parsers and xref support, then I agree. Although ada-mode also provides its own parser ... > - New libraries which are not supposed to be in very common use go to > ELPA first > - Then they are probably promoted to core as they get mature and more > widely used - just to simplify their usage ("they will always be > available"). That's what tarball ELPA packages are for. The only reason to move a package to actual core (ie emacs git, as opposed to elpa git) is if some other core code wants to depend in it. > - Major applications (like Gnus) and smaller ones always go to ELPA > (most probably we should also bundle them in a tarball, but keep > outside of the core). Right; that's a tarball ELPA package. > - If such an application provides things useful for other > applications, then it probably should extract that into a library to > go through the cycle oulined above (elpa --maturity--> core). Yes. > The API / SPI notion can also be used to provide implementations > (backends) for different features which may have default simple > implementations in core and more advanced ones in packages. A package > must somehow "register" itself as a candidate for being a service for > a concrete feature during installation. If we use cl-generic to provide dispatching, the cl-defmethod form does the registration. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-11 21:22 ` Stephen Leake @ 2015-11-12 13:24 ` Filipp Gunbin 2015-11-12 17:11 ` John Wiegley 2015-11-12 19:52 ` Stephen Leake 0 siblings, 2 replies; 209+ messages in thread From: Filipp Gunbin @ 2015-11-12 13:24 UTC (permalink / raw) To: Stephen Leake; +Cc: emacs-devel Stephen, On 11/11/2015 15:22 -0600, Stephen Leake wrote: >> If sufficient amount of important packages use some API and that API >> is rather mature, then the maintainer can decide to move that in core >> to simplify dependency management. > > or to a tarball ELPA package, or to a core ELPA package. > > Perhaps that is too much choice? Mm yes, that's one of my fears, that it will become too complex for a package maintaner. Why not just treat each ELPA package just as an ELPA package and leave the option of bundling it to core maintainers which are better in this area (they'll do it in agreement with package maintainer, of course)? A "tarball" ELPA package is a one thing (that's what I call "bundle into tarball", if I understood right), but "core" ELPA package is another - here I have another fear, that normal and tarball ELPA packages depending on such "core" packages, will have to accurately define versions of the core package they support, and then we have to check all this during the installation. We'll probably have to calculate and offer to user which set of the multiple core packages' multiple versions suits for multiple normal and tarball (perhaps overriden by version from Internet package archive) packages, at the same time probably giving the user to opportunity to specify her preferred version of each requested package. Is it worth the trouble? Or do I understand something wrong? That's why I wrote about the feature latency - maybe it would be enough if a person willing to use latest core features in her package will have to develop it on git emacs and wait for the next official release to make her package available to the public. This will be the same as with new C level features, which we cannot "push quicky" as we can with ELPA package. >> So, I'd suggest that: >> >> - Language features go straight into core (and people working on them >> / using them will have to use git version of Emacs until next >> release) > > By "language features" do you mean things like ada-mode.el (primary mode > for editing Ada source files)? If so, I strongly disagree; ada-mode.el > is very happy as a normal ELPA package. Similar modes for other > languages with a small audience could be in ELPA as well; I have not > looked to see what's actually there. No-no, what I meant were Emacs Lisp libraries extending language, like seq.el. >> The API / SPI notion can also be used to provide implementations >> (backends) for different features which may have default simple >> implementations in core and more advanced ones in packages. A package >> must somehow "register" itself as a candidate for being a service for >> a concrete feature during installation. > > If we use cl-generic to provide dispatching, the cl-defmethod form does > the registration. Thanks, that's one more reason for me to become acquainted with Emacs CL features. Filipp ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-12 13:24 ` Filipp Gunbin @ 2015-11-12 17:11 ` John Wiegley 2015-11-12 19:17 ` Filipp Gunbin 2015-11-12 19:52 ` Stephen Leake 1 sibling, 1 reply; 209+ messages in thread From: John Wiegley @ 2015-11-12 17:11 UTC (permalink / raw) To: Filipp Gunbin; +Cc: Stephen Leake, emacs-devel >>>>> Filipp Gunbin <fgunbin@fastmail.fm> writes: > A "tarball" ELPA package is a one thing (that's what I call "bundle into > tarball", if I understood right), but "core" ELPA package is another I must have missed this distinction. What is the difference between "tarball ELPA" and "core ELPA"? I was thinking of "core" as anything that is in Emacs.git. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-12 17:11 ` John Wiegley @ 2015-11-12 19:17 ` Filipp Gunbin 2015-11-12 19:31 ` John Wiegley 2015-11-14 10:16 ` Stephen Leake 0 siblings, 2 replies; 209+ messages in thread From: Filipp Gunbin @ 2015-11-12 19:17 UTC (permalink / raw) To: Stephen Leake; +Cc: emacs-devel On 12/11/2015 09:11 -0800, John Wiegley wrote: >>>>>> Filipp Gunbin <fgunbin@fastmail.fm> writes: > >> A "tarball" ELPA package is a one thing (that's what I call "bundle into >> tarball", if I understood right), but "core" ELPA package is another > > I must have missed this distinction. What is the difference between "tarball > ELPA" and "core ELPA"? I was thinking of "core" as anything that is in > Emacs.git. If I got it right, a "tarball" package is copied from elpa.git into the tarball at release time. This is to bundle package so that Internet is not required to install it (whether or not it is installed by default). "core" package is developed in emacs.git (because core code depends on it and we have to have full environment in the repo), but then can be updated from elpa if new version is available. This is to allow frequent updates of such packages. If I didn't get it right, then probably other package maintainers would feel a bit lost, too, unless we provide concise explanation of this separation. Filipp ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-12 19:17 ` Filipp Gunbin @ 2015-11-12 19:31 ` John Wiegley 2015-11-14 10:16 ` Stephen Leake 1 sibling, 0 replies; 209+ messages in thread From: John Wiegley @ 2015-11-12 19:31 UTC (permalink / raw) To: Filipp Gunbin; +Cc: Stephen Leake, emacs-devel >>>>> Filipp Gunbin <fgunbin@fastmail.fm> writes: > "core" package is developed in emacs.git (because core code depends on it > and we have to have full environment in the repo), but then can be updated > from elpa if new version is available. This is to allow frequent updates of > such packages. Ah, that makes perfect sense, thanks. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-12 19:17 ` Filipp Gunbin 2015-11-12 19:31 ` John Wiegley @ 2015-11-14 10:16 ` Stephen Leake 1 sibling, 0 replies; 209+ messages in thread From: Stephen Leake @ 2015-11-14 10:16 UTC (permalink / raw) To: Filipp Gunbin; +Cc: emacs-devel Filipp Gunbin <fgunbin@fastmail.fm> writes: > On 12/11/2015 09:11 -0800, John Wiegley wrote: > >>>>>>> Filipp Gunbin <fgunbin@fastmail.fm> writes: >> >>> A "tarball" ELPA package is a one thing (that's what I call "bundle into >>> tarball", if I understood right), but "core" ELPA package is another >> >> I must have missed this distinction. What is the difference between "tarball >> ELPA" and "core ELPA"? I was thinking of "core" as anything that is in >> Emacs.git. > > If I got it right, a "tarball" package is copied from elpa.git into the > tarball at release time. This is to bundle package so that Internet is > not required to install it (whether or not it is installed by default). > > "core" package is developed in emacs.git (because core code depends on > it and we have to have full environment in the repo), but then can be > updated from elpa if new version is available. This is to allow > frequent updates of such packages. Yes. I'm working on writing this up for admin/notes/elpa. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-12 13:24 ` Filipp Gunbin 2015-11-12 17:11 ` John Wiegley @ 2015-11-12 19:52 ` Stephen Leake 2015-11-13 13:06 ` Filipp Gunbin 1 sibling, 1 reply; 209+ messages in thread From: Stephen Leake @ 2015-11-12 19:52 UTC (permalink / raw) To: Filipp Gunbin; +Cc: emacs-devel Filipp Gunbin <fgunbin@fastmail.fm> writes: > Stephen, > > On 11/11/2015 15:22 -0600, Stephen Leake wrote: > >>> If sufficient amount of important packages use some API and that API >>> is rather mature, then the maintainer can decide to move that in core >>> to simplify dependency management. >> >> or to a tarball ELPA package, or to a core ELPA package. >> >> Perhaps that is too much choice? > > Mm yes, that's one of my fears, that it will become too complex for a > package maintaner. Why not just treat each ELPA package just as an ELPA > package and leave the option of bundling it to core maintainers which > are better in this area (they'll do it in agreement with package > maintainer, of course)? > > A "tarball" ELPA package is a one thing (that's what I call "bundle into > tarball", if I understood right), Yes. We have not implemented this yet, but I'm imagining there is a list of these in the Gnu Emacs Makefile somewhere (probably in a separate file read by the Makefile). I don't think there will need to be any metadata in the package files for this. Declaring an ELPA package to be a tarball package does impose some restrictions on the package maintainer; they have to synchronize with each Emacs release, and accept the same review/oversight as core code. > but "core" ELPA package is another - > here I have another fear, that normal and tarball ELPA packages > depending on such "core" packages, will have to accurately define > versions of the core package they support, and then we have to check all > this during the installation. I don't see why that is different from depending on a normal ELPA package. > We'll probably have to calculate and offer to user which set of the > multiple core packages' multiple versions suits for multiple normal > and tarball (perhaps overriden by version from Internet package > archive) packages, at the same time probably giving the user to > opportunity to specify her preferred version of each requested > package. Is it worth the trouble? Or do I understand something wrong? Emacs does not support multiple versions of packages available simultaneously; there is only one instance of a package that is first in load-path. You can end up with one copy in the installed Emacs distribution, and one in ~/.emacs.d/elpa. But the elpa one will take precedence; that is the only one that other packages have to worry about. It either meets their dependency requirement, or not. > That's why I wrote about the feature latency - maybe it would be enough > if a person willing to use latest core features in her package will have > to develop it on git emacs and wait for the next official release to > make her package available to the public. This will be the same as with > new C level features, which we cannot "push quicky" as we can with ELPA > package. That's the main reason to make a package available in both core and ELPA: users of the released version of Emacs can use the latest version of the core ELPA package from ELPA, overriding the copy in their installation. >>> So, I'd suggest that: >>> >>> - Language features go straight into core (and people working on them >>> / using them will have to use git version of Emacs until next >>> release) > > No-no, what I meant were Emacs Lisp libraries extending language, like > seq.el. That's a good candidate for a core ELPA package. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-12 19:52 ` Stephen Leake @ 2015-11-13 13:06 ` Filipp Gunbin 2015-11-14 10:30 ` Stephen Leake 0 siblings, 1 reply; 209+ messages in thread From: Filipp Gunbin @ 2015-11-13 13:06 UTC (permalink / raw) To: Stephen Leake; +Cc: emacs-devel On 12/11/2015 13:52 -0600, Stephen Leake wrote: >> A "tarball" ELPA package is a one thing (that's what I call "bundle into >> tarball", if I understood right), > > Yes. We have not implemented this yet, but I'm imagining there is a list > of these in the Gnu Emacs Makefile somewhere (probably in a separate > file read by the Makefile). I don't think there will need to be any > metadata in the package files for this. > > Declaring an ELPA package to be a tarball package does impose some > restrictions on the package maintainer; they have to synchronize with > each Emacs release, and accept the same review/oversight as core code. They'll just have to make sure that a single version (which is going to be bundled in a tarball) works good with an Emacs release being prepared. >> but "core" ELPA package is another - >> here I have another fear, that normal and tarball ELPA packages >> depending on such "core" packages, will have to accurately define >> versions of the core package they support, and then we have to check all >> this during the installation. > > I don't see why that is different from depending on a normal ELPA > package. I think it's their dependants what make them different from tarball and normal packages. Emacs core provides API, which others use. A normal package declares which versions of this API it is supposed to work against. With core packages, Emacs still provides API, but it now consists of a static part (C level & core) and dynamic part (core packages, which can later be updated from ELPA - correct me if I'm wrong). So, a package should independently define which core version it works agains and which core package(s) version(s) it works against. Here's where I see the complexity with multiple packages installed on user request with package manager, which I tried to describe below. >> We'll probably have to calculate and offer to user which set of the >> multiple core packages' multiple versions suits for multiple normal >> and tarball (perhaps overriden by version from Internet package >> archive) packages, at the same time probably giving the user to >> opportunity to specify her preferred version of each requested >> package. Is it worth the trouble? Or do I understand something wrong? > > Emacs does not support multiple versions of packages available > simultaneously; there is only one instance of a package that is first in > load-path. > > You can end up with one copy in the installed Emacs distribution, and > one in ~/.emacs.d/elpa. But the elpa one will take precedence; that is > the only one that other packages have to worry about. It either meets > their dependency requirement, or not. Of course, I was talking about the set of available versions which could be installed and from which a user or a package manager should choose. >> That's why I wrote about the feature latency - maybe it would be enough >> if a person willing to use latest core features in her package will have >> to develop it on git emacs and wait for the next official release to >> make her package available to the public. This will be the same as with >> new C level features, which we cannot "push quicky" as we can with ELPA >> package. > > That's the main reason to make a package available in both core and ELPA: > users of the released version of Emacs can use the latest version of the > core ELPA package from ELPA, overriding the copy in their installation. Yes, but it can introduce complexities I wrote of above. Filipp ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-13 13:06 ` Filipp Gunbin @ 2015-11-14 10:30 ` Stephen Leake 2015-11-17 13:01 ` Filipp Gunbin 2015-11-17 15:51 ` Tom Tromey 0 siblings, 2 replies; 209+ messages in thread From: Stephen Leake @ 2015-11-14 10:30 UTC (permalink / raw) To: Filipp Gunbin; +Cc: emacs-devel Filipp Gunbin <fgunbin@fastmail.fm> writes: > On 12/11/2015 13:52 -0600, Stephen Leake wrote: > >> I don't see why that is different from depending on a normal ELPA >> package. > > I think it's their dependants what make them different from tarball and > normal packages. > > Emacs core provides API, which others use. A normal package declares > which versions of this API it is supposed to work against. > > With core packages, Emacs still provides API, but it now consists of a > static part (C level & core) and dynamic part (core packages, which can > later be updated from ELPA - correct me if I'm wrong). So, a package > should independently define which core version it works agains and which > core package(s) version(s) it works against. package.el dependencies can only specify a minimum version, not a maximum. there is no way that a normal ELPA package can declare that it works with seq.el 1.0 but not seq.el 1.1 So if emacs 25 contains a core ELPA package seq.el 1.0, the declaration ;; Package-Requires: ((emacs "25.1")) is equivalent to: ;; Package-Requires: ((emacs "25.1") (seq "1.0)) If seq.el 1.1 is later released via the Gnu ELPA server, it will be used in either case. Listing a core ELPA package explicitly is only necessary when the emacs version is less than the first version that included the core ELPA package version. On the other hand, it doesn't hurt, so it's probably best to recommend listing all ELPA packages explicitly. >>> We'll probably have to calculate and offer to user which set of the >>> multiple core packages' multiple versions suits for multiple normal >>> and tarball (perhaps overriden by version from Internet package >>> archive) packages, at the same time probably giving the user to >>> opportunity to specify her preferred version of each requested >>> package. Is it worth the trouble? Or do I understand something wrong? >> >> Emacs does not support multiple versions of packages available >> simultaneously; there is only one instance of a package that is first in >> load-path. >> >> You can end up with one copy in the installed Emacs distribution, and >> one in ~/.emacs.d/elpa. But the elpa one will take precedence; that is >> the only one that other packages have to worry about. It either meets >> their dependency requirement, or not. > > Of course, I was talking about the set of available versions which could > be installed and from which a user or a package manager should choose. I still don't see a problem. We have an example of a core ELPA package now; ada-mode. version 4.3 is in emacs git; version 5.1.8 is in ELPA (if I ever get 5.x to be fast enough on huge files, I'll delete 4.3 from core). package.el has no issues with this. Similar things can occur when there are different versions of the same package in multiple repositories. In that sense, emacs git is just another package repository. Can you be more explicit about what problem you foresee? Give an example of a package that would cause a problem. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-14 10:30 ` Stephen Leake @ 2015-11-17 13:01 ` Filipp Gunbin 2015-11-17 16:18 ` Stephen Leake 2015-11-17 15:51 ` Tom Tromey 1 sibling, 1 reply; 209+ messages in thread From: Filipp Gunbin @ 2015-11-17 13:01 UTC (permalink / raw) To: Stephen Leake; +Cc: emacs-devel Stephen, On 14/11/2015 04:30 -0600, Stephen Leake wrote: > Filipp Gunbin <fgunbin@fastmail.fm> writes: > >> On 12/11/2015 13:52 -0600, Stephen Leake wrote: >> >>> I don't see why that is different from depending on a normal ELPA >>> package. >> >> I think it's their dependants what make them different from tarball and >> normal packages. >> >> Emacs core provides API, which others use. A normal package declares >> which versions of this API it is supposed to work against. >> >> With core packages, Emacs still provides API, but it now consists of a >> static part (C level & core) and dynamic part (core packages, which can >> later be updated from ELPA - correct me if I'm wrong). So, a package >> should independently define which core version it works agains and which >> core package(s) version(s) it works against. > > package.el dependencies can only specify a minimum version, not a > maximum. there is no way that a normal ELPA package can declare that it > works with seq.el 1.0 but not seq.el 1.1 My words were more of a theoretical speculation rather than discussion of the current state of package.el. Some parts of API may be deprecated and removed, so it may be the case that a current package is not updated instantly and need to use some previous version of core package. While having a "single snapshot" of Emacs + core packages does not cause such issues (even if package does not specify maximum version which author of course does not know in advance, the package just doesn’t work and so the user can downgrade to previous "snapshot", that is, previous Emacs version), separate core packages update after installation of such a "snapshot" might move forward and thus break some normal package (and downgrade will not help - the user will not know what to downgrade - what package? or core emacs? And how can I downgrade a single (core) package?). Just theory, again. Ignore if it is irrelevant and I’m complicating things too much. > So if emacs 25 contains a core ELPA package seq.el 1.0, the declaration > > ;; Package-Requires: ((emacs "25.1")) > > is equivalent to: > > ;; Package-Requires: ((emacs "25.1") (seq "1.0)) > > If seq.el 1.1 is later released via the Gnu ELPA server, it will be used > in either case. Will the user have the option to continue to use the tarball version instead of newer ELPA version? Or choosing which ELPA version to use? This may be needed when she uses previous major Emacs release, and current ELPA package version requires newer core APIs. >>>> We'll probably have to calculate and offer to user which set of the >>>> multiple core packages' multiple versions suits for multiple normal >>>> and tarball (perhaps overriden by version from Internet package >>>> archive) packages, at the same time probably giving the user to >>>> opportunity to specify her preferred version of each requested >>>> package. Is it worth the trouble? Or do I understand something wrong? >>> >>> Emacs does not support multiple versions of packages available >>> simultaneously; there is only one instance of a package that is first in >>> load-path. >>> >>> You can end up with one copy in the installed Emacs distribution, and >>> one in ~/.emacs.d/elpa. But the elpa one will take precedence; that is >>> the only one that other packages have to worry about. It either meets >>> their dependency requirement, or not. >> >> Of course, I was talking about the set of available versions which could >> be installed and from which a user or a package manager should choose. > > I still don't see a problem. > > We have an example of a core ELPA package now; ada-mode. version 4.3 is > in emacs git; version 5.1.8 is in ELPA (if I ever get 5.x to be fast > enough on huge files, I'll delete 4.3 from core). > > package.el has no issues with this. > > Similar things can occur when there are different versions of the same > package in multiple repositories. In that sense, emacs git is just > another package repository. > > Can you be more explicit about what problem you foresee? Give an example > of a package that would cause a problem. For now, I don’t know of any practical examples. But thanks for your time on this. Filipp ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-17 13:01 ` Filipp Gunbin @ 2015-11-17 16:18 ` Stephen Leake 0 siblings, 0 replies; 209+ messages in thread From: Stephen Leake @ 2015-11-17 16:18 UTC (permalink / raw) To: Filipp Gunbin; +Cc: emacs-devel Filipp Gunbin <fgunbin@fastmail.fm> writes: >> So if emacs 25 contains a core ELPA package seq.el 1.0, the declaration >> >> ;; Package-Requires: ((emacs "25.1")) >> >> is equivalent to: >> >> ;; Package-Requires: ((emacs "25.1") (seq "1.0)) >> >> If seq.el 1.1 is later released via the Gnu ELPA server, it will be used >> in either case. > > Will the user have the option to continue to use the tarball version > instead of newer ELPA version? Yes, they may install it or not; my statement above assumed the ELPA package was installed and updated. > Or choosing which ELPA version to use? Technically, there is only one ELPA version; the one shown by `list-packages'. However, after user installs one version, they may opt to not install an update. If they delete the installed version, they can only install the latest version. That's all just using the commands in package.el; users can of course save code and copy it into and out of `load-path' manually. > This may be needed when she uses previous major Emacs release, and > current ELPA package version requires newer core APIs. If there is a compatible ELPA package version that is more recent than the version bundled with that Emacs version, but older than the latest ELPA version, yes. But that's not supported by the current ELPA server and package.el. So at the moment, users of older Emacsen are stuck with either the bundled package, or the latest package. The maintainer of the ELPA package can provide compatibility code so it is useful with older Emacsen. But that gets harder the farther back you go; my current limit is 24.3. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-14 10:30 ` Stephen Leake 2015-11-17 13:01 ` Filipp Gunbin @ 2015-11-17 15:51 ` Tom Tromey 1 sibling, 0 replies; 209+ messages in thread From: Tom Tromey @ 2015-11-17 15:51 UTC (permalink / raw) To: Stephen Leake; +Cc: Filipp Gunbin, emacs-devel Stephen> package.el dependencies can only specify a minimum version, not a Stephen> maximum. there is no way that a normal ELPA package can declare that it Stephen> works with seq.el 1.0 but not seq.el 1.1 If I had to do it all over, I'd require semver for Emacs packages. Maybe this could be done optionally somehow. Tom ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-11 9:25 ` Stephen Leake 2015-11-11 13:52 ` Filipp Gunbin @ 2015-11-11 17:02 ` Richard Stallman 2015-11-11 17:24 ` John Wiegley 2015-11-14 17:23 ` Jorge A. Alfaro-Murillo 2 siblings, 1 reply; 209+ messages in thread From: Richard Stallman @ 2015-11-11 17:02 UTC (permalink / raw) To: Stephen Leake; +Cc: 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. ]]] > Another choice would be to say "use MELPA for experimental packages", > but it is already too late for that. If my memory serves, MELPA contains packages we would like to include in Emacs, but we can't get legal papers for them. We are seeking people to write replacements for those, though we wish it were not necessary. We would like developers of future useful packages to want to put their packages into the GNU ELPA. To recommend putting some packages -- whatever they might be -- into MELPA would work against these goals. It would have been a bad approach. > Which raises the question; what is the rationale for moving from MELPA > to Gnu ELPA? If a package is useful to recommend, and we CAN get papers for it, we definitely want to move it to GNU ELPA. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-11 17:02 ` Richard Stallman @ 2015-11-11 17:24 ` John Wiegley 2015-11-12 14:02 ` Phillip Lord 0 siblings, 1 reply; 209+ messages in thread From: John Wiegley @ 2015-11-11 17:24 UTC (permalink / raw) To: Richard Stallman; +Cc: Stephen Leake, emacs-devel >>>>> Richard Stallman <rms@gnu.org> writes: > If a package is useful to recommend, and we CAN get papers for it, we > definitely want to move it to GNU ELPA. Yes, this is why I want to clearly define ELPA policy, and streamline things as much as possible for developers and users: so that it becomes a more attractive means for distributing Emacs packages. I think many people may be largely ignoring it right now, and so they reach for MELPA. Since so many people contribute to MELPA, they consider it a more attractive distribution platform. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-11 17:24 ` John Wiegley @ 2015-11-12 14:02 ` Phillip Lord 2015-11-12 17:11 ` John Wiegley ` (2 more replies) 0 siblings, 3 replies; 209+ messages in thread From: Phillip Lord @ 2015-11-12 14:02 UTC (permalink / raw) To: Richard Stallman; +Cc: Stephen Leake, emacs-devel John Wiegley <jwiegley@gmail.com> writes: >>>>>> Richard Stallman <rms@gnu.org> writes: > >> If a package is useful to recommend, and we CAN get papers for it, we >> definitely want to move it to GNU ELPA. > > Yes, this is why I want to clearly define ELPA policy, and streamline things > as much as possible for developers and users: so that it becomes a more > attractive means for distributing Emacs packages. I think many people may be > largely ignoring it right now, and so they reach for MELPA. Since so many > people contribute to MELPA, they consider it a more attractive distribution > platform. MELPA is also *easier* to contribute to. Aside from copyright issues, it involves writing something that looks like lisp, testing on your local fork, then a PR. With GNU ELPA, it involves some fairly obscure git cleverness. GNU ELPA could be made easier by allowing recipes, and by accepting PRs. This avoids the necessity to have commit access to GNU ELPA to contribute. Finally, I think that core devs should contribute to individual packages by PR to their repos. Phil ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-12 14:02 ` Phillip Lord @ 2015-11-12 17:11 ` John Wiegley 2015-11-12 19:59 ` Stephen Leake 2015-11-13 21:58 ` Richard Stallman 2 siblings, 0 replies; 209+ messages in thread From: John Wiegley @ 2015-11-12 17:11 UTC (permalink / raw) To: Phillip Lord; +Cc: Stephen Leake, Richard Stallman, emacs-devel >>>>> Phillip Lord <phillip.lord@russet.org.uk> writes: > With GNU ELPA, it involves some fairly obscure git cleverness. GNU ELPA > could be made easier by allowing recipes, and by accepting PRs. This avoids > the necessity to have commit access to GNU ELPA to contribute. We can always use the power of Git here: Keep a fork of ELPA.git on GitHub, accept PRs there, and periodically merge back in. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-12 14:02 ` Phillip Lord 2015-11-12 17:11 ` John Wiegley @ 2015-11-12 19:59 ` Stephen Leake 2015-11-13 21:58 ` Richard Stallman 2 siblings, 0 replies; 209+ messages in thread From: Stephen Leake @ 2015-11-12 19:59 UTC (permalink / raw) To: Phillip Lord; +Cc: Richard Stallman, emacs-devel phillip.lord@russet.org.uk (Phillip Lord) writes: > John Wiegley <jwiegley@gmail.com> writes: > >>>>>>> Richard Stallman <rms@gnu.org> writes: >> >>> If a package is useful to recommend, and we CAN get papers for it, we >>> definitely want to move it to GNU ELPA. >> >> Yes, this is why I want to clearly define ELPA policy, and streamline things >> as much as possible for developers and users: so that it becomes a more >> attractive means for distributing Emacs packages. I think many people may be >> largely ignoring it right now, and so they reach for MELPA. Since so many >> people contribute to MELPA, they consider it a more attractive distribution >> platform. > > > MELPA is also *easier* to contribute to. Aside from copyright issues, it > involves writing something that looks like lisp, testing on your local > fork, then a PR. > > With GNU ELPA, it involves some fairly obscure git cleverness. It's only normal git cleverness; there's nothing special about the Gnu ELPA git. Unless you are using an "external" package, perhaps. I can understand treating all of git as "obscure", if that's what you meant. I much prefer monotone. > GNU ELPA could be made easier by allowing recipes, and by accepting > PRs. This avoids the necessity to have commit access to GNU ELPA to > contribute. "PR" is "Pull Request"? Doesn't that mean "pull from my git repository"? Or is it more general than that? > Finally, I think that core devs should contribute to individual packages > by PR to their repos. I'm guessing "their repos" is _not_ Gnu ELPA git? So this only applies to packages that have a primary repo that is not Gnu ELPA git. I agree that any one that edits a Gnu ELPA package in Gnu ELPA git should also notify the upstream project if there is one. But they do not have to wait for approval if it's a critical bug. Normal ettiquette should apply of course. This is more important for tarball and core ELPA packages, since they are part of the blessed Emacs standard library; Emacs developers can edit those as if they were in core. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-12 14:02 ` Phillip Lord 2015-11-12 17:11 ` John Wiegley 2015-11-12 19:59 ` Stephen Leake @ 2015-11-13 21:58 ` Richard Stallman 2015-11-14 1:15 ` JJ Asghar 2 siblings, 1 reply; 209+ messages in thread From: Richard Stallman @ 2015-11-13 21:58 UTC (permalink / raw) To: Phillip Lord; +Cc: stephen_leake, 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. ]]] > MELPA is also *easier* to contribute to. Aside from copyright issues, it > involves writing something that looks like lisp, testing on your local > fork, then a PR. What is a PR? > With GNU ELPA, it involves some fairly obscure git cleverness. GNU ELPA > could be made easier by allowing recipes, and by accepting PRs. This > avoids the necessity to have commit access to GNU ELPA to contribute. Maybe we should do this (but I don't know what a PR is). -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-13 21:58 ` Richard Stallman @ 2015-11-14 1:15 ` JJ Asghar 0 siblings, 0 replies; 209+ messages in thread From: JJ Asghar @ 2015-11-14 1:15 UTC (permalink / raw) To: emacs-devel On 11/13/15 3:58 PM, Richard Stallman wrote: > > MELPA is also *easier* to contribute to. Aside from copyright issues, it > > involves writing something that looks like lisp, testing on your local > > fork, then a PR. > > What is a PR? A great detailed explanation of a PR is here[1]. A short explanation is a request to put in a patch to a repository. [1]: https://help.github.com/articles/using-pull-requests/ -JJ ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-11 9:25 ` Stephen Leake 2015-11-11 13:52 ` Filipp Gunbin 2015-11-11 17:02 ` Richard Stallman @ 2015-11-14 17:23 ` Jorge A. Alfaro-Murillo 2015-11-15 16:37 ` John Wiegley 2 siblings, 1 reply; 209+ messages in thread From: Jorge A. Alfaro-Murillo @ 2015-11-14 17:23 UTC (permalink / raw) To: emacs-devel Stephen Leake writes: > Including a package in tarball ELPA means that the Emacs project > has decided that the package is sufficiently important to be > made immediately available to all Emacs users with no effort on > their part beyond installing Emacs from the tarball. > > That implies a certain level of maturity and quality, and > implies that it should be favored over other similar packages. Would that just be packages that are currently in core? Because AUCTeX definitely fits that description. I have always been curious as why it is not in core currently. Best, -- Jorge. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-14 17:23 ` Jorge A. Alfaro-Murillo @ 2015-11-15 16:37 ` John Wiegley 0 siblings, 0 replies; 209+ messages in thread From: John Wiegley @ 2015-11-15 16:37 UTC (permalink / raw) To: Jorge A. Alfaro-Murillo; +Cc: emacs-devel >>>>> Jorge A Alfaro-Murillo <jorge.alfaro-murillo@yale.edu> writes: >> Including a package in tarball ELPA means that the Emacs project has >> decided that the package is sufficiently important to be made immediately >> available to all Emacs users with no effort on their part beyond installing >> Emacs from the tarball. >> >> That implies a certain level of maturity and quality, and implies that it >> should be favored over other similar packages. > Would that just be packages that are currently in core? Because AUCTeX > definitely fits that description. I have always been curious as why it is > not in core currently. No, it wouldn't be just packages currently in core, we could consider others for inclusion as well. AucTeX might be an excellent candidate. I like that ELPA could give us better flexibility about what goes in the tarball, without having to make decisions that directly affect core. John ^ permalink raw reply [flat|nested] 209+ messages in thread
[parent not found: <<86bnb06g7g.fsf@stephe-leake.org>]
[parent not found: <<E1ZwYnH-0004b0-Gu@fencepost.gnu.org>]
* RE: ELPA policy [not found] ` <<E1ZwYnH-0004b0-Gu@fencepost.gnu.org> @ 2015-11-11 17:47 ` Drew Adams 2015-11-11 19:23 ` John Wiegley [not found] ` <<m2twosgx1m.fsf@Vulcan.attlocal.net> 0 siblings, 2 replies; 209+ messages in thread From: Drew Adams @ 2015-11-11 17:47 UTC (permalink / raw) To: rms, Stephen Leake; +Cc: emacs-devel > We would like developers of future useful packages to want to put > their packages into the GNU ELPA. > > To recommend putting some packages -- whatever they might be -- into > MELPA would work against these goals. It would have been a bad > approach. FWIW - I will continue to use MELPA for my libraries, and not GNU ELPA, for one reason: I post my code to Emacs Wiki (to locked pages). MELPA pulls the code from the wiki (daily). I do not need to use GIT etc. This is the way I prefer to work. Call it old-fashioned or bizarre; I don't care. So you might recommend that packages not be put in MELPA, but some will continue to be put there, including perhaps some that you might someday want to include in Emacs. > > Which raises the question; what is the rationale for moving from > > MELPA to Gnu ELPA? > > If a package is useful to recommend, and we CAN get papers for it, > we definitely want to move it to GNU ELPA. This was refused by Stefan for my libraries (for which FSF has papers), based on the fact that I do not use GIT, so any updates I make to them would not be done directly in the repository. It was not acceptable to update elsewhere (e.g. the wiki) and then have someone or a program pull from there to the repository when appropriate. So be it. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-11 17:47 ` Drew Adams @ 2015-11-11 19:23 ` John Wiegley 2015-11-11 19:58 ` Drew Adams 2015-11-11 23:27 ` Richard Stallman [not found] ` <<m2twosgx1m.fsf@Vulcan.attlocal.net> 1 sibling, 2 replies; 209+ messages in thread From: John Wiegley @ 2015-11-11 19:23 UTC (permalink / raw) To: Drew Adams; +Cc: Stephen Leake, rms, emacs-devel >>>>> Drew Adams <drew.adams@oracle.com> writes: > I will continue to use MELPA for my libraries, and not GNU ELPA, for one > reason: > > I post my code to Emacs Wiki (to locked pages). MELPA pulls the code from > the wiki (daily). I do not need to use GIT etc. > > This is the way I prefer to work. Call it old-fashioned or bizarre; I don't > care. This is a legitimate complaint, Drew. One of the things I want to avoid with ELPA is making it harder for people to contribute to than other alternatives. Since pulling in data from the Web indiscriminately is not possible for this project (we have to make sure we're not unwittingly including code without a proper copyright assignment), perhaps we need as an "integrator": someone willing to guide the update of ELPA from various sources on the Web, keeping an eye out for changes that might affect copyright. It wouldn't be too hard to setup a process that updates a local clone of ELPA with all your latest versions from GitHub and EmacsWiki, and then to check over a diff of those changes before pushing them to ELPA. One might even suggest that you could do this yourself, as part of your own release work. Would that be something you'd find worth doing? John ^ permalink raw reply [flat|nested] 209+ messages in thread
* RE: ELPA policy 2015-11-11 19:23 ` John Wiegley @ 2015-11-11 19:58 ` Drew Adams 2015-11-11 23:27 ` Richard Stallman 1 sibling, 0 replies; 209+ messages in thread From: Drew Adams @ 2015-11-11 19:58 UTC (permalink / raw) To: John Wiegley; +Cc: Stephen Leake, rms, emacs-devel > This is a legitimate complaint, Drew. One of the things I want to avoid > with ELPA is making it harder for people to contribute to than other > alternatives. > > Since pulling in data from the Web indiscriminately is not possible for > this project (we have to make sure we're not unwittingly including code without > a proper copyright assignment), perhaps we need as an "integrator": someone > willing to guide the update of ELPA from various sources on the Web, > keeping an eye out for changes that might affect copyright. I'm glad to hear that; all of it. And thanks for replying. > It wouldn't be too hard to setup a process that updates a local clone of > ELPA with all your latest versions from GitHub and EmacsWiki, and then to check > over a diff of those changes before pushing them to ELPA. One might even > suggest that you could do this yourself, as part of your own release work. > Would that be something you'd find worth doing? I don't want to develop anything like that; sorry. I don't want to fiddle with a local GIT clone. I would be willing to identify versions of my libraries to be pulled at specific times ("releases") from the wiki (or from MELPA) to be put (updated) in GNU ELPA. I doubt that my case is typical, however. I'm not saying that Emacs Dev needs to cater to such a case. I'm just explaining that I update my libraries locally, without GIT etc., and I upload updates to the wiki. They are automatically pulled to MELPA. What do I need to know, currently? Only how to write some Lisp (a library) and how to copy and paste it into a Web page. Simple. Maybe too simple to accommodate by Emacs Dev. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-11 19:23 ` John Wiegley 2015-11-11 19:58 ` Drew Adams @ 2015-11-11 23:27 ` Richard Stallman 2015-11-12 0:35 ` Artur Malabarba ` (2 more replies) 1 sibling, 3 replies; 209+ messages in thread From: Richard Stallman @ 2015-11-11 23:27 UTC (permalink / raw) To: John Wiegley; +Cc: stephen_leake, drew.adams, 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. ]]] > Since pulling in data from the Web indiscriminately is not > possible for this project (we have to make sure we're not > unwittingly including code without a proper copyright assignment), > perhaps we need as an "integrator": someone willing to guide the > update of ELPA from various sources on the Web, keeping an eye out > for changes that might affect copyright. What we need to solve Drew's problem is to merge changes into a few specific files from a specific place, and commit them using git. Isn't that easy enough to do? There could be one page where he provides the commit log info. Whenever that page changes (we could check every 5 minutes), our demon could merge in all the files which have changed. They it would email the diffs to Drew so he could confirm what he installed. Thus, when Drew wants to install a new version, he would change the other pages first, then write the change log text into the log page. Then wait 5 minutes and it's done. This is assuming there are no other obstacles aside from the mechanics of installing changes into our repository. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-11 23:27 ` Richard Stallman @ 2015-11-12 0:35 ` Artur Malabarba 2015-11-12 0:42 ` Dmitry Gutov 2015-11-12 22:34 ` Richard Stallman 2015-11-12 6:49 ` Stephen Leake [not found] ` <<86oaezemp9.fsf@stephe-leake.org> 2 siblings, 2 replies; 209+ messages in thread From: Artur Malabarba @ 2015-11-12 0:35 UTC (permalink / raw) To: Richard Stallman; +Cc: John Wiegley, stephen_leake, Drew Adams, emacs-devel [-- Attachment #1: Type: text/plain, Size: 787 bytes --] On 11 Nov 2015 11:27 pm, "Richard Stallman" <rms@gnu.org> wrote: > > There could be one page where he provides the commit log info. > Whenever that page changes (we could check every 5 minutes), our demon > could merge in all the files which have changed. They it would email > the diffs to Drew so he could confirm what he installed. Richard, do think such as system would be viable copyright-wise? Of course, we would only do this when the author assigns copyright, but there's a very real possibility that a careless maintainer might add someone else's code to this page. And then this (non-copyright-assigned) code would be automatically pulled and committed to Elpa. I ask this because if we are OK with this risk then I'm perfectly willing to write such a script (eager, even). [-- Attachment #2: Type: text/html, Size: 949 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-12 0:35 ` Artur Malabarba @ 2015-11-12 0:42 ` Dmitry Gutov 2015-11-12 22:34 ` Richard Stallman 1 sibling, 0 replies; 209+ messages in thread From: Dmitry Gutov @ 2015-11-12 0:42 UTC (permalink / raw) To: bruce.connor.am, Richard Stallman Cc: John Wiegley, stephen_leake, Drew Adams, emacs-devel On 11/12/2015 02:35 AM, Artur Malabarba wrote: > Richard, do think such as system would be viable copyright-wise? > Of course, we would only do this when the author assigns copyright, but > there's a very real possibility that a careless maintainer might add > someone else's code to this page. And then this (non-copyright-assigned) > code would be automatically pulled and committed to Elpa. We should also consider whether this is sound from the security standpoint. I mean, pushing the code to ELPA without any review from the core developers. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-12 0:35 ` Artur Malabarba 2015-11-12 0:42 ` Dmitry Gutov @ 2015-11-12 22:34 ` Richard Stallman 2015-11-13 0:49 ` Artur Malabarba 1 sibling, 1 reply; 209+ messages in thread From: Richard Stallman @ 2015-11-12 22:34 UTC (permalink / raw) To: bruce.connor.am; +Cc: jwiegley, stephen_leake, drew.adams, 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. ]]] > Richard, do think such as system would be viable copyright-wise? In terms of copyright, there is no difference between the system I proposed (installing what Drew puts in certain web pages) and the method Drew doesn't like, which is for him to install the same changes via Git. Whichever method he uses, he technically could install code written by others whom we don't have papers for. If we permit him to use Git to install changes, that entails trusting him to handle this responsibility. If we can trust him to do it with one method, we can trust him to do it with the other method. > We should also consider whether this is sound from the security > standpoint. I mean, pushing the code to ELPA without any review from the > core developers. The same would occur if we invite him to install changes in his packages through Git. If we can check enough one way, we can check enough the other way. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-12 22:34 ` Richard Stallman @ 2015-11-13 0:49 ` Artur Malabarba 0 siblings, 0 replies; 209+ messages in thread From: Artur Malabarba @ 2015-11-13 0:49 UTC (permalink / raw) To: Richard Stallman; +Cc: John Wiegley, stephen_leake, Drew Adams, emacs-devel [-- Attachment #1: Type: text/plain, Size: 937 bytes --] On 12 Nov 2015 10:34 pm, "Richard Stallman" <rms@gnu.org> wrote: > > Richard, do think such as system would be viable copyright-wise? > > In terms of copyright, there is no difference between the system I > proposed (installing what Drew puts in certain web pages) and the > method Drew doesn't like, which is for him to install the same changes > via Git. > > Whichever method he uses, he technically could install code written by > others whom we don't have papers for. If we permit him to use Git to > install changes, that entails trusting him to handle this > responsibility. If we can trust him to do it with one method, we can > trust him to do it with the other method. I'm trying to determine whether this method can be employed as a general elpa mechanism. Of course we trust Drew, but would it be acceptable to use such a script with other people who submit packages to Elpa? (assuming the author has assigned copyright) [-- Attachment #2: Type: text/html, Size: 1135 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-11 23:27 ` Richard Stallman 2015-11-12 0:35 ` Artur Malabarba @ 2015-11-12 6:49 ` Stephen Leake 2015-11-12 15:09 ` Drew Adams 2015-11-12 22:33 ` Richard Stallman [not found] ` <<86oaezemp9.fsf@stephe-leake.org> 2 siblings, 2 replies; 209+ messages in thread From: Stephen Leake @ 2015-11-12 6:49 UTC (permalink / raw) To: Richard Stallman; +Cc: John Wiegley, drew.adams, emacs-devel Richard Stallman <rms@gnu.org> writes: > [[[ 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. ]]] > > > Since pulling in data from the Web indiscriminately is not > > possible for this project (we have to make sure we're not > > unwittingly including code without a proper copyright assignment), > > perhaps we need as an "integrator": someone willing to guide the > > update of ELPA from various sources on the Web, keeping an eye out > > for changes that might affect copyright. > > What we need to solve Drew's problem is to merge changes into a few > specific files from a specific place, and commit them using git. > Isn't that easy enough to do? > > There could be one page where he provides the commit log info. > Whenever that page changes (we could check every 5 minutes), our demon > could merge in all the files which have changed. They it would email > the diffs to Drew so he could confirm what he installed. > > Thus, when Drew wants to install a new version, he would change the > other pages first, then write the change log text into the log page. > Then wait 5 minutes and it's done. > > This is assuming there are no other obstacles aside from the > mechanics of installing changes into our repository. Any malicious hacker can drop completely different code in that web page, and thus get it into Gnu ELPA. We will have replaced the security of private machines with whatever web login that web page requires; that's a huge step backwards. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* RE: ELPA policy 2015-11-12 6:49 ` Stephen Leake @ 2015-11-12 15:09 ` Drew Adams 2015-11-12 17:29 ` Alex Schröder 2015-11-12 22:33 ` Richard Stallman 1 sibling, 1 reply; 209+ messages in thread From: Drew Adams @ 2015-11-12 15:09 UTC (permalink / raw) To: Stephen Leake, Richard Stallman; +Cc: John Wiegley, emacs-devel > Any malicious hacker can drop completely different code in that web > page, and thus get it into Gnu ELPA. We will have replaced the > security of private machines with whatever web login that web page > requires; that's a huge step backwards. Again: "I post my code to Emacs Wiki (to locked pages)." But of course that doesn't mean it is uncrackable. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-12 15:09 ` Drew Adams @ 2015-11-12 17:29 ` Alex Schröder 0 siblings, 0 replies; 209+ messages in thread From: Alex Schröder @ 2015-11-12 17:29 UTC (permalink / raw) To: emacs-devel Drew Adams <drew.adams@oracle.com> writes: > Again: "I post my code to Emacs Wiki (to locked pages)." > > But of course that doesn't mean it is uncrackable. Given that Emacs Wiki currently does not use HTTPS, we should consider Emacs Wiki insecure. Even then, the admin passwords are shared and there are no other efforts made to identify editors once they present the admin password. The current setup only protects against the simplest of threat models, e.g. spammers, vandals, well-meaning contributors that want to edit wiki pages instead of informing maintainers, and so on. I think that's the threat model wiki pages need to defend against, but I suspect that's not good enough for an inclusion into Emacs Core. -- Public Key Fingerprint = DF94 46EB 7B78 4638 7CCC 018B C78C A29B ACEC FEAE ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-12 6:49 ` Stephen Leake 2015-11-12 15:09 ` Drew Adams @ 2015-11-12 22:33 ` Richard Stallman 2015-11-14 10:33 ` Stephen Leake 1 sibling, 1 reply; 209+ messages in thread From: Richard Stallman @ 2015-11-12 22:33 UTC (permalink / raw) To: Stephen Leake; +Cc: jwiegley, drew.adams, 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. ]]] > Any malicious hacker can drop completely different code in that web > page, and thus get it into Gnu ELPA. Drew said the pages were locked. Doesn't that mean that only he has access to change them? > We will have replaced the security of private machines with whatever web > login that web page requires; that's a huge step backwards. I think you are concerned that someone might break the security on that other server and then install changes on it using Drew's account. In general, someone who breaks the security on a machine used by an Emacs contributor might be able to insert changes in Emacs by pretending to be that contributor. I don't think this is fundamentally different. But maybe the web site's security is not quite as good. We can make the security tighter. Drew, are you willing to GPG-sign your new versions? -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-12 22:33 ` Richard Stallman @ 2015-11-14 10:33 ` Stephen Leake 2015-11-14 21:05 ` Richard Stallman 0 siblings, 1 reply; 209+ messages in thread From: Stephen Leake @ 2015-11-14 10:33 UTC (permalink / raw) To: Richard Stallman; +Cc: jwiegley, drew.adams, emacs-devel Richard Stallman <rms@gnu.org> writes: > > We will have replaced the security of private machines with whatever web > > login that web page requires; that's a huge step backwards. > > I think you are concerned that someone might break the security on that other > server and then install changes on it using Drew's account. > > In general, someone who breaks the security on a machine used by > an Emacs contributor might be able to insert changes in Emacs > by pretending to be that contributor. I don't think this is > fundamentally different. But maybe the web site's security is > not quite as good. Yes, my concern is about the strength of the web security, as opposed to the strength of Drew's private machine. I suppose there's no a priori reason to assume one is more secure than the other; maybe I'm just reacting to all the news reports about hacking. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-14 10:33 ` Stephen Leake @ 2015-11-14 21:05 ` Richard Stallman 0 siblings, 0 replies; 209+ messages in thread From: Richard Stallman @ 2015-11-14 21:05 UTC (permalink / raw) To: Stephen Leake; +Cc: jwiegley, drew.adams, 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. ]]] > I suppose there's no a priori reason to assume one is more secure than > the other; maybe I'm just reacting to all the news reports about hacking. Would you please call that "cracking"? Hacking is what we do as Emacs developers. See http://stallman.org/articles/on-hacking.html. Anyway, now I understand your concern, and I think it's a valid one. That's why I've proposed another solution. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. ^ permalink raw reply [flat|nested] 209+ messages in thread
[parent not found: <<86oaezemp9.fsf@stephe-leake.org>]
[parent not found: <<E1Zx0QR-0004QE-Ga@fencepost.gnu.org>]
* RE: ELPA policy [not found] ` <<E1Zx0QR-0004QE-Ga@fencepost.gnu.org> @ 2015-11-12 23:05 ` Drew Adams 2015-11-13 7:51 ` Eli Zaretskii ` (2 more replies) 0 siblings, 3 replies; 209+ messages in thread From: Drew Adams @ 2015-11-12 23:05 UTC (permalink / raw) To: rms, Stephen Leake; +Cc: jwiegley, drew.adams, emacs-devel > > Any malicious hacker can drop completely different code in that web > > page, and thus get it into Gnu ELPA. > > Drew said the pages were locked. > Doesn't that mean that only he has access to change them? No, anyone with admin privileges for the wiki has access to do so. There are a few people in this category. And see Alex Schroeder's clarification of what this means. This is not watertight security, by any means. Perhaps one way to look at it is similar to submitting something by email (which would be another possibility, for me). > > We will have replaced the security of private machines with whatever > > web login that web page requires; that's a huge step backwards. > > I think you are concerned that someone might break the security on that > other server and then install changes on it using Drew's account. See above. > In general, someone who breaks the security on a machine used by > an Emacs contributor might be able to insert changes in Emacs > by pretending to be that contributor. I don't think this is > fundamentally different. But maybe the web site's security is > not quite as good. > > We can make the security tighter. Drew, are you willing to GPG-sign > your new versions? I don't really know what that entails. Dunno whether you really want to discuss my case in particular in detail here. Again, I doubt that it is typical. The reason for my initial message about this was to suggest that some people do use MELPA, and that perhaps some way to accommodate them could be devised. But maybe not. To repeat the summary of my original point: So you might recommend that packages not be put in MELPA, but some will continue to be put there, including perhaps some that you might someday want to include in Emacs. Regarding my own case, this was the point: I do not use GIT, so any updates I make to them would not be done directly in the repository. It was not acceptable to update elsewhere (e.g. the wiki) and then have someone or a program pull from there to the repository when appropriate. In sum, some people will post code to MELPA, including some that you might someday want in Emacs. And some input to MELPA comes from the wiki, not from GIT - but this is probably a small portion of what is in MELPA. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-12 23:05 ` Drew Adams @ 2015-11-13 7:51 ` Eli Zaretskii 2015-11-13 22:00 ` Richard Stallman [not found] ` <<E1ZxMOr-0004hb-VH@fencepost.gnu.org> 2 siblings, 0 replies; 209+ messages in thread From: Eli Zaretskii @ 2015-11-13 7:51 UTC (permalink / raw) To: Drew Adams; +Cc: jwiegley, stephen_leake, rms, drew.adams, emacs-devel > Date: Thu, 12 Nov 2015 15:05:50 -0800 (PST) > From: Drew Adams <drew.adams@oracle.com> > Cc: jwiegley@gmail.com, drew.adams@oracle.com, emacs-devel@gnu.org > > Regarding my own case, this was the point: > > I do not use GIT, so any updates I make to them > would not be done directly in the repository. It was not > acceptable to update elsewhere (e.g. the wiki) and then have > someone or a program pull from there to the repository when > appropriate. > > In sum, some people will post code to MELPA, including some > that you might someday want in Emacs. And some input to MELPA > comes from the wiki, not from GIT - but this is probably a small > portion of what is in MELPA. FWIW, I very much doubt that many people nowadays would share Drew's issue with using Git. Using Git is a no-brainer nowadays. I actually think this is a very unique situation, and anyone else who insists on using MELPA doesn't do that for such simple technical reasons. I think the legal paperwork is the main issue, and also perhaps not everyone would like to be accountable for their code practices before the Emacs maintainers and their peculiar requirements and expectations. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-12 23:05 ` Drew Adams 2015-11-13 7:51 ` Eli Zaretskii @ 2015-11-13 22:00 ` Richard Stallman [not found] ` <<E1ZxMOr-0004hb-VH@fencepost.gnu.org> 2 siblings, 0 replies; 209+ messages in thread From: Richard Stallman @ 2015-11-13 22:00 UTC (permalink / raw) To: Drew Adams; +Cc: jwiegley, stephen_leake, drew.adams, 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. ]]] > > We can make the security tighter. Drew, are you willing to GPG-sign > > your new versions? > I don't really know what that entails. It means you would make diffs to show the change to install, plus a log entry, sign that whole thing with GnuPG, and mail it to a certain address. The signature would demonstrate it came from you. Is that ok for you? -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. ^ permalink raw reply [flat|nested] 209+ messages in thread
[parent not found: <<E1ZxMOr-0004hb-VH@fencepost.gnu.org>]
* RE: ELPA policy [not found] ` <<E1ZxMOr-0004hb-VH@fencepost.gnu.org> @ 2015-11-13 23:03 ` Drew Adams 2015-11-14 1:44 ` Richard Stallman 2015-11-14 9:57 ` Achim Gratz 0 siblings, 2 replies; 209+ messages in thread From: Drew Adams @ 2015-11-13 23:03 UTC (permalink / raw) To: rms; +Cc: jwiegley, stephen_leake, emacs-devel > > > We can make the security tighter. Drew, are you willing > > > to GPG-sign your new versions? > > > I don't really know what that entails. > > It means you would make diffs to show the change to install, > plus a log entry, sign that whole thing with GnuPG, and mail > it to a certain address. The signature would demonstrate it > came from you. > > Is that ok for you? I have no problem creating diffs & log entries, and emailing them in. I've mailed in plenty of patches that way. Dunno what "sign that whole thing with GnuPG" entails. What is needed for that (e.g., on MS Windows)? Looking at the doc at https://www.gnupg.org/documentation/howtos.html and http://www.dewinter.com/gnupg_howto/english/GPGMiniHowto-2.html, it seems I would need to install GnuPG from source code, using a C compiler etc. I don't plan to install and use tools such as a C compiler on my laptop, so I guess the answer would be no; sorry. If there were an easy-to-use Windows binary for such signing, then I would probably do as you propose. (I don't do software development anymore. I use MS Windows binaries of Emacs, and I write some Emacs-Lisp code. I do have (an old version of) Cygwin installed, so that I can use a few simple commands from within Emacs. That's about it.) I don't mean to make a big deal about this. I'm not saying no definitively. But AFAIK there is not necessarily even any interest in adding any of the code I've written to Emacs. I don't feel like going through a lot of preparation for nothing. My libraries are there, and have been for quite a while. If someone is really interested in something, let me know and maybe we can work something out. Otherwise, we are likely wasting each other's time here. I don't mean to waste your time. (But I do appreciate your having considered this.) Again, my original point was about MELPA and updates to it from the wiki. And again, my use of MELPA is likely not typical. Perhaps I should have said nothing at all about it. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-13 23:03 ` Drew Adams @ 2015-11-14 1:44 ` Richard Stallman 2015-11-15 9:28 ` Michael Heerdegen 2015-11-14 9:57 ` Achim Gratz 1 sibling, 1 reply; 209+ messages in thread From: Richard Stallman @ 2015-11-14 1:44 UTC (permalink / raw) To: Drew Adams; +Cc: jwiegley, stephen_leake, 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. ]]] > Dunno what "sign that whole thing with GnuPG" entails. What > is needed for that (e.g., on MS Windows)? GnuPG works on Windows. I expect we can find someone to help you install it. Then we need you to send us your public key so we can verify your signatures. We can find a way to do that. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-14 1:44 ` Richard Stallman @ 2015-11-15 9:28 ` Michael Heerdegen 2015-11-15 15:44 ` Drew Adams 0 siblings, 1 reply; 209+ messages in thread From: Michael Heerdegen @ 2015-11-15 9:28 UTC (permalink / raw) To: Richard Stallman; +Cc: jwiegley, stephen_leake, Drew Adams, emacs-devel Richard Stallman <rms@gnu.org> writes: > GnuPG works on Windows. I expect we can find someone to help > you install it. Then we need you to send us your public key > so we can verify your signatures. We can find a way to do that. I think that's not much easier for Drew than to use git. I know Drew doesn't want to use git in his workflow (which he doesn't have to), he does not dislike git for political reasons or so AFAIR. Once he has set up things correctly (we can help him with that), he just has to change the file in his repo clone, pull, add and push. That's not more complicated than what he does now when uploading to the wiki. He doesn't have to use git for anything else, or while developing. Does that sound acceptable to you, Drew? I can help you with any problems you might encounter. After everything has been set up properly, uploading to Gnu Elpa is trivial, you don't have to learn git for that. Regards, Michael. ^ permalink raw reply [flat|nested] 209+ messages in thread
* RE: ELPA policy 2015-11-15 9:28 ` Michael Heerdegen @ 2015-11-15 15:44 ` Drew Adams 2015-11-17 22:55 ` Richard Stallman 0 siblings, 1 reply; 209+ messages in thread From: Drew Adams @ 2015-11-15 15:44 UTC (permalink / raw) To: Michael Heerdegen, Richard Stallman; +Cc: jwiegley, stephen_leake, emacs-devel > Once he has set up things correctly (we can help him with that), he > just has to change the file in his repo clone, pull, add and push. > That's not more complicated than what he does now when uploading to > the wiki. He doesn't have to use git for anything else, or while > developing. > > Does that sound acceptable to you, Drew? I can help you with any > problems you might encounter. After everything has been set up > properly, uploading to Gnu Elpa is trivial, you don't have to > learn git for that. I will take a look. Please follow up with me off-list. (I've tried to make clear that my reply to this thread was not about getting my libraries into Emacs, but was about "MELPA and updates to it from the wiki." And as I said, "AFAIK there is not necessarily even any interest in adding any of the code I've written to Emacs." This has largely been much ado about nothing, I think. I'm sorry for the resulting waste of people's time. But I'm glad that the question of MELPA and wiki code was at least considered to some extent.) ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-15 15:44 ` Drew Adams @ 2015-11-17 22:55 ` Richard Stallman 2015-11-17 23:17 ` John Wiegley 0 siblings, 1 reply; 209+ messages in thread From: Richard Stallman @ 2015-11-17 22:55 UTC (permalink / raw) To: Drew Adams; +Cc: michael_heerdegen, jwiegley, stephen_leake, 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. ]]] I don't think this is "much ado about nothing". The reasons that affect one person may affect others. We want people to arrange to contribute their Emacs add-ons to Emacs, and that suggests that whenever someone says a reason why he didn't want to put his code in GNU ELPA, we should try to correct it. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-17 22:55 ` Richard Stallman @ 2015-11-17 23:17 ` John Wiegley 2015-11-18 9:53 ` Artur Malabarba 0 siblings, 1 reply; 209+ messages in thread From: John Wiegley @ 2015-11-17 23:17 UTC (permalink / raw) To: Richard Stallman Cc: michael_heerdegen, stephen_leake, Drew Adams, emacs-devel >>>>> Richard Stallman <rms@gnu.org> writes: > We want people to arrange to contribute their Emacs add-ons to Emacs, and > that suggests that whenever someone says a reason why he didn't want to put > his code in GNU ELPA, we should try to correct it. Agreed. ELPA should become a more positive experience, both for developers, contributors and users. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-17 23:17 ` John Wiegley @ 2015-11-18 9:53 ` Artur Malabarba 2015-11-18 10:12 ` David Kastrup 0 siblings, 1 reply; 209+ messages in thread From: Artur Malabarba @ 2015-11-18 9:53 UTC (permalink / raw) To: Richard Stallman, Michael Heerdegen, Stephen Leake, emacs-devel 2015-11-17 23:17 GMT+00:00 John Wiegley <jwiegley@gmail.com>: >>>>>> Richard Stallman <rms@gnu.org> writes: > >> We want people to arrange to contribute their Emacs add-ons to Emacs, and >> that suggests that whenever someone says a reason why he didn't want to put >> his code in GNU ELPA, we should try to correct it. > > Agreed. ELPA should become a more positive experience, both for developers, > contributors and users. I'm deeply in favor of making it easier for people to contribute code to Elpa, and (like I said), I'm willing to help write the code for that. But I think the hardest part of the problem is not being discussed here. Whatever this method is, it needs to meet two criteria simultaneously: 1. Not commit any code to Elpa until someone with push access has OK'd it. This is just to ensure nothing malicious is being done. 2. Be fairly automated (not completely), so that the Elpa maintainers don't have to manually commit+push all code that gets sent to them. This is to preserve the sanity of the maintainers. The current model where everything is commited by us just isn't scalable. While those two points are not mutually exclusive, they are quite difficult to reconcile. It needs to show the maintainers a diff of the changes and then only proceed with the commit after receiving some very minimal interaction (a reply to an email, or the click of a button). ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-18 9:53 ` Artur Malabarba @ 2015-11-18 10:12 ` David Kastrup 0 siblings, 0 replies; 209+ messages in thread From: David Kastrup @ 2015-11-18 10:12 UTC (permalink / raw) To: Artur Malabarba Cc: Michael Heerdegen, Stephen Leake, Richard Stallman, emacs-devel Artur Malabarba <bruce.connor.am@gmail.com> writes: > 2015-11-17 23:17 GMT+00:00 John Wiegley <jwiegley@gmail.com>: >>>>>>> Richard Stallman <rms@gnu.org> writes: >> >>> We want people to arrange to contribute their Emacs add-ons to Emacs, and >>> that suggests that whenever someone says a reason why he didn't want to put >>> his code in GNU ELPA, we should try to correct it. >> >> Agreed. ELPA should become a more positive experience, both for developers, >> contributors and users. > > I'm deeply in favor of making it easier for people to contribute code > to Elpa, and (like I said), I'm willing to help write the code for > that. > But I think the hardest part of the problem is not being discussed here. > > Whatever this method is, it needs to meet two criteria simultaneously: > 1. Not commit any code to Elpa until someone with push access has OK'd > it. This is just to ensure nothing malicious is being done. > 2. Be fairly automated (not completely), so that the Elpa maintainers > don't have to manually commit+push all code that gets sent to them. > This is to preserve the sanity of the maintainers. The current model > where everything is commited by us just isn't scalable. > > While those two points are not mutually exclusive, they are quite > difficult to reconcile. It needs to show the maintainers a diff of the > changes and then only proceed with the commit after receiving some > very minimal interaction (a reply to an email, or the click of a > button). With the GNU ELPA requiring copyright assignments, I doubt that we are going to hit scalability issues of the kind you fear. But of course there is nothing wrong with trying to create a contributing process that is minimal effort for the sake of such archives where this is not the case. -- David Kastrup ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-13 23:03 ` Drew Adams 2015-11-14 1:44 ` Richard Stallman @ 2015-11-14 9:57 ` Achim Gratz 1 sibling, 0 replies; 209+ messages in thread From: Achim Gratz @ 2015-11-14 9:57 UTC (permalink / raw) To: emacs-devel Drew Adams writes: > Dunno what "sign that whole thing with GnuPG" entails. What > is needed for that (e.g., on MS Windows)? http://www.gpg4win.org/ > (I don't do software development anymore. I use MS Windows > binaries of Emacs, and I write some Emacs-Lisp code. I do > have (an old version of) Cygwin installed, so that I can use > a few simple commands from within Emacs. That's about it.) You'd really be off easier if you updated Cygwin so that you could use Git and SSH and GPG from that. Perhaps you'll find that using Emacs from Cygwin is a lot easier now, too -- you can use emacs-w32 if you don't care about running X11. Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ SD adaptation for Waldorf microQ V2.22R2: http://Synth.Stromeko.net/Downloads.html#WaldorfSDada ^ permalink raw reply [flat|nested] 209+ messages in thread
[parent not found: <<m2twosgx1m.fsf@Vulcan.attlocal.net>]
[parent not found: <<E1Zwent-0000bG-9i@fencepost.gnu.org>]
* RE: ELPA policy [not found] ` <<E1Zwent-0000bG-9i@fencepost.gnu.org> @ 2015-11-12 0:22 ` Drew Adams 0 siblings, 0 replies; 209+ messages in thread From: Drew Adams @ 2015-11-12 0:22 UTC (permalink / raw) To: rms, John Wiegley; +Cc: stephen_leake, drew.adams, emacs-devel > > Since pulling in data from the Web indiscriminately is not > > possible for this project (we have to make sure we're not > > unwittingly including code without a proper copyright assignment), > > perhaps we need as an "integrator": someone willing to guide the > > update of ELPA from various sources on the Web, keeping an eye out > > for changes that might affect copyright. > > What we need to solve Drew's problem is to merge changes into a few > specific files from a specific place, and commit them using git. > Isn't that easy enough to do? > > There could be one page where he provides the commit log info. > Whenever that page changes (we could check every 5 minutes), our demon > could merge in all the files which have changed. They it would email > the diffs to Drew so he could confirm what he installed. > > Thus, when Drew wants to install a new version, he would change the > other pages first, then write the change log text into the log page. > Then wait 5 minutes and it's done. > > This is assuming there are no other obstacles aside from the > mechanics of installing changes into our repository. I will again say that I don't expect that my situation is typical. There may be no one else out there who ever prefers something like it. But FWIW I think that what you describe would work for me. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 20:02 ` David Engster 2015-11-10 20:24 ` John Wiegley @ 2015-11-10 23:01 ` Stephen Leake 1 sibling, 0 replies; 209+ messages in thread From: Stephen Leake @ 2015-11-10 23:01 UTC (permalink / raw) To: David Engster Cc: aaronecay, Eli Zaretskii, Stromeko, emacs-devel, Dmitry Gutov David Engster <deng@randomsample.de> writes: > John Wiegley writes: >>>>>>> David Engster <deng@randomsample.de> writes: >> >>> This is not about reaching a consensus. This is about you giving proper >>> reasons for such a big change. >> >> To be clear, I would also put Eshell (though not pcomplete) into the category >> of "big things that should be in ELPA" -- albeit, the subset of ELPA that will >> be in the release tarball. >> >> It's hard to pin down why in a manner that fits in an e-mail. If Eshell were >> in ELPA today, and we were talking about moving it into core, I would have >> just as much trouble justifying that move too. Perhaps this simply underscores >> the fact that we don't have an agreed upon ELPA policy we can all refer to. > > In my opinion, the main question is whether something provides > infrastructure for other packages to use. I think it is a reasonable goal to allow ELPA packages to serve in that role, as long as the "other packages" are also normal or tarball ELPA packages. > This is precisely what CEDET tries to do. Yes. However, now the shoe is on the other foot: why must infrastructure packages be in Emacs core? I think the trigger is "some other _core_ code wants to depend on it". That would trigger a move to Emacs git, as a core ELPA package (the package could still have intermediate released via the Gnu ELPA server). > I wouldn't have much trouble with putting parts of CEDET in ELPA, > namely those parts that do not directly provide infrastructure, like > support for certain languages, project types, indexing tools, etc. Good, but let's not try to do that for Emacs 25; since we are trying to get to feature freeze, it's too much. > It is still not clear to me what exactly is gained by moving core > packages to ELPA. One gain is making it clear that other core code is not allowed to depend on it. This is in turn to ensure that it doesn't creep into the dumped code. But I'm not sure that's an important reason. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 19:43 ` John Wiegley 2015-11-10 20:02 ` David Engster @ 2015-11-10 22:53 ` Stephen Leake 1 sibling, 0 replies; 209+ messages in thread From: Stephen Leake @ 2015-11-10 22:53 UTC (permalink / raw) To: David Engster Cc: aaronecay, Eli Zaretskii, Stromeko, emacs-devel, Dmitry Gutov John Wiegley <jwiegley@gmail.com> writes: >>>>>> David Engster <deng@randomsample.de> writes: > >> This is not about reaching a consensus. This is about you giving proper >> reasons for such a big change. > > To be clear, I would also put Eshell (though not pcomplete) into the category > of "big things that should be in ELPA" -- albeit, the subset of ELPA that will > be in the release tarball. > > It's hard to pin down why in a manner that fits in an e-mail. If Eshell were > in ELPA today, and we were talking about moving it into core, I would have > just as much trouble justifying that move too. Perhaps this simply underscores > the fact that we don't have an agreed upon ELPA policy we can all > refer to. Yes. > OK, David, I won't decide this by fiat. Let us decide what our ELPA policy > will be, until it becomes clear, based on that document, what should go where, > and why. We'll defer discussions of package movement until we have that in > place. Thank you. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:52 ` John Wiegley 2015-11-10 18:58 ` David Engster @ 2015-11-10 19:17 ` Eli Zaretskii 2015-11-10 23:10 ` Stephen Leake 2015-11-10 22:52 ` Stephen Leake 2 siblings, 1 reply; 209+ messages in thread From: Eli Zaretskii @ 2015-11-10 19:17 UTC (permalink / raw) To: John Wiegley Cc: deng, aaronecay, emacs-devel, Stromeko, dgutov, stephen_leake > From: John Wiegley <jwiegley@gmail.com> > Cc: Stephen Leake <stephen_leake@stephe-leake.org>, aaronecay@gmail.com, Eli Zaretskii <eliz@gnu.org>, Stromeko@nexgo.de, Dmitry Gutov <dgutov@yandex.ru>, emacs-devel@gnu.org > Date: Tue, 10 Nov 2015 10:52:41 -0800 > > > Why? > > There will never be 100% agreement on whether they should be in ELPA, or be in > Core, so I'm making the decision that they belong in ELPA. IMO, it's a mistake to move CEDET. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 19:17 ` Eli Zaretskii @ 2015-11-10 23:10 ` Stephen Leake 0 siblings, 0 replies; 209+ messages in thread From: Stephen Leake @ 2015-11-10 23:10 UTC (permalink / raw) To: Eli Zaretskii Cc: deng, John Wiegley, emacs-devel, Stromeko, aaronecay, dgutov Eli Zaretskii <eliz@gnu.org> writes: >> From: John Wiegley <jwiegley@gmail.com> >> Cc: Stephen Leake <stephen_leake@stephe-leake.org>, >> aaronecay@gmail.com, Eli Zaretskii <eliz@gnu.org>, >> Stromeko@nexgo.de, Dmitry Gutov <dgutov@yandex.ru>, >> emacs-devel@gnu.org >> Date: Tue, 10 Nov 2015 10:52:41 -0800 >> >> > Why? >> >> There will never be 100% agreement on whether they should be in ELPA, or be in >> Core, so I'm making the decision that they belong in ELPA. > > IMO, it's a mistake to move CEDET. Bald statements of preference, without rationale, do not help move this discussion forward. We are trying to establish a general ELPA policy, not just vote on one particular package. What is it about CEDET that makes it a poor candidate? How would your workflow suffer if it was moved? How would users suffer? -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:52 ` John Wiegley 2015-11-10 18:58 ` David Engster 2015-11-10 19:17 ` Eli Zaretskii @ 2015-11-10 22:52 ` Stephen Leake 2 siblings, 0 replies; 209+ messages in thread From: Stephen Leake @ 2015-11-10 22:52 UTC (permalink / raw) To: David Engster Cc: aaronecay, Eli Zaretskii, Stromeko, emacs-devel, Dmitry Gutov John Wiegley <jwiegley@gmail.com> writes: >>>>>> David Engster <deng@randomsample.de> writes: > >>> Large packages like CEDET should move outside of Emacs.git and into >>> Elpa.git. > >> Why? > > There will never be 100% agreement on whether they should be in ELPA, or be in > Core, so I'm making the decision that they belong in ELPA. I'm happy to have someone making decisions, but there needs to be some rationale given, so we understand the tradeoffs. I believe the rationale here is: - CEDET is not used by other core Emacs code (xref.el will be fixed) - code that is not used by other core Emacs code clutters the workspace, producing extra hits in greps, etc. - CEDET can still be included in the Emacs tarball, so users do not have to use list-packages to install it (this requires a to be implemented mechanism). >> From my experience, git submodules are never seamless to work with. > > Even still, they work perfectly fine for this purpose. I would like to see an actual demonstration, please; there are lots of devils in the details. Which means: Please post a clear recipe for setting up an Emacs + ELPA developer workspace, starting from git clone, so I can try this on my machine. The test is then that some core Emacs code depend on some ELPA package; we'd need branches in both to make that happen, since it doesn't now. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:28 ` John Wiegley 2015-11-10 18:32 ` Dmitry Gutov 2015-11-10 18:43 ` David Engster @ 2015-11-10 18:49 ` Eli Zaretskii 2015-11-10 18:54 ` John Wiegley ` (2 more replies) 2015-11-10 22:36 ` Stephen Leake 3 siblings, 3 replies; 209+ messages in thread From: Eli Zaretskii @ 2015-11-10 18:49 UTC (permalink / raw) To: John Wiegley; +Cc: aaronecay, Stromeko, stephen_leake, dgutov, emacs-devel > From: John Wiegley <jwiegley@gmail.com> > Cc: Eli Zaretskii <eliz@gnu.org>, aaronecay@gmail.com, Stromeko@nexgo.de, emacs-devel@gnu.org, Dmitry Gutov <dgutov@yandex.ru> > Date: Tue, 10 Nov 2015 10:28:26 -0800 > > Large packages like CEDET should move outside of Emacs.git and into Elpa.git. "Should" based on what? just the fact that it's large? I think we should decide this stuff on a case by case basis. For example: > If xref.el depends on CEDET, it would move to Elpa.git as well. IMO, the exact opposite: if there are core features that we want to be in Emacs no matter what, and those features depend on a package which could be a candidate to move to ELPA, that package should NOT move to ELPA. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:49 ` Eli Zaretskii @ 2015-11-10 18:54 ` John Wiegley 2015-11-10 19:21 ` Eli Zaretskii 2015-11-10 23:23 ` Stephen Leake 2015-11-10 20:03 ` Dmitry Gutov 2015-11-10 23:16 ` Stephen Leake 2 siblings, 2 replies; 209+ messages in thread From: John Wiegley @ 2015-11-10 18:54 UTC (permalink / raw) To: Eli Zaretskii; +Cc: aaronecay, Stromeko, stephen_leake, dgutov, emacs-devel >>>>> Eli Zaretskii <eliz@gnu.org> writes: >> Large packages like CEDET should move outside of Emacs.git and into >> Elpa.git. > "Should" based on what? just the fact that it's large? I think we should > decide this stuff on a case by case basis. For example: I'm surprised you say this, Eli, because in another thread you agree that packages like this should be in Elpa, didn't you? >> If xref.el depends on CEDET, it would move to Elpa.git as well. > IMO, the exact opposite: if there are core features that we want to be in > Emacs no matter what, and those features depend on a package which could be > a candidate to move to ELPA, that package should NOT move to ELPA. Core should provide functionality along the lines of a "standard library" and a "standard environment", where having them in core is as much a statement about consistency of interface, as it is about universal availability of the functionality. Since xref.el does not need to depend on CEDET, I don't see a reason why it should, causing CEDET to remain in core. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:54 ` John Wiegley @ 2015-11-10 19:21 ` Eli Zaretskii 2015-11-10 19:26 ` Eli Zaretskii ` (2 more replies) 2015-11-10 23:23 ` Stephen Leake 1 sibling, 3 replies; 209+ messages in thread From: Eli Zaretskii @ 2015-11-10 19:21 UTC (permalink / raw) To: John Wiegley; +Cc: aaronecay, Stromeko, stephen_leake, dgutov, emacs-devel > From: John Wiegley <jwiegley@gmail.com> > Cc: stephen_leake@stephe-leake.org, aaronecay@gmail.com, Stromeko@nexgo.de, emacs-devel@gnu.org, dgutov@yandex.ru > Date: Tue, 10 Nov 2015 10:54:51 -0800 > > >>>>> Eli Zaretskii <eliz@gnu.org> writes: > > >> Large packages like CEDET should move outside of Emacs.git and into > >> Elpa.git. > > "Should" based on what? just the fact that it's large? I think we should > > decide this stuff on a case by case basis. For example: > > I'm surprised you say this, Eli, because in another thread you agree that > packages like this should be in Elpa, didn't you? I said I _could_agree. But not unconditionally. We should discuss each case. > >> If xref.el depends on CEDET, it would move to Elpa.git as well. > > > IMO, the exact opposite: if there are core features that we want to be in > > Emacs no matter what, and those features depend on a package which could be > > a candidate to move to ELPA, that package should NOT move to ELPA. > > Core should provide functionality along the lines of a "standard library" and > a "standard environment", where having them in core is as much a statement > about consistency of interface, as it is about universal availability of the > functionality. Sorry, I don't understand what this means in practice. > Since xref.el does not need to depend on CEDET, I don't see a reason why it > should, causing CEDET to remain in core. xref is as useful as its backends. If you take away backends, it becomes less useful, or supports less programming languages, or both. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 19:21 ` Eli Zaretskii @ 2015-11-10 19:26 ` Eli Zaretskii 2015-11-10 19:29 ` John Wiegley 2015-11-10 20:06 ` Dmitry Gutov 2015-11-10 23:25 ` Stephen Leake 2 siblings, 1 reply; 209+ messages in thread From: Eli Zaretskii @ 2015-11-10 19:26 UTC (permalink / raw) To: jwiegley; +Cc: emacs-devel How about if we leave this issue alone for a while? Let's concentrate on releasing Emacs 25.1 first, and return to this issue later. Rome wasn't built in one day, we don't have to rush. WDYT? ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 19:26 ` Eli Zaretskii @ 2015-11-10 19:29 ` John Wiegley 0 siblings, 0 replies; 209+ messages in thread From: John Wiegley @ 2015-11-10 19:29 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel >>>>> Eli Zaretskii <eliz@gnu.org> writes: > How about if we leave this issue alone for a while? Let's concentrate on > releasing Emacs 25.1 first, and return to this issue later. Rome wasn't > built in one day, we don't have to rush. > > WDYT? Agreed. Let's table for now and revisit. If the suggested moves really trouble core developers, we'll talk about it again before making a final decision. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 19:21 ` Eli Zaretskii 2015-11-10 19:26 ` Eli Zaretskii @ 2015-11-10 20:06 ` Dmitry Gutov 2015-11-10 23:25 ` Stephen Leake 2 siblings, 0 replies; 209+ messages in thread From: Dmitry Gutov @ 2015-11-10 20:06 UTC (permalink / raw) To: Eli Zaretskii, John Wiegley Cc: aaronecay, Stromeko, stephen_leake, emacs-devel On 11/10/2015 09:21 PM, Eli Zaretskii wrote: > xref is as useful as its backends. If you take away backends, it > becomes less useful, or supports less programming languages, or both. None of the xref backends use Semantic. There are still only two of them: elisp and etags. When CEDET grows a backend, it can just as well add it when semantic-mode is enabled. No need to have it in the core for that. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 19:21 ` Eli Zaretskii 2015-11-10 19:26 ` Eli Zaretskii 2015-11-10 20:06 ` Dmitry Gutov @ 2015-11-10 23:25 ` Stephen Leake 2 siblings, 0 replies; 209+ messages in thread From: Stephen Leake @ 2015-11-10 23:25 UTC (permalink / raw) To: Eli Zaretskii; +Cc: John Wiegley, Stromeko, emacs-devel, dgutov, aaronecay Eli Zaretskii <eliz@gnu.org> writes: >> Since xref.el does not need to depend on CEDET, I don't see a reason why it >> should, causing CEDET to remain in core. > > xref is as useful as its backends. If you take away backends, it > becomes less useful, or supports less programming languages, or both. Yes. That's an argument for making the CEDET xref backend available somewhere; I've committed to ensuring that. But this discussion is about ELPA vs Emacs core: Does it matter whether that backend is in ELPA or Emacs core? -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:54 ` John Wiegley 2015-11-10 19:21 ` Eli Zaretskii @ 2015-11-10 23:23 ` Stephen Leake 1 sibling, 0 replies; 209+ messages in thread From: Stephen Leake @ 2015-11-10 23:23 UTC (permalink / raw) To: Eli Zaretskii; +Cc: aaronecay, Stromeko, dgutov, emacs-devel John Wiegley <jwiegley@gmail.com> writes: >>>>>> Eli Zaretskii <eliz@gnu.org> writes: > >>> Large packages like CEDET should move outside of Emacs.git and into >>> Elpa.git. >> "Should" based on what? just the fact that it's large? I think we should >> decide this stuff on a case by case basis. For example: > > I'm surprised you say this, Eli, because in another thread you agree that > packages like this should be in Elpa, didn't you? > >>> If xref.el depends on CEDET, it would move to Elpa.git as well. > >> IMO, the exact opposite: if there are core features that we want to be in >> Emacs no matter what, and those features depend on a package which could be >> a candidate to move to ELPA, that package should NOT move to ELPA. > > Core should provide functionality along the lines of a "standard library" and > a "standard environment", where having them in core is as much a statement > about consistency of interface, as it is about universal availability of the > functionality. Right. Since CEDET provides lots of interesting infrastrucure, I assumed it was part of the Emacs standard library. But I also see no reason not to have two levels of "standard infrastructure"; one in core Emacs, on in ELPA. That said, moving CEDET out of core to ELPA can be seen as a demotion. For example, I was assuming that the EDE package system should be prefered over any package system that is in ELPA, precisely because it is in Emacs git. So I was spending my time improving EDE, rather than some other ELPA package. That aspect should be considered. In other emails, I've said "CEDET is a tarball package; in Emacs git solely to be included in the tarball". Is it fair to add "also because it is approved as part of the standard Emacs library"? > Since xref.el does not need to depend on CEDET, I don't see a reason why it > should, causing CEDET to remain in core. I would object to moving CEDET to ELPA git if it were not easy to refactor the current dependency to still be provided by an ELPA package. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:49 ` Eli Zaretskii 2015-11-10 18:54 ` John Wiegley @ 2015-11-10 20:03 ` Dmitry Gutov 2015-11-10 23:16 ` Stephen Leake 2 siblings, 0 replies; 209+ messages in thread From: Dmitry Gutov @ 2015-11-10 20:03 UTC (permalink / raw) To: Eli Zaretskii, John Wiegley Cc: aaronecay, Stromeko, stephen_leake, emacs-devel On 11/10/2015 08:49 PM, Eli Zaretskii wrote: > IMO, the exact opposite: if there are core features that we want to be > in Emacs no matter what, and those features depend on a package which > could be a candidate to move to ELPA, that package should NOT move to > ELPA. xref only depends on a minor feature of CEDET (the code indexing tools integration), and I've done that in a quick-and-dirty way, as a proof of concept. It would be better to have functionality like that in the core, independent of CEDET. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:49 ` Eli Zaretskii 2015-11-10 18:54 ` John Wiegley 2015-11-10 20:03 ` Dmitry Gutov @ 2015-11-10 23:16 ` Stephen Leake 2 siblings, 0 replies; 209+ messages in thread From: Stephen Leake @ 2015-11-10 23:16 UTC (permalink / raw) To: Eli Zaretskii; +Cc: John Wiegley, Stromeko, emacs-devel, dgutov, aaronecay Eli Zaretskii <eliz@gnu.org> writes: >> From: John Wiegley <jwiegley@gmail.com> >> Cc: Eli Zaretskii <eliz@gnu.org>, aaronecay@gmail.com, >> Stromeko@nexgo.de, emacs-devel@gnu.org, Dmitry Gutov >> <dgutov@yandex.ru> >> Date: Tue, 10 Nov 2015 10:28:26 -0800 >> >> Large packages like CEDET should move outside of Emacs.git and into Elpa.git. > > "Should" based on what? just the fact that it's large? I think we > should decide this stuff on a case by case basis. For example: > >> If xref.el depends on CEDET, it would move to Elpa.git as well. > > IMO, the exact opposite: if there are core features that we want to be > in Emacs no matter what, and those features depend on a package which > could be a candidate to move to ELPA, that package should NOT move to > ELPA. In general, I agree. However, there are two _independent_ aspects of "move to ELPA": 1) Move to ELPA git. 2) Be distributed by the ELPA package server. If other core code depends on a package, it should not move to ELPA git (unless the dependency is easily refactored, as in the CEDET/xgit case; there will always be corner cases). However, if there is a desire to do package releases between Emacs releases, making the package available via the ELPA package server makes sense. I think this discussion is mainly focused on "move to ELPA git", but it would help to be clear. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 18:28 ` John Wiegley ` (2 preceding siblings ...) 2015-11-10 18:49 ` Eli Zaretskii @ 2015-11-10 22:36 ` Stephen Leake 2015-11-10 22:54 ` John Wiegley 3 siblings, 1 reply; 209+ messages in thread From: Stephen Leake @ 2015-11-10 22:36 UTC (permalink / raw) To: Eli Zaretskii; +Cc: aaronecay, Stromeko, Dmitry Gutov, emacs-devel John Wiegley <jwiegley@gmail.com> writes: >>>>>> Stephen Leake <stephen_leake@stephe-leake.org> writes: > >> ELPA packages that other core code depends on (like CEDET; xref uses it - >> called "core ELPA packages" hereinafter) have to be in every developer's >> build environment everyday; the other core code has to see the current >> version of the package, and it has to be the same for every developer. >> >> If core ELPA packages are in the ELPA git repository, you would copy some >> subtrees of the ELPA git workspace into the Emacs git workspace. People have >> looked into doing this, but it gets messy and confusing. "git fetch" is >> dealing with two upstreams for one workspace. There has been talk about git >> submodules, etc, but nothing concrete. > > Elpa.git should be a submodule referenced from within Emacs.git (under > "elpa"). That's overkill; there are many packages in Gnu ELPA that core code should _not_ depend on. We could try to have a list of approved packages in a file somewhere, but I don't think we can enforce that; better to use git to enforce it. We need a way to explicitly label and enforce which ELPA packages core code can depend on. The only demonstrated way to do that is to keep them in Emacs git. > This allows us to expressly state which "version" of Elpa is expected > to work with the current Emacs.git. That's only required for the ELPA packages that core code can depend on. For the other ELPA packages, we explicitly don't want to know if they work with Emacs master; that's up to the individual package maintainers. That's one of the primary purposes of ELPA. > Large packages like CEDET should move outside of Emacs.git and into > Elpa.git. If this said "large packages that the rest of Emacs core does not depend on ...", I could agree. I just checked; the only other core code that depends on CEDET is xref.el, which can be fixed. So I agree, CEDET should move to elpa git. However, I assume the reason CEDET is in Emacs git is because there is a desire to distribute it in the tarball; a sufficient number of users expect it to be there without going thru package install. So the mechanism to put ELPA packages in the tarball (but _not_ in the emacs development workspace) must also be implemented. That should not be too hard; no git submodules, just directory tree copy. So this introduces a third kind of ELPA package: "distributed in Emacs tarball". A "tarball package" for short? Except that Eric maintains that there is more to "CEDET" in Emacs core than just lisp/cedet/*. So to be clear, we are proposing to move only lisp/cedet/* to elpa git. > If xref.el depends on CEDET, it would move to Elpa.git as well. As Dmitry points out, better to remove the dependency from the core xref.el. Then we can add it back either in the ELPA CEDET package or in a new xref-cedet ELPA package. >> If we use the approach of keeping core ELPA packages in the Emacs git >> repository, there is _zero_ friction for the current core Emacs developers; >> the only change is in the ELPA config scripts. > > I do not want this code replication. How is it replication? There are two styles of ELPA packages currently: 1) The only repository for the code is Gnu ELPA git 2) There is an external repository that the package maintainer uses; releases are pushed to Gnu ELPA git The choice is up to the ELPA package maintainer. The proposal is to change both to say: 1a) The only repository for the code is Gnu ELPA git or Gnu Emacs git. 2a) There is an external repository that the package maintainer uses; releases are pushed to Gnu ELPA git or Gnu Emacs git. The ELPA packages in Emacs git are "core ELPA packages"; core Emacs code may rely on them. There is no additional replication by keeping the core ELPA packages in Emacs git. The only reason the core Emacs packages are in the ELPA server is to allow package releases in addition to Emacs releases. The package maintainers have to accept maintaining backward compatibility, so a core package in an Emacs 25.1 binary install can work with a more recent version of the core ELPA package. In summary, I'm proposing that there are three kinds of ELPA packages: 1) "normal ELPA package". - Stored in Gnu ELPA git, and possibly in the package maintainer's separate repository. - Releases only occur via the ELPA package server, whenever the version number increments in the ELPA git main package file. - Core Emacs code may not depend on these. 2) "tarball ELPA package". - Stored in Gnu ELPA git, and possibly in the package maintainer's separate repository. - Each Emacs release includes a released version of the package in the Emacs tarball, via copy from an ELPA workspace at Emacs tarball build time. Other releases also occur, via the ELPA package server, whenever the version number increments in the ELPA git main package file. - Core Emacs code may not depend on these. 3) "core ELPA package". - Stored in Gnu Emacs git, and possibly in the package maintainer's separate repository. - Each Emacs release includes a version of the package in the tarball, because it is in the Emacs git workspace. Other releases also occur, via the ELPA package server, whenever the version number increments in the Emacs git main package file. - Core Emacs code may depend on these. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 22:36 ` Stephen Leake @ 2015-11-10 22:54 ` John Wiegley 2015-11-10 23:01 ` Drew Adams 0 siblings, 1 reply; 209+ messages in thread From: John Wiegley @ 2015-11-10 22:54 UTC (permalink / raw) To: Stephen Leake Cc: aaronecay, Eli Zaretskii, Stromeko, emacs-devel, Dmitry Gutov >>>>> Stephen Leake <stephen_leake@stephe-leake.org> writes: >> Elpa.git should be a submodule referenced from within Emacs.git (under >> "elpa"). > That's overkill; there are many packages in Gnu ELPA that core code should > _not_ depend on. I believe that no core code should depend on any ELPA packages. Such a dependency would be a reason to move that package into core, no? If that's really the case, no submodule reference is necessary after all. > If this said "large packages that the rest of Emacs core does not depend on > ...", I could agree. Yes, I meant that. > So this introduces a third kind of ELPA package: "distributed in Emacs > tarball". A "tarball package" for short? Yes, for ELPA packages, there would be two flavors: in the tarball, and not. Some have suggested just putting everything in the tarball for now. So we could defer this question until the size of the tarball mattered, or if a particular package was so dynamic it didn't want a version frozen into the tarball. Note that going down this road starts to make the line between "core" and "ELPA" very thin, with easy migration between the two when desired. For developers it allows Git to focus better, but for users, the difference is largely invisible. > Except that Eric maintains that there is more to "CEDET" in Emacs core than > just lisp/cedet/*. So to be clear, we are proposing to move only > lisp/cedet/* to elpa git. Yes. > In summary, I'm proposing that there are three kinds of ELPA packages: I think we have a lot of agreement here, but I'd still like a clearer policy than just "if core depends on it". John ^ permalink raw reply [flat|nested] 209+ messages in thread
* RE: ELPA policy 2015-11-10 22:54 ` John Wiegley @ 2015-11-10 23:01 ` Drew Adams 2015-11-11 9:13 ` Stephen Leake 0 siblings, 1 reply; 209+ messages in thread From: Drew Adams @ 2015-11-10 23:01 UTC (permalink / raw) To: John Wiegley; +Cc: emacs-devel Here's a naive question regarding where you place Lisp code that is distributed with Emacs (part of the tarball): Will anything change for users, depending on where you happen to manage the code wrt ELPA etc.? I'm guessing (and hoping) not, so that the distributed directory structure will remain the same. Is that correct? ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-10 23:01 ` Drew Adams @ 2015-11-11 9:13 ` Stephen Leake 2015-11-11 14:58 ` Drew Adams 0 siblings, 1 reply; 209+ messages in thread From: Stephen Leake @ 2015-11-11 9:13 UTC (permalink / raw) To: Drew Adams; +Cc: John Wiegley, emacs-devel Drew Adams <drew.adams@oracle.com> writes: > Here's a naive question regarding where you place Lisp code > that is distributed with Emacs (part of the tarball): Will > anything change for users, depending on where you happen to > manage the code wrt ELPA etc.? > > I'm guessing (and hoping) not, so that the distributed > directory structure will remain the same. Is that correct? That's a good point. But I'm not clear what previous state you are comparing to. There are two cases; 1) A package that is currently in Emacs git moves to Gnu ELPA git but remains in the Emacs tarball. 2) A package that is currently in Gnu ELPA git stays there, and is added to the Emacs tarball. I would argue that tarball ELPA packages should be installed in some system level elpa directory (similar to the user's .emacs.d/elpa), not in the main emacs/lisp install directory. I don't think the history of a package should determine where it is installed. So in case 1), I expect the package to be in a different installation directory from the previous Emacs release. But it's still in the default load-path, so this change is transparent to the user. But it's not too important; the important distinction is that tarball ELPA packages are _not_ in the developer Emacs workspace, so core code cannot accidently depend on them. -- -- Stephe ^ permalink raw reply [flat|nested] 209+ messages in thread
* RE: ELPA policy 2015-11-11 9:13 ` Stephen Leake @ 2015-11-11 14:58 ` Drew Adams 0 siblings, 0 replies; 209+ messages in thread From: Drew Adams @ 2015-11-11 14:58 UTC (permalink / raw) To: Stephen Leake; +Cc: John Wiegley, emacs-devel > > Here's a naive question regarding where you place Lisp code > > that is distributed with Emacs (part of the tarball): Will > > anything change for users, depending on where you happen to > > manage the code wrt ELPA etc.? > > > > I'm guessing (and hoping) not, so that the distributed > > directory structure will remain the same. Is that correct? > > That's a good point. But I'm not clear what previous state you are > comparing to. Previous delivery of Emacs (back to ~Day One), including its source code, especially Lisp, under directory lisp/. What's unclear about that? > There are two cases; > 1) A package that is currently in Emacs git moves to Gnu ELPA git but > remains in the Emacs tarball. > 2) A package that is currently in Gnu ELPA git stays there, and is added > to the Emacs tarball. > > I would argue that tarball ELPA packages should be installed in some > system level elpa directory (similar to the user's .emacs.d/elpa), not > in the main emacs/lisp install directory. You say you would argue that, but where's the argument? How about a reason? As one user, I would prefer that all distributed Lisp code be under lisp/. Makes things simpler for users (who might even have existing scripts etc. that expect this). Is there a good reason not to keep this behavior? I don't really care where you stick code, or how you access it, for development purposes. Where an Emacs distribution puts it for _users_ should remain what it has been, IMO, if possible - somewhere under lisp/, at least. Why should changes in where you keep code for development affect where users of Emacs find it? > I don't think the history of a package should determine where it is > installed. So in case 1), I expect the package to be in a different > installation directory from the previous Emacs release. But it's still > in the default load-path, so this change is transparent to the user. `load-path' is not everything, so no, it is _not_ transparent to users, depending on what they do and how they use Emacs (including its source code). Emacs should be able to present its source code to users in the same way as in the past, I would think. They certainly should not be _required_ to use the package system or git or ... to access it. `package.el' should be a nice-to-have. It should not become an obligatory hoop for users to jump through. Most users will find it handy, just as some users might find a menu handy. But it should not become a necessary way to access Emacs code. > But it's not too important; the important distinction is that tarball > ELPA packages are _not_ in the developer Emacs workspace, so core > code cannot accidently depend on them. That might be important to developers, but it is not the issue I asked about. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 3:42 ` Eli Zaretskii 2015-11-09 3:51 ` Dmitry Gutov @ 2015-11-09 18:22 ` Achim Gratz 2015-11-09 18:45 ` Eli Zaretskii 1 sibling, 1 reply; 209+ messages in thread From: Achim Gratz @ 2015-11-09 18:22 UTC (permalink / raw) To: emacs-devel Eli Zaretskii writes: > The suggestion was to move _all_ of them, except the few that are > needed for bootstrap, out of the Emacs repository. You keep arguing about things that realistically aren't even on the table yet (I don't want to prevent that discussion, mind you). I said it would be possible to do this, given some not-yet-existing infrastructure and the only reason I even mentioned it was because that's the other end of the spectrum from moving everything that looks halfway useful into core. Even if that infrastructure develops (which I have serious doubts about given how this discussion goes), nobody in their right mind would move all packages big-bang style to ELPA. There'd certainly be a transition period with some pilot packages, I'd probably pick Org, CEDET and Tramp based on the list traffic. You'd then see how that works and make some fixes that will certainly be necessary before you get to the point to move more packages over to ELPA. This being Emacs, for better or worse, I'd expect that at this point we'd be looking at _years_ before the extreme end you seem to be so worried about is even within reach. Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ Factory and User Sound Singles for Waldorf Blofeld: http://Synth.Stromeko.net/Downloads.html#WaldorfSounds ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 18:22 ` Achim Gratz @ 2015-11-09 18:45 ` Eli Zaretskii 2015-11-09 18:58 ` David Engster ` (2 more replies) 0 siblings, 3 replies; 209+ messages in thread From: Eli Zaretskii @ 2015-11-09 18:45 UTC (permalink / raw) To: Achim Gratz; +Cc: emacs-devel > From: Achim Gratz <Stromeko@nexgo.de> > Date: Mon, 09 Nov 2015 19:22:50 +0100 > > Eli Zaretskii writes: > > The suggestion was to move _all_ of them, except the few that are > > needed for bootstrap, out of the Emacs repository. > > You keep arguing about things that realistically aren't even on the > table yet (I don't want to prevent that discussion, mind you). If that's not on the table, then please tell what in your opinion _is_ on the table. You did want to propose something practical that could be done soon, right? Because this discussion was about what we want to do from now on with ELPA, not what we might want considering in some distant future that might never come. So please, let's be practical and consider alternatives that realistically can be taken soon. Like tomorrow or the next month. Okay? > There'd certainly be a transition period with some pilot packages, I'd > probably pick Org, CEDET and Tramp based on the list traffic. Moving out a few large packages that are developed outside Emacs anyway is a no-brainer, provided that their developers agree. I already said I'll probably agree, and no one else objected. The only question is what is the opinion of the respective developers: we cannot move the packages if they disagree. Is there some other alternative on the table? If not, we can finally agree about something, I think. Thanks. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 18:45 ` Eli Zaretskii @ 2015-11-09 18:58 ` David Engster 2015-11-09 19:08 ` Eli Zaretskii 2015-11-09 19:53 ` Rasmus 2015-11-09 19:58 ` Achim Gratz 2 siblings, 1 reply; 209+ messages in thread From: David Engster @ 2015-11-09 18:58 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Achim Gratz, emacs-devel Eli Zaretskii writes: >> From: Achim Gratz <Stromeko@nexgo.de> >> Date: Mon, 09 Nov 2015 19:22:50 +0100 >> There'd certainly be a transition period with some pilot packages, I'd >> probably pick Org, CEDET and Tramp based on the list traffic. > > Moving out a few large packages that are developed outside Emacs > anyway is a no-brainer, provided that their developers agree. I > already said I'll probably agree, and no one else objected. The only > question is what is the opinion of the respective developers: we > cannot move the packages if they disagree. As long as Emacs core cannot depend on packages that are bundled from ELPA, I would definitely not agree to move CEDET to ELPA. -David ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 18:58 ` David Engster @ 2015-11-09 19:08 ` Eli Zaretskii 2015-11-09 19:35 ` David Engster 0 siblings, 1 reply; 209+ messages in thread From: Eli Zaretskii @ 2015-11-09 19:08 UTC (permalink / raw) To: David Engster; +Cc: Stromeko, emacs-devel > From: David Engster <deng@randomsample.de> > Date: Mon, 09 Nov 2015 19:58:29 +0100 > Cc: Achim Gratz <Stromeko@nexgo.de>, emacs-devel@gnu.org > > As long as Emacs core cannot depend on packages that are bundled from > ELPA, I would definitely not agree to move CEDET to ELPA. Of course. I don't think we should move anything before such a dependency is possible. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 19:08 ` Eli Zaretskii @ 2015-11-09 19:35 ` David Engster 2015-11-09 20:12 ` Eli Zaretskii 0 siblings, 1 reply; 209+ messages in thread From: David Engster @ 2015-11-09 19:35 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Stromeko, emacs-devel Eli Zaretskii writes: >> From: David Engster <deng@randomsample.de> >> Date: Mon, 09 Nov 2015 19:58:29 +0100 >> Cc: Achim Gratz <Stromeko@nexgo.de>, emacs-devel@gnu.org >> >> As long as Emacs core cannot depend on packages that are bundled from >> ELPA, I would definitely not agree to move CEDET to ELPA. > > Of course. I don't think we should move anything before such a > dependency is possible. But if you have such dependencies, what's the point? IIRC, Stefan decidedly did not want such dependencies, since the whole point was to add those bundles only when creating releases. -David ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 19:35 ` David Engster @ 2015-11-09 20:12 ` Eli Zaretskii 0 siblings, 0 replies; 209+ messages in thread From: Eli Zaretskii @ 2015-11-09 20:12 UTC (permalink / raw) To: David Engster; +Cc: Stromeko, emacs-devel > From: David Engster <deng@randomsample.de> > Cc: Stromeko@nexgo.de, emacs-devel@gnu.org > Date: Mon, 09 Nov 2015 20:35:04 +0100 > > Eli Zaretskii writes: > >> From: David Engster <deng@randomsample.de> > >> Date: Mon, 09 Nov 2015 19:58:29 +0100 > >> Cc: Achim Gratz <Stromeko@nexgo.de>, emacs-devel@gnu.org > >> > >> As long as Emacs core cannot depend on packages that are bundled from > >> ELPA, I would definitely not agree to move CEDET to ELPA. > > > > Of course. I don't think we should move anything before such a > > dependency is possible. > > But if you have such dependencies, what's the point? IIRC, Stefan > decidedly did not want such dependencies, since the whole point was to > add those bundles only when creating releases. I'm not pushing for the move, I just said that if the technical problems are successfully resolved, I won't object. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 18:45 ` Eli Zaretskii 2015-11-09 18:58 ` David Engster @ 2015-11-09 19:53 ` Rasmus 2015-11-09 19:58 ` Achim Gratz 2 siblings, 0 replies; 209+ messages in thread From: Rasmus @ 2015-11-09 19:53 UTC (permalink / raw) To: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > Moving out a few large packages that are developed outside Emacs > anyway is a no-brainer, provided that their developers agree. I > already said I'll probably agree, and no one else objected. The only > question is what is the opinion of the respective developers: we > cannot move the packages if they disagree. I'm pretty sure Org would be happy to be distributed this way. In fact, we have got the 8.3 release now. It really *must* be in 25.1, but I think it would be fine to try out Fabian’s system to allow it to be upgraded later. Otherwise, I will hopefully be able to merge it soon the "copy-paste" way. Rasmus -- However beautiful the theory, you should occasionally look at the evidence ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: ELPA policy 2015-11-09 18:45 ` Eli Zaretskii 2015-11-09 18:58 ` David Engster 2015-11-09 19:53 ` Rasmus @ 2015-11-09 19:58 ` Achim Gratz 2 siblings, 0 replies; 209+ messages in thread From: Achim Gratz @ 2015-11-09 19:58 UTC (permalink / raw) To: emacs-devel Eli Zaretskii writes: > If that's not on the table, then please tell what in your opinion _is_ > on the table. You did want to propose something practical that could > be done soon, right? Because this discussion was about what we want > to do from now on with ELPA, not what we might want considering in > some distant future that might never come. I did want to propose something that could become a vision for some time in the foreseeable, yet somewhat distant future that we can then take steps towards. ELPA is foremost for _users_ and any decisions taken should put the users first and developers second. As a user I don't have the luxury of chosing which Emacs version I get to use and what packages are already installed on the system (indeed in my day job that changes when I switch between project workspaces). Wouldn't it be splendid if ELPA helped me making those differences fade into the background, if not disappear entirely? > So please, let's be practical and consider alternatives that > realistically can be taken soon. Like tomorrow or the next month. > Okay? No, not okay. There's still no consensus of even roughly where we want to end up, so starting a random walk to find out who's feeling well or not with whichever direction is certainly not my idea of progress. > Moving out a few large packages that are developed outside Emacs > anyway is a no-brainer, provided that their developers agree. Again, it's not. It simply doesn't work at this moment, not for Emacs, not for the package developers and not for the users. That doesn't have anything to do with the size of those packages best I can tell. To change that (without moving the sources anywhere, just to not go down that rabbit hole again) we'd need to devise a way to have an Emacs core package whose autoload definitions can be separated and that can be overridden (maybe only with a newer version) on the installation level or by the user. That would be the first step before any others can follow, provided you even want to go that direction. Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ DIY Stuff: http://Synth.Stromeko.net/DIY.html ^ permalink raw reply [flat|nested] 209+ messages in thread
* streams and generators (was: streams are cool, you could stream virtually anything!) 2015-11-05 0:27 ` John Wiegley 2015-11-05 0:38 ` T.V Raman @ 2015-11-05 17:06 ` Michael Heerdegen 2015-11-05 22:36 ` streams and generators Dmitry Gutov 1 sibling, 1 reply; 209+ messages in thread From: Michael Heerdegen @ 2015-11-05 17:06 UTC (permalink / raw) To: T.V Raman; +Cc: Nicolas Petton, emacs-devel John Wiegley <jwiegley@gmail.com> writes: > Let's see it develop during these earlier stages on ELPA, so people > can easily update the package as it develops. Once it stabilizes, I > agree we should move it into core. I want to draw our attention to "generator.el" also, because when we think about the future direction, we should keep in mind both of them, because they are very related. generator.el uses an implicit continuation passing style to define `defgenerator' - as far as I understand it, the code is really clever, an excellent piece of Elisp. It deserves more attention (and some broader documentation). We should think about how the two can benefit from each other. For example there should be a way to convert a generator to a stream etc. I already wrote "iterators.el" (Elpa), a trivial thing compared to "generator.el", that implements some stream like basic operations for generators/iterators. All that stuff should fit together at the end. Regards, Michael. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams and generators 2015-11-05 17:06 ` streams and generators (was: streams are cool, you could stream virtually anything!) Michael Heerdegen @ 2015-11-05 22:36 ` Dmitry Gutov 0 siblings, 0 replies; 209+ messages in thread From: Dmitry Gutov @ 2015-11-05 22:36 UTC (permalink / raw) To: Michael Heerdegen, T.V Raman; +Cc: Nicolas Petton, emacs-devel On 11/05/2015 07:06 PM, Michael Heerdegen wrote: > I want to draw our attention to "generator.el" also, because when we > think about the future direction, we should keep in mind both of them, > because they are very related. Agreed. I haven't really tried it yet, but it seems to be one of the most interesting of the sequence-related additions. I can see us adding support in xref to accept generators as well, where we now only pass a list of xrefs. This should eliminate the main advantage rgrep has over xref-find-regexp: displaying matches as soon as Grep outputs each one. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-04 21:58 ` Nicolas Petton 2015-11-04 23:20 ` T.V Raman @ 2015-11-04 23:34 ` Michael Heerdegen 2015-11-05 9:27 ` Nicolas Petton 1 sibling, 1 reply; 209+ messages in thread From: Michael Heerdegen @ 2015-11-04 23:34 UTC (permalink / raw) To: emacs-devel Nicolas Petton <nicolas@petton.fr> writes: > Indeed! Could I by any chance get another pull request from you on > GitHub? Of course. Are you ok when `stream-pop' would raise a (newly defined) error when called on an empty stream? The problem is how one can notice when a stream has run out of elements when calling `stream-pop'. We could either just return nil (bad, because the stream could also generate nil if non-empty), return a dedicated flag (like an uninterned symbol that is internal to stream.el), or just signal a dedicated error that the programmer has to catch. I vote for the third alternative. Michael. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-04 23:34 ` streams are cool, you could stream virtually anything! Michael Heerdegen @ 2015-11-05 9:27 ` Nicolas Petton 2015-11-05 11:26 ` Artur Malabarba 0 siblings, 1 reply; 209+ messages in thread From: Nicolas Petton @ 2015-11-05 9:27 UTC (permalink / raw) To: Michael Heerdegen, emacs-devel [-- Attachment #1: Type: text/plain, Size: 474 bytes --] Michael Heerdegen <michael_heerdegen@web.de> writes: > Nicolas Petton <nicolas@petton.fr> writes: > >> Indeed! Could I by any chance get another pull request from you on >> GitHub? > > Of course. Are you ok when `stream-pop' would raise a (newly defined) > error when called on an empty stream? Yup, that's fine with me. One question though, how do you plan to implement it? I ask because now that I think about it, streams have been (until now) fully immutable. Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-05 9:27 ` Nicolas Petton @ 2015-11-05 11:26 ` Artur Malabarba 2015-11-05 11:52 ` Nicolas Petton 2015-11-05 14:12 ` Michael Heerdegen 0 siblings, 2 replies; 209+ messages in thread From: Artur Malabarba @ 2015-11-05 11:26 UTC (permalink / raw) To: Nicolas Petton; +Cc: Michael Heerdegen, emacs-devel 2015-11-05 9:27 GMT+00:00 Nicolas Petton <nicolas@petton.fr>: > Michael Heerdegen <michael_heerdegen@web.de> writes: > >> Nicolas Petton <nicolas@petton.fr> writes: >> >>> Indeed! Could I by any chance get another pull request from you on >>> GitHub? >> >> Of course. Are you ok when `stream-pop' would raise a (newly defined) >> error when called on an empty stream? > > Yup, that's fine with me. > > One question though, how do you plan to implement it? I ask because now > that I think about it, streams have been (until now) fully immutable. I would expect it to be a macro, (prog1 (stream-car stream) (setq stream (stream-cdr stream))) ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-05 11:26 ` Artur Malabarba @ 2015-11-05 11:52 ` Nicolas Petton 2015-11-05 16:31 ` raman 2015-11-05 23:06 ` Artur Malabarba 2015-11-05 14:12 ` Michael Heerdegen 1 sibling, 2 replies; 209+ messages in thread From: Nicolas Petton @ 2015-11-05 11:52 UTC (permalink / raw) To: bruce.connor.am; +Cc: Michael Heerdegen, emacs-devel [-- Attachment #1: Type: text/plain, Size: 223 bytes --] Artur Malabarba <bruce.connor.am@gmail.com> writes: > I would expect it to be a macro, > (prog1 (stream-car stream) (setq stream (stream-cdr stream))) My thought exactly. Do you think this should be in stream.el? Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-05 11:52 ` Nicolas Petton @ 2015-11-05 16:31 ` raman 2015-11-05 16:48 ` Michael Heerdegen 2015-11-05 23:06 ` Artur Malabarba 1 sibling, 1 reply; 209+ messages in thread From: raman @ 2015-11-05 16:31 UTC (permalink / raw) To: Nicolas Petton; +Cc: Michael Heerdegen, bruce.connor.am, emacs-devel 1+ on putting this in stream.el -- call it stream-cdr and alias stream-first to stream-car; other name possibilities stream-head and stream-tail. I dont like stream-pop because users might then expect there to be a stream-push --- which might cause confusion. -- ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-05 16:31 ` raman @ 2015-11-05 16:48 ` Michael Heerdegen 2015-11-05 21:58 ` Nicolas Petton 2015-11-06 2:08 ` John Wiegley 0 siblings, 2 replies; 209+ messages in thread From: Michael Heerdegen @ 2015-11-05 16:48 UTC (permalink / raw) To: raman; +Cc: Nicolas Petton, bruce.connor.am, emacs-devel raman <raman@google.com> writes: > I dont like stream-pop because users might then expect there to be a > stream-push --- which might cause confusion. Actually I plan a `stream-push' - why not? There is nothing wrong with that; `push' itself doesn't modify any list, it just sets the PLACE to the newly created cons (cons NEWELT PLACE) We can do the very same for streams; just use `stream-cons' instead of `cons': --8<---------------cut here---------------start------------->8--- (defmacro stream-push (newelt place) "Add NEWELT to the stream stored in PLACE. This is equivalent to (setf PLACE (stream-cons NEWELT PLACE))." `(cl-callf2 stream-cons ,newelt ,place)) --8<---------------cut here---------------end--------------->8--- Would that be ok? Regards, Michael ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-05 16:48 ` Michael Heerdegen @ 2015-11-05 21:58 ` Nicolas Petton 2015-11-05 23:05 ` Artur Malabarba 2015-11-06 2:08 ` John Wiegley 1 sibling, 1 reply; 209+ messages in thread From: Nicolas Petton @ 2015-11-05 21:58 UTC (permalink / raw) To: Michael Heerdegen, raman; +Cc: bruce.connor.am, emacs-devel [-- Attachment #1: Type: text/plain, Size: 562 bytes --] Michael Heerdegen <michael_heerdegen@web.de> writes: > We can do the very same for streams; just use `stream-cons' instead of > `cons': > > --8<---------------cut here---------------start------------->8--- > (defmacro stream-push (newelt place) > "Add NEWELT to the stream stored in PLACE. > This is equivalent to (setf PLACE (stream-cons NEWELT PLACE))." > `(cl-callf2 stream-cons ,newelt ,place)) > --8<---------------cut here---------------end--------------->8--- > > Would that be ok? I guess so, as long as we don't add too many such functions. Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-05 21:58 ` Nicolas Petton @ 2015-11-05 23:05 ` Artur Malabarba 2015-11-05 23:34 ` T.V Raman 2015-11-05 23:52 ` Michael Heerdegen 0 siblings, 2 replies; 209+ messages in thread From: Artur Malabarba @ 2015-11-05 23:05 UTC (permalink / raw) To: Nicolas Petton; +Cc: Michael Heerdegen, raman, emacs-devel [-- Attachment #1: Type: text/plain, Size: 872 bytes --] On 5 Nov 2015 9:58 pm, "Nicolas Petton" <nicolas@petton.fr> wrote: > > Michael Heerdegen <michael_heerdegen@web.de> writes: > > > We can do the very same for streams; just use `stream-cons' instead of > > `cons': > > > > --8<---------------cut here---------------start------------->8--- > > (defmacro stream-push (newelt place) > > "Add NEWELT to the stream stored in PLACE. > > This is equivalent to (setf PLACE (stream-cons NEWELT PLACE))." > > `(cl-callf2 stream-cons ,newelt ,place)) > > --8<---------------cut here---------------end--------------->8--- > > > > Would that be ok? > > I guess so, as long as we don't add too many such functions. I dunno. The way I think of streams it makes perfect sense to have a pop without a push. But maybe that's just me. You could call it stream-next or something like that, so people won't be confused by the lack of push. [-- Attachment #2: Type: text/html, Size: 1228 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-05 23:05 ` Artur Malabarba @ 2015-11-05 23:34 ` T.V Raman 2015-11-06 0:02 ` Artur Malabarba 2015-11-05 23:52 ` Michael Heerdegen 1 sibling, 1 reply; 209+ messages in thread From: T.V Raman @ 2015-11-05 23:34 UTC (permalink / raw) To: bruce.connor.am; +Cc: michael_heerdegen, nicolas, raman, emacs-devel I still like these things to be in pairs, and I'm not particularly sold on having stream-pop. I like the symmettry in stream-head and stream-tail -- probably because I originally learnt streams from SICP. Artur Malabarba writes: > On 5 Nov 2015 9:58 pm, "Nicolas Petton" <nicolas@petton.fr> wrote: > > > > Michael Heerdegen <michael_heerdegen@web.de> writes: > > > > > We can do the very same for streams; just use `stream-cons' instead of > > > `cons': > > > > > > --8<---------------cut here---------------start------------->8--- > > > (defmacro stream-push (newelt place) > > > "Add NEWELT to the stream stored in PLACE. > > > This is equivalent to (setf PLACE (stream-cons NEWELT PLACE))." > > > `(cl-callf2 stream-cons ,newelt ,place)) > > > --8<---------------cut here---------------end--------------->8--- > > > > > > Would that be ok? > > > > I guess so, as long as we don't add too many such functions. > > I dunno. The way I think of streams it makes perfect sense to have a pop without a push. But maybe that's just me. You could call it stream-next or something like that, so people won't be confused by the lack of push. > -- -- ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-05 23:34 ` T.V Raman @ 2015-11-06 0:02 ` Artur Malabarba 2015-11-06 0:39 ` T.V Raman 0 siblings, 1 reply; 209+ messages in thread From: Artur Malabarba @ 2015-11-06 0:02 UTC (permalink / raw) To: raman; +Cc: Michael Heerdegen, nicolas, emacs-devel [-- Attachment #1: Type: text/plain, Size: 481 bytes --] On 5 Nov 2015 11:34 pm, "T.V Raman" <raman@google.com> wrote: > > I still like these things to be in pairs, and I'm not particularly > sold on having stream-pop. Perhaps slightly unrelated, but I don't even think of push pop as a pair. I mean, I see the obvious the relation. It's just that I've never even used them in the same function, even though I use both a lot. But I digress. I haven't even used stream.el yet, so I'm just assuming stream-pop would be as useful as pop. [-- Attachment #2: Type: text/html, Size: 638 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-06 0:02 ` Artur Malabarba @ 2015-11-06 0:39 ` T.V Raman 0 siblings, 0 replies; 209+ messages in thread From: T.V Raman @ 2015-11-06 0:39 UTC (permalink / raw) To: bruce.connor.am; +Cc: michael_heerdegen, nicolas, emacs-devel, raman The mental pairing of push, pop isn't so much about using them in the same function -- it's more about your mental model of the API and what you expect -- so if you see stream-pop as an exported API function --- you implicitly assume that there must be a stream-push Artur Malabarba writes: > On 5 Nov 2015 11:34 pm, "T.V Raman" <raman@google.com> wrote: > > > > I still like these things to be in pairs, and I'm not particularly > > sold on having stream-pop. > > Perhaps slightly unrelated, but I don't even think of push pop as a pair. I mean, I see the obvious the relation. It's just that I've never even used them in the same function, even though I use both a lot. > > But I digress. I haven't even used stream.el yet, so I'm just assuming stream-pop would be as useful as pop. > -- -- ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-05 23:05 ` Artur Malabarba 2015-11-05 23:34 ` T.V Raman @ 2015-11-05 23:52 ` Michael Heerdegen 2015-11-06 2:19 ` John Wiegley 2015-11-06 10:47 ` Nicolas Petton 1 sibling, 2 replies; 209+ messages in thread From: Michael Heerdegen @ 2015-11-05 23:52 UTC (permalink / raw) To: emacs-devel Artur Malabarba <bruce.connor.am@gmail.com> writes: > I dunno. The way I think of streams it makes perfect sense to have a > pop without a push. But maybe that's just me. You could call it > stream-next or something like that, so people won't be confused by the > lack of push. I'm ok with not adding a push, I'm too not sure if it could ever be useful. OTOH, it has advantages to keep the name `pop': it's easy to discover, and if there are people requesting it for good reasons, we can still add it later without having to rename the other thing to "pop" again. Streams are analogous to lists in many regards, but are different in some aspects too, so I don't think it's a problem per se when there are functions named analogously, and related functions are different or named different or missing. If you name it `stream-next', I guess most people will wonder anyway "ok, that's probably just pop, but where's the push, or does that make no sense?". And when they use it the second time, they will wonder "Mmh, I know it was _not_ named `stream-pop' - but what was the name again?". Michael. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-05 23:52 ` Michael Heerdegen @ 2015-11-06 2:19 ` John Wiegley 2015-11-06 2:47 ` Michael Heerdegen 2015-11-06 10:49 ` Nicolas Petton 2015-11-06 10:47 ` Nicolas Petton 1 sibling, 2 replies; 209+ messages in thread From: John Wiegley @ 2015-11-06 2:19 UTC (permalink / raw) To: Michael Heerdegen; +Cc: emacs-devel >>>>> Michael Heerdegen <michael_heerdegen@web.de> writes: > OTOH, it has advantages to keep the name `pop': it's easy to discover, and > if there are people requesting it for good reasons, we can still add it > later without having to rename the other thing to "pop" again. I'd prefer `stream-car', myself. Maintaining consistency of nomenclature between "in memory lists" and "generated lists" (aka, streams) makes it very intuitive to pick the right name. And there will be many new ones to come. This is a mine rich and waiting. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-06 2:19 ` John Wiegley @ 2015-11-06 2:47 ` Michael Heerdegen 2015-11-06 15:09 ` Filipp Gunbin 2015-11-06 10:49 ` Nicolas Petton 1 sibling, 1 reply; 209+ messages in thread From: Michael Heerdegen @ 2015-11-06 2:47 UTC (permalink / raw) To: emacs-devel John Wiegley <jwiegley@gmail.com> writes: > I'd prefer `stream-car', myself. Maintaining consistency of > nomenclature between "in memory lists" and "generated lists" (aka, > streams) makes it very intuitive to pick the right name. And there > will be many new ones to come. This is a mine rich and waiting. Are you really speaking about what had been discussed here, i.e. somewhat like this: --8<---------------cut here---------------start------------->8--- (defmacro stream-pop (place) "Return the first element of the stream stored in PLACE. Set PLACE to it's `stream-cdr'." `(if (stream-empty-p ,place) (signal 'some-new-error-type nil) (prog1 (stream-first ,place) (cl-callf stream-rest ,place)))) --8<---------------cut here---------------end--------------->8--- or about what is currently named `stream-first'? When you want the above pop thing to be named `stream-car', I don't understand your preference. If not: FWIW, personally I prefer `stream-first' and `stream-rest' to `stream-car' and `stream-cdr' because these different names underline that streams are not conses. And that's an important aspect to keep in mind. In particular, streams are immutable, but a function named `stream-car' would somehow suggest the opposite. Not only are names important to be mnemonic; they are also a way for the user to build a mental model, and that should not lead him to problematic analogies. Michael. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-06 2:47 ` Michael Heerdegen @ 2015-11-06 15:09 ` Filipp Gunbin 0 siblings, 0 replies; 209+ messages in thread From: Filipp Gunbin @ 2015-11-06 15:09 UTC (permalink / raw) To: Michael Heerdegen; +Cc: emacs-devel On 06/11/2015 03:47 +0100, Michael Heerdegen wrote: [...] > If not: FWIW, personally I prefer `stream-first' and `stream-rest' to > `stream-car' and `stream-cdr' because these different names underline > that streams are not conses. And that's an important aspect to keep in > mind. In particular, streams are immutable, but a function named > `stream-car' would somehow suggest the opposite. `...-car' and `...-cdr' suggests only the presence of car and cdr (or head and tail), not the mutability of these, and there could also be `set-first' and `set-rest', although the latter sounds awkward. SICP talks about lists and streams, showing they are different approaches to sequences, and defines similar operations on both of them - I think having car and cdr for both is a nice analogy. Filipp ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-06 2:19 ` John Wiegley 2015-11-06 2:47 ` Michael Heerdegen @ 2015-11-06 10:49 ` Nicolas Petton 2015-11-06 13:09 ` Artur Malabarba 1 sibling, 1 reply; 209+ messages in thread From: Nicolas Petton @ 2015-11-06 10:49 UTC (permalink / raw) To: John Wiegley, Michael Heerdegen; +Cc: emacs-devel [-- Attachment #1: Type: text/plain, Size: 304 bytes --] John Wiegley <jwiegley@gmail.com> writes: > I'd prefer `stream-car', myself. Would an alias to the trick? On one hand an alias is cheap, but on the other hand I don't want to add too many aliases as I don't want to pollute stream's API. In this case aliasing would make sense though I think. Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-06 10:49 ` Nicolas Petton @ 2015-11-06 13:09 ` Artur Malabarba 2015-11-06 13:43 ` Nicolas Petton 0 siblings, 1 reply; 209+ messages in thread From: Artur Malabarba @ 2015-11-06 13:09 UTC (permalink / raw) To: Nicolas Petton; +Cc: Michael Heerdegen, John Wiegley, emacs-devel [-- Attachment #1: Type: text/plain, Size: 299 bytes --] On 6 Nov 2015 10:49 am, "Nicolas Petton" <nicolas@petton.fr> wrote: > > John Wiegley <jwiegley@gmail.com> writes: > > > I'd prefer `stream-car', myself. > > Would an alias to the trick? Are we still taking about the pop operation here? Because I would expect stream-car to not modify the variable. [-- Attachment #2: Type: text/html, Size: 498 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-06 13:09 ` Artur Malabarba @ 2015-11-06 13:43 ` Nicolas Petton 2015-11-06 15:41 ` John Wiegley 0 siblings, 1 reply; 209+ messages in thread From: Nicolas Petton @ 2015-11-06 13:43 UTC (permalink / raw) To: bruce.connor.am; +Cc: Michael Heerdegen, John Wiegley, emacs-devel [-- Attachment #1: Type: text/plain, Size: 438 bytes --] Artur Malabarba <bruce.connor.am@gmail.com> writes: > On 6 Nov 2015 10:49 am, "Nicolas Petton" <nicolas@petton.fr> wrote: >> >> John Wiegley <jwiegley@gmail.com> writes: >> >> > I'd prefer `stream-car', myself. >> >> Would an alias to the trick? > > Are we still taking about the pop operation here? Because I would expect > stream-car to not modify the variable. No, I guess that was for `stream-first' and `stream-rest', right? Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-06 13:43 ` Nicolas Petton @ 2015-11-06 15:41 ` John Wiegley 2015-11-06 16:13 ` John Wiegley 2015-11-06 17:36 ` Nicolas Petton 0 siblings, 2 replies; 209+ messages in thread From: John Wiegley @ 2015-11-06 15:41 UTC (permalink / raw) To: Nicolas Petton; +Cc: Michael Heerdegen, bruce.connor.am, emacs-devel >>>>> Nicolas Petton <nicolas@petton.fr> writes: > No, I guess that was for `stream-first' and `stream-rest', right? Correct, I didn't mean to talk about stream-pop/push, but first/rest. Since first/rest do mean car/cdr in cl.el, having both sets makes sense. But I also meant to comment on how we choose more streaming names in the future. As someone else mentioned, lists and streams overlap at the notion of sequences -- the main differences being the operational semantics of laziness, and the semantics of allowing infinite streams. So let's say I've written a function over lists, and I realize I want it to act on streams instead. I'd hope that I could just insert "stream-" in several places and fulfill that need. If I have to also change over to a different set of names for the same effective operations, that would be unfortunate. One could even imagine a wrapper library that works on both lists and streams -- since lists are effectively pre-computed streams -- but that may be more than we need just yet. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-06 15:41 ` John Wiegley @ 2015-11-06 16:13 ` John Wiegley 2015-11-06 17:36 ` Nicolas Petton 1 sibling, 0 replies; 209+ messages in thread From: John Wiegley @ 2015-11-06 16:13 UTC (permalink / raw) To: Nicolas Petton; +Cc: Michael Heerdegen, bruce.connor.am, emacs-devel >>>>> John Wiegley <jwiegley@gmail.com> writes: > As someone else mentioned, lists and streams overlap at the notion of > sequences -- the main differences being the operational semantics of > laziness, and the semantics of allowing infinite streams. > So let's say I've written a function over lists, and I realize I want it to > act on streams instead. I'd hope that I could just insert "stream-" in > several places and fulfill that need. If I have to also change over to a > different set of names for the same effective operations, that would be > unfortunate. This got sent before reading your comments on `seq', Nicolas, so please disregard. John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-06 15:41 ` John Wiegley 2015-11-06 16:13 ` John Wiegley @ 2015-11-06 17:36 ` Nicolas Petton 1 sibling, 0 replies; 209+ messages in thread From: Nicolas Petton @ 2015-11-06 17:36 UTC (permalink / raw) To: John Wiegley; +Cc: Michael Heerdegen, bruce.connor.am, emacs-devel [-- Attachment #1: Type: text/plain, Size: 606 bytes --] John Wiegley <jwiegley@gmail.com> writes: > So let's say I've written a function over lists, and I realize I want it to > act on streams instead. I'd hope that I could just insert "stream-" in several > places and fulfill that need. If I have to also change over to a different set > of names for the same effective operations, that would be unfortunate. That's exactly why I did seq.el! :-) It doesn't have `seq-first' and `seq-rest' though, but I could very well add them. The only thing we will have to know is that `seq-rest' will be more expensive on arrays than lists and streams. Cheers, Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-05 23:52 ` Michael Heerdegen 2015-11-06 2:19 ` John Wiegley @ 2015-11-06 10:47 ` Nicolas Petton 1 sibling, 0 replies; 209+ messages in thread From: Nicolas Petton @ 2015-11-06 10:47 UTC (permalink / raw) To: Michael Heerdegen, emacs-devel [-- Attachment #1: Type: text/plain, Size: 406 bytes --] Michael Heerdegen <michael_heerdegen@web.de> writes: > > I'm ok with not adding a push, I'm too not sure if it could ever be > useful. I agree. > OTOH, it has advantages to keep the name `pop': it's easy to discover, > and if there are people requesting it for good reasons, we can still add > it later without having to rename the other thing to "pop" again. Yes, `stream-pop' is ok with me too. Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-05 16:48 ` Michael Heerdegen 2015-11-05 21:58 ` Nicolas Petton @ 2015-11-06 2:08 ` John Wiegley 2015-11-06 15:33 ` Nicolas Petton 1 sibling, 1 reply; 209+ messages in thread From: John Wiegley @ 2015-11-06 2:08 UTC (permalink / raw) To: Nicolas Petton; +Cc: Michael Heerdegen, emacs-devel, bruce.connor.am, raman Hi Nicolas, A rich source of ideas could come from looking at the streaming libraries of other languages, like SERIES in Common Lisp, or conduit in Haskell. To give just a few ideas of what might arise from such research: stream-take N STR Produce a stream composed of up to the first N elements of STR. stream-drop N STR Produce a stream starting after the first N elements of STR. stream-cdr = stream-drop 1 stream-apply #'FUNC STR1.. STRN Given a function, reads its arguments from STR1.. STRN, and #'apply the function to those arguments. Its result is the corresponding element of the resulting stream. Continue until one of the argument streams reaches its end. stream-zip = stream-apply #'cons stream-apply* #'FUNC STR1.. STRN Like stream-apply, but any exhausted argument stream is seen to return nil until all are exhausted. stream-iterate FUNC VAL Produce a stream by funcall'ing FUNC on VAL to determine the first element, then funcall FUNC on that result to produce the next element, so on until infinity. stream-isolate N STR Ensure a resulting stream that is exactly N elements long. This is like stream-take if STR is longer, otherwise it's like appending N-M nil values onto STR, where M is the actual length. stream-append STR1 STR2 Concatenate two streams, producing a longer one. stream-loop This is a macro wrapper around `loop' that adds a new keyword: streaming. Like collect, except it collects the results in a stream instead of a list. stream-list LIST Make a list look like a stream (i.e., accessible using the stream API). stream-collect STR Drain all the elements of STR into a list. stream-repeat N VAL A stream consisting of VAL repeated N times. This list could easily be many times as long... For more inspiration see: http://hackage.haskell.org/package/conduit-combinators-1.0.3/docs/Conduit.html If you'd like me continue, just say. I've written libraries similar to this before, just not in Emacs Lisp (and it's awesome that it's becoming easy to!). John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-06 2:08 ` John Wiegley @ 2015-11-06 15:33 ` Nicolas Petton 2015-11-06 16:08 ` John Wiegley 0 siblings, 1 reply; 209+ messages in thread From: Nicolas Petton @ 2015-11-06 15:33 UTC (permalink / raw) To: John Wiegley; +Cc: Michael Heerdegen, emacs-devel, bruce.connor.am, raman [-- Attachment #1: Type: text/plain, Size: 1144 bytes --] John Wiegley <jwiegley@gmail.com> writes: > Hi Nicolas, Hi John, > A rich source of ideas could come from looking at the streaming libraries of > other languages, like SERIES in Common Lisp, or conduit in Haskell. To give > just a few ideas of what might arise from such research: > > stream-take N STR > > Produce a stream composed of up to the first N elements of STR. > > stream-drop N STR > > Produce a stream starting after the first N elements of STR. > > stream-cdr = stream-drop 1 > > stream-apply #'FUNC STR1.. STRN > > Given a function, reads its arguments from STR1.. STRN, and #'apply > the function to those arguments. Its result is the corresponding > element of the resulting stream. Continue until one of the argument > streams reaches its end. > > stream-zip = stream-apply #'cons Just to be sure, have you seen that streams are "seq"-eables? It means that `seq-take', `seq-drop', `seq-map', `seq-filter', `seq-reduce', etc. all work on streams (with lazy evaluation as well of course). Some of the functions you mentioned are nice though. Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-06 15:33 ` Nicolas Petton @ 2015-11-06 16:08 ` John Wiegley 2015-11-06 17:12 ` Nicolas Petton 0 siblings, 1 reply; 209+ messages in thread From: John Wiegley @ 2015-11-06 16:08 UTC (permalink / raw) To: Nicolas Petton; +Cc: Michael Heerdegen, emacs-devel, bruce.connor.am, raman >>>>> Nicolas Petton <nicolas@petton.fr> writes: > Just to be sure, have you seen that streams are "seq"-eables? It means that > `seq-take', `seq-drop', `seq-map', `seq-filter', `seq-reduce', etc. all work > on streams (with lazy evaluation as well of course). No! I'm not very familiar with `seq' yet, clearly. Thanks for letting me know. I need to bone up on what Emacs is capable of these days. Time to read the manual and the lisp/ directory again. :) John ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-06 16:08 ` John Wiegley @ 2015-11-06 17:12 ` Nicolas Petton 0 siblings, 0 replies; 209+ messages in thread From: Nicolas Petton @ 2015-11-06 17:12 UTC (permalink / raw) To: John Wiegley; +Cc: Michael Heerdegen, emacs-devel, bruce.connor.am, raman [-- Attachment #1: Type: text/plain, Size: 390 bytes --] John Wiegley <jwiegley@gmail.com> writes: > No! I'm not very familiar with `seq' yet, clearly. Thanks for letting me know. > I need to bone up on what Emacs is capable of these days. Time to read the > manual and the lisp/ directory again. :) Indeed, you'll even find a chapter in the elisp manual about this in the sequences section! (info "(elisp) Sequences Arrays Vectors") Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-05 11:52 ` Nicolas Petton 2015-11-05 16:31 ` raman @ 2015-11-05 23:06 ` Artur Malabarba 1 sibling, 0 replies; 209+ messages in thread From: Artur Malabarba @ 2015-11-05 23:06 UTC (permalink / raw) To: Nicolas Petton; +Cc: Michael Heerdegen, emacs-devel [-- Attachment #1: Type: text/plain, Size: 353 bytes --] On 5 Nov 2015 11:52 am, "Nicolas Petton" <nicolas@petton.fr> wrote: > > Artur Malabarba <bruce.connor.am@gmail.com> writes: > > > I would expect it to be a macro, > > (prog1 (stream-car stream) (setq stream (stream-cdr stream))) > > My thought exactly. Do you think this should be in stream.el? Yes. It's a super convenient way to consume sequences. [-- Attachment #2: Type: text/html, Size: 571 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-05 11:26 ` Artur Malabarba 2015-11-05 11:52 ` Nicolas Petton @ 2015-11-05 14:12 ` Michael Heerdegen 1 sibling, 0 replies; 209+ messages in thread From: Michael Heerdegen @ 2015-11-05 14:12 UTC (permalink / raw) To: Artur Malabarba; +Cc: Nicolas Petton, emacs-devel Artur Malabarba <bruce.connor.am@gmail.com> writes: > I would expect it to be a macro, > (prog1 (stream-car stream) (setq stream (stream-cdr stream))) Exactly, that's what I intent. Michael. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-04 12:39 streams are cool, you could stream virtually anything! Nicolas Petton 2015-11-04 15:50 ` John Wiegley @ 2015-11-04 17:00 ` Phillip Lord 2015-11-04 22:00 ` Nicolas Petton 2015-11-04 17:57 ` Michael Heerdegen 2 siblings, 1 reply; 209+ messages in thread From: Phillip Lord @ 2015-11-04 17:00 UTC (permalink / raw) To: Nicolas Petton; +Cc: Damien Cassou, emacs-devel At the risk of this sounding like a plug, it was my desire to get away from looping that motivated my own library m-buffer (https://github.com/phillord/m-buffer-el). This is not lazy, but is list based. I'd have a couple of questions with this approach. First, what happens if the lambda *changes* the buffer? Mixing this form of mutability with laziness is, I think, going to be unpredictable. Second question, what happens to the match data? How would you deal with nil'ing markers after use? Otherwise, you're going to fill the buffer up with markers (they do GC, but slowly). Phil Nicolas Petton <nicolas@petton.fr> writes: > Hi guys, > > Aren't you tired of writing the same for loops in various contexts? > I know I was, and there's a better way! > > I just added a function `stream-regexp' to stream.el to stream the > search of a regexp in a buffer: > > > (let ((str (stream-regexp buf ".*foo\\(.*\\)$"))) > (seq-map (lambda (match-data) > ...) > str)) > > (I still have to document it and test it properly) > > Because streams are lazy and immutable, you can reuse such a stream > forever or keep it for later, move around in a buffer or modify the > buffer and re-evaluate the stream (you'll get new match data), or map > the result, etc. > > All the credit goes to Damien Cassou for giving me the idea :-) > > Cheers, > Nico ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-04 17:00 ` Phillip Lord @ 2015-11-04 22:00 ` Nicolas Petton 2015-11-05 12:28 ` Phillip Lord 0 siblings, 1 reply; 209+ messages in thread From: Nicolas Petton @ 2015-11-04 22:00 UTC (permalink / raw) To: Phillip Lord; +Cc: Damien Cassou, emacs-devel [-- Attachment #1: Type: text/plain, Size: 355 bytes --] Phillip Lord <phillip.lord@russet.org.uk> writes: > I'd have a couple of questions with this approach. First, what happens > if the lambda *changes* the buffer? Mixing this form of mutability with > laziness is, I think, going to be unpredictable. I agree, but I don't see how that's any different from modifying the buffer while in a while loop? Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-04 22:00 ` Nicolas Petton @ 2015-11-05 12:28 ` Phillip Lord 2015-11-05 13:45 ` Nicolas Petton 2015-11-05 16:35 ` Eli Zaretskii 0 siblings, 2 replies; 209+ messages in thread From: Phillip Lord @ 2015-11-05 12:28 UTC (permalink / raw) To: Nicolas Petton; +Cc: Damien Cassou, emacs-devel Nicolas Petton <nicolas@petton.fr> writes: > Phillip Lord <phillip.lord@russet.org.uk> writes: > >> I'd have a couple of questions with this approach. First, what happens >> if the lambda *changes* the buffer? Mixing this form of mutability with >> laziness is, I think, going to be unpredictable. > > I agree, but I don't see how that's any different from modifying the > buffer while in a while loop? Emacs is single threaded, so the only thing that can change the buffer during a while loop is the stuff in the while loop. So, with m-buffer, for instance, you get back a list of markers based on the world now. With laziness, though, do the results of the stream depend on the state of the buffer when the stream is created, realised, or the state of the buffer now. I don't know if this is a problem or not, which is why I am asking. Phil ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-05 12:28 ` Phillip Lord @ 2015-11-05 13:45 ` Nicolas Petton 2015-11-05 15:15 ` Michael Heerdegen 2015-11-05 16:35 ` Eli Zaretskii 1 sibling, 1 reply; 209+ messages in thread From: Nicolas Petton @ 2015-11-05 13:45 UTC (permalink / raw) To: Phillip Lord; +Cc: Damien Cassou, emacs-devel [-- Attachment #1: Type: text/plain, Size: 1100 bytes --] Phillip Lord <phillip.lord@russet.org.uk> writes: > Emacs is single threaded, so the only thing that can change the buffer > during a while loop is the stuff in the while loop. So, with m-buffer, > for instance, you get back a list of markers based on the world now. > > With laziness, though, do the results of the stream depend on the state > of the buffer when the stream is created, realised, or the state of the > buffer now. It depends on the state of the buffer during the execution of the mapping in my example, i.e. when the stream is realized, so the behavior is similar to the while loop. > I don't know if this is a problem or not, which is why I am asking. No, it's not, unless you do things like (`seq-do' is eager): (seq-do (lambda (match-data) (something-that-modifies-the-buffer) ...) (stream-regexp buf ".*foo\\(.*\\)$"))))) But then it's just the same issue as with a while loop: (cl-loop while (re-search-forward "^ - \\(.*\\) :: \\(.*\\)$" end t) do (something-that-modifies-the-buffer) ...) Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-05 13:45 ` Nicolas Petton @ 2015-11-05 15:15 ` Michael Heerdegen 0 siblings, 0 replies; 209+ messages in thread From: Michael Heerdegen @ 2015-11-05 15:15 UTC (permalink / raw) To: emacs-devel Nicolas Petton <nicolas@petton.fr> writes: > > I don't know if this is a problem or not, which is why I am asking. > > No, it's not, unless you do things like (`seq-do' is eager): Let's say it depends on what you want to achieve with this function. The current implementation is simple but has two downsides: - It pollutes the searched buffer with markers, unnecessarily, because it doesn't allow to change the buffer, so positions (numbers) would suffice - It has no state. If you want to use it like an iterator (aka `stream-pop'), you currently can't pause, do something else (move point, edit the buffer), and continue. Here is a version that tries to solve these problems: --8<---------------cut here---------------start------------->8--- ;; -*- lexical-binding: t -*- (defun stream-regexp (buffer regexp) (let ((match nil)) (letrec ((builder (lambda (buffer regexp) (stream-make (save-match-data (save-excursion (goto-char (or match (point-min))) (with-current-buffer buffer (setq match (re-search-forward regexp nil t))) (when match (setq match (copy-marker match)) (cons (cons (match-beginning 0) (match-end 0)) (funcall builder buffer regexp))))))))) (funcall builder buffer regexp)))) --8<---------------cut here---------------end--------------->8--- Regards, Michael. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-05 12:28 ` Phillip Lord 2015-11-05 13:45 ` Nicolas Petton @ 2015-11-05 16:35 ` Eli Zaretskii 2015-11-06 9:54 ` Phillip Lord 1 sibling, 1 reply; 209+ messages in thread From: Eli Zaretskii @ 2015-11-05 16:35 UTC (permalink / raw) To: Phillip Lord; +Cc: damien, nicolas, emacs-devel > From: phillip.lord@russet.org.uk (Phillip Lord) > Date: Thu, 05 Nov 2015 12:28:42 +0000 > Cc: Damien Cassou <damien@cassou.me>, emacs-devel <emacs-devel@gnu.org> > > Emacs is single threaded, so the only thing that can change the buffer > during a while loop is the stuff in the while loop. Apologies if what I'm saying makes no sense for this particular discussion (I didn't track it), but such assumptions are generally incorrect, unless you have extremely tight control on the code inside that loop (read: you yourself wrote every single function it calls, and you know very well what you are doing). Otherwise, you might be in for a surprise. For example, code that calls sit-for or even read-event can invoke timers, which can do all kinds of things to your buffer. Even some primitive that calls QUIT could potentially do that, although not with the current code base (QUIT invokes atimers). There be dragons. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-05 16:35 ` Eli Zaretskii @ 2015-11-06 9:54 ` Phillip Lord 0 siblings, 0 replies; 209+ messages in thread From: Phillip Lord @ 2015-11-06 9:54 UTC (permalink / raw) To: Eli Zaretskii; +Cc: damien, nicolas, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: phillip.lord@russet.org.uk (Phillip Lord) >> Date: Thu, 05 Nov 2015 12:28:42 +0000 >> Cc: Damien Cassou <damien@cassou.me>, emacs-devel <emacs-devel@gnu.org> >> >> Emacs is single threaded, so the only thing that can change the buffer >> during a while loop is the stuff in the while loop. > > Apologies if what I'm saying makes no sense for this particular > discussion (I didn't track it), but such assumptions are generally > incorrect, unless you have extremely tight control on the code inside > that loop (read: you yourself wrote every single function it calls, > and you know very well what you are doing). Otherwise, you might be > in for a surprise. For example, code that calls sit-for or even > read-event can invoke timers, which can do all kinds of things to your > buffer. Even some primitive that calls QUIT could potentially do > that, although not with the current code base (QUIT invokes atimers). > > There be dragons. Eli You are, indeed, correct. Perhaps I could rephrase, and say that during a while loop there are circumstances when the buffer could change as a result of something else happening. With a lazily evaluation of a search through the buffer, though, I think that those issues might be larger. Still, you can never tell with these things for sure, till you try them. A streaming interface to emacs buffers sound like it might be interesting, and I've thought about it myself before. We shall see! Phil ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-04 12:39 streams are cool, you could stream virtually anything! Nicolas Petton 2015-11-04 15:50 ` John Wiegley 2015-11-04 17:00 ` Phillip Lord @ 2015-11-04 17:57 ` Michael Heerdegen 2015-11-04 22:00 ` Nicolas Petton 2 siblings, 1 reply; 209+ messages in thread From: Michael Heerdegen @ 2015-11-04 17:57 UTC (permalink / raw) To: emacs-devel Hi Nicolas, > Because streams are lazy and immutable, you can reuse such a stream > forever or keep it for later, move around in a buffer or modify the > buffer and re-evaluate the stream (you'll get new match data), or map > the result, etc. A different cool thing you can use streams for is to traverse a file tree recursively (to do something with the files, e.g. search them). With streams, such an operation can be paused and resumed later. Will make a PR if you are interested (but it is easy to implement). Regards, Michael. ^ permalink raw reply [flat|nested] 209+ messages in thread
* Re: streams are cool, you could stream virtually anything! 2015-11-04 17:57 ` Michael Heerdegen @ 2015-11-04 22:00 ` Nicolas Petton 0 siblings, 0 replies; 209+ messages in thread From: Nicolas Petton @ 2015-11-04 22:00 UTC (permalink / raw) To: Michael Heerdegen, emacs-devel [-- Attachment #1: Type: text/plain, Size: 398 bytes --] Michael Heerdegen <michael_heerdegen@web.de> writes: > A different cool thing you can use streams for is to traverse a file > tree recursively (to do something with the files, e.g. search them). > > With streams, such an operation can be paused and resumed later. > > Will make a PR if you are interested (but it is easy to implement). Of course, that an awesome idea, thank you very much! Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 209+ messages in thread
[parent not found: <<87ziyuaqhl.fsf@petton.fr>]
end of thread, other threads:[~2015-11-18 10:12 UTC | newest] Thread overview: 209+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-11-04 12:39 streams are cool, you could stream virtually anything! Nicolas Petton 2015-11-04 15:50 ` John Wiegley 2015-11-04 16:59 ` Damien Cassou 2015-11-04 18:06 ` Michael Heerdegen 2015-11-04 19:17 ` Michael Heerdegen 2015-11-04 21:58 ` Nicolas Petton 2015-11-04 23:20 ` T.V Raman 2015-11-04 23:31 ` Nicolas Petton 2015-11-05 0:27 ` John Wiegley 2015-11-05 0:38 ` T.V Raman 2015-11-05 0:48 ` ELPA policy (Was: streams are cool, you could stream virtually anything!) John Wiegley 2015-11-05 0:52 ` T.V Raman 2015-11-08 17:18 ` ELPA policy Achim Gratz 2015-11-08 17:49 ` Eli Zaretskii 2015-11-08 20:52 ` Aaron Ecay 2015-11-09 3:42 ` Eli Zaretskii 2015-11-09 3:51 ` Dmitry Gutov 2015-11-09 11:15 ` New ELPA policy proposal (was: ELPA policy) Oleh Krehel 2015-11-09 13:51 ` Artur Malabarba 2015-11-09 15:02 ` New ELPA policy proposal Oleh Krehel 2015-11-09 16:22 ` Artur Malabarba 2015-11-09 15:41 ` Wolfgang Jenkner 2015-11-09 15:50 ` Dmitry Gutov 2015-11-09 16:13 ` Wolfgang Jenkner 2015-11-09 21:50 ` Richard Stallman 2015-11-09 16:25 ` Artur Malabarba 2015-11-09 16:11 ` New ELPA policy proposal (was: ELPA policy) Eli Zaretskii 2015-11-10 7:26 ` New ELPA policy proposal Oleh Krehel 2015-11-10 14:24 ` John Wiegley 2015-11-10 16:36 ` Eli Zaretskii 2015-11-09 16:05 ` ELPA policy Eli Zaretskii 2015-11-09 16:15 ` Dmitry Gutov 2015-11-09 16:20 ` Eli Zaretskii 2015-11-09 16:26 ` Dmitry Gutov 2015-11-09 16:44 ` Eli Zaretskii 2015-11-09 17:46 ` Dmitry Gutov 2015-11-09 16:35 ` Artur Malabarba 2015-11-09 19:52 ` John Wiegley 2015-11-09 20:17 ` Achim Gratz 2015-11-09 21:38 ` John Wiegley 2015-11-10 20:07 ` Achim Gratz 2015-11-09 21:51 ` Richard Stallman 2015-11-09 22:06 ` John Wiegley 2015-11-09 23:05 ` Artur Malabarba 2015-11-10 18:18 ` Richard Stallman 2015-11-11 15:11 ` Nicolas Petton 2015-11-11 17:03 ` Richard Stallman 2015-11-09 23:47 ` Nicolas Petton 2015-11-09 23:44 ` Nicolas Petton 2015-11-09 23:42 ` Nicolas Petton 2015-11-09 23:52 ` Aaron Ecay 2015-11-10 0:04 ` John Wiegley 2015-11-10 18:06 ` Stephen Leake [not found] ` <"<87lha5snji.fsf"@isaac.fritz.box> [not found] ` <"<87d1vhsmuj.fsf"@isaac.fritz.box> [not found] ` <"<878u65slue.fsf"@isaac.fritz.box> [not found] ` <"<874mgtsjwn.fsf"@isaac.fritz.box> 2015-11-10 18:28 ` John Wiegley 2015-11-10 18:32 ` Dmitry Gutov 2015-11-10 18:35 ` John Wiegley 2015-11-10 18:44 ` David Engster 2015-11-10 18:49 ` John Wiegley 2015-11-10 20:00 ` Dmitry Gutov 2015-11-11 15:15 ` xref and GNU Global (Re: ELPA policy) Nicolas Petton 2015-11-11 15:22 ` Dmitry Gutov 2015-11-11 23:19 ` Stephen Leake 2015-11-11 23:32 ` Dmitry Gutov 2015-11-12 7:07 ` Stephen Leake 2015-11-11 23:12 ` Stephen Leake 2015-11-11 23:52 ` Nicolas Petton 2015-11-12 7:05 ` Stephen Leake 2015-11-10 19:15 ` ELPA policy Eli Zaretskii 2015-11-10 22:44 ` xref CEDET (was ELPA policy) Stephen Leake 2015-11-10 21:52 ` ELPA policy Dmitry Gutov 2015-11-10 18:37 ` David Engster 2015-11-10 19:57 ` Dmitry Gutov 2015-11-10 20:01 ` Eli Zaretskii 2015-11-10 20:19 ` Dmitry Gutov 2015-11-10 20:34 ` Eli Zaretskii 2015-11-10 21:16 ` Dmitry Gutov 2015-11-10 21:27 ` Dmitry Gutov 2015-11-10 22:40 ` Stephen Leake 2015-11-10 20:45 ` David Engster 2015-11-10 21:07 ` Dmitry Gutov 2015-11-10 18:43 ` David Engster 2015-11-10 18:52 ` John Wiegley 2015-11-10 18:58 ` David Engster 2015-11-10 19:03 ` John Wiegley 2015-11-10 19:20 ` David Engster 2015-11-10 19:43 ` John Wiegley 2015-11-10 20:02 ` David Engster 2015-11-10 20:24 ` John Wiegley 2015-11-10 23:08 ` Stephen Leake 2015-11-10 23:31 ` John Wiegley 2015-11-11 0:32 ` Drew Adams 2015-11-11 0:36 ` John Wiegley 2015-11-11 9:25 ` Stephen Leake 2015-11-11 13:52 ` Filipp Gunbin 2015-11-11 21:22 ` Stephen Leake 2015-11-12 13:24 ` Filipp Gunbin 2015-11-12 17:11 ` John Wiegley 2015-11-12 19:17 ` Filipp Gunbin 2015-11-12 19:31 ` John Wiegley 2015-11-14 10:16 ` Stephen Leake 2015-11-12 19:52 ` Stephen Leake 2015-11-13 13:06 ` Filipp Gunbin 2015-11-14 10:30 ` Stephen Leake 2015-11-17 13:01 ` Filipp Gunbin 2015-11-17 16:18 ` Stephen Leake 2015-11-17 15:51 ` Tom Tromey 2015-11-11 17:02 ` Richard Stallman 2015-11-11 17:24 ` John Wiegley 2015-11-12 14:02 ` Phillip Lord 2015-11-12 17:11 ` John Wiegley 2015-11-12 19:59 ` Stephen Leake 2015-11-13 21:58 ` Richard Stallman 2015-11-14 1:15 ` JJ Asghar 2015-11-14 17:23 ` Jorge A. Alfaro-Murillo 2015-11-15 16:37 ` John Wiegley [not found] ` <<86bnb06g7g.fsf@stephe-leake.org> [not found] ` <<E1ZwYnH-0004b0-Gu@fencepost.gnu.org> 2015-11-11 17:47 ` Drew Adams 2015-11-11 19:23 ` John Wiegley 2015-11-11 19:58 ` Drew Adams 2015-11-11 23:27 ` Richard Stallman 2015-11-12 0:35 ` Artur Malabarba 2015-11-12 0:42 ` Dmitry Gutov 2015-11-12 22:34 ` Richard Stallman 2015-11-13 0:49 ` Artur Malabarba 2015-11-12 6:49 ` Stephen Leake 2015-11-12 15:09 ` Drew Adams 2015-11-12 17:29 ` Alex Schröder 2015-11-12 22:33 ` Richard Stallman 2015-11-14 10:33 ` Stephen Leake 2015-11-14 21:05 ` Richard Stallman [not found] ` <<86oaezemp9.fsf@stephe-leake.org> [not found] ` <<E1Zx0QR-0004QE-Ga@fencepost.gnu.org> 2015-11-12 23:05 ` Drew Adams 2015-11-13 7:51 ` Eli Zaretskii 2015-11-13 22:00 ` Richard Stallman [not found] ` <<E1ZxMOr-0004hb-VH@fencepost.gnu.org> 2015-11-13 23:03 ` Drew Adams 2015-11-14 1:44 ` Richard Stallman 2015-11-15 9:28 ` Michael Heerdegen 2015-11-15 15:44 ` Drew Adams 2015-11-17 22:55 ` Richard Stallman 2015-11-17 23:17 ` John Wiegley 2015-11-18 9:53 ` Artur Malabarba 2015-11-18 10:12 ` David Kastrup 2015-11-14 9:57 ` Achim Gratz [not found] ` <<m2twosgx1m.fsf@Vulcan.attlocal.net> [not found] ` <<E1Zwent-0000bG-9i@fencepost.gnu.org> 2015-11-12 0:22 ` Drew Adams 2015-11-10 23:01 ` Stephen Leake 2015-11-10 22:53 ` Stephen Leake 2015-11-10 19:17 ` Eli Zaretskii 2015-11-10 23:10 ` Stephen Leake 2015-11-10 22:52 ` Stephen Leake 2015-11-10 18:49 ` Eli Zaretskii 2015-11-10 18:54 ` John Wiegley 2015-11-10 19:21 ` Eli Zaretskii 2015-11-10 19:26 ` Eli Zaretskii 2015-11-10 19:29 ` John Wiegley 2015-11-10 20:06 ` Dmitry Gutov 2015-11-10 23:25 ` Stephen Leake 2015-11-10 23:23 ` Stephen Leake 2015-11-10 20:03 ` Dmitry Gutov 2015-11-10 23:16 ` Stephen Leake 2015-11-10 22:36 ` Stephen Leake 2015-11-10 22:54 ` John Wiegley 2015-11-10 23:01 ` Drew Adams 2015-11-11 9:13 ` Stephen Leake 2015-11-11 14:58 ` Drew Adams 2015-11-09 18:22 ` Achim Gratz 2015-11-09 18:45 ` Eli Zaretskii 2015-11-09 18:58 ` David Engster 2015-11-09 19:08 ` Eli Zaretskii 2015-11-09 19:35 ` David Engster 2015-11-09 20:12 ` Eli Zaretskii 2015-11-09 19:53 ` Rasmus 2015-11-09 19:58 ` Achim Gratz 2015-11-05 17:06 ` streams and generators (was: streams are cool, you could stream virtually anything!) Michael Heerdegen 2015-11-05 22:36 ` streams and generators Dmitry Gutov 2015-11-04 23:34 ` streams are cool, you could stream virtually anything! Michael Heerdegen 2015-11-05 9:27 ` Nicolas Petton 2015-11-05 11:26 ` Artur Malabarba 2015-11-05 11:52 ` Nicolas Petton 2015-11-05 16:31 ` raman 2015-11-05 16:48 ` Michael Heerdegen 2015-11-05 21:58 ` Nicolas Petton 2015-11-05 23:05 ` Artur Malabarba 2015-11-05 23:34 ` T.V Raman 2015-11-06 0:02 ` Artur Malabarba 2015-11-06 0:39 ` T.V Raman 2015-11-05 23:52 ` Michael Heerdegen 2015-11-06 2:19 ` John Wiegley 2015-11-06 2:47 ` Michael Heerdegen 2015-11-06 15:09 ` Filipp Gunbin 2015-11-06 10:49 ` Nicolas Petton 2015-11-06 13:09 ` Artur Malabarba 2015-11-06 13:43 ` Nicolas Petton 2015-11-06 15:41 ` John Wiegley 2015-11-06 16:13 ` John Wiegley 2015-11-06 17:36 ` Nicolas Petton 2015-11-06 10:47 ` Nicolas Petton 2015-11-06 2:08 ` John Wiegley 2015-11-06 15:33 ` Nicolas Petton 2015-11-06 16:08 ` John Wiegley 2015-11-06 17:12 ` Nicolas Petton 2015-11-05 23:06 ` Artur Malabarba 2015-11-05 14:12 ` Michael Heerdegen 2015-11-04 17:00 ` Phillip Lord 2015-11-04 22:00 ` Nicolas Petton 2015-11-05 12:28 ` Phillip Lord 2015-11-05 13:45 ` Nicolas Petton 2015-11-05 15:15 ` Michael Heerdegen 2015-11-05 16:35 ` Eli Zaretskii 2015-11-06 9:54 ` Phillip Lord 2015-11-04 17:57 ` Michael Heerdegen 2015-11-04 22:00 ` Nicolas Petton [not found] <<87ziyuaqhl.fsf@petton.fr>
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.