* Autoload from a web page? @ 2009-12-26 2:55 Lennart Borgman 2009-12-27 3:13 ` Richard Stallman 2009-12-29 17:05 ` Stefan Monnier 0 siblings, 2 replies; 129+ messages in thread From: Lennart Borgman @ 2009-12-26 2:55 UTC (permalink / raw) To: Emacs-Devel devel Just a wild idea: Would it be possible to setup a function to download an elisp file from a web page when called and then evaluate that file and call itself again (with the old parameters), now with the new definition from the web page? Would it be possible to redefine `require' during this eval so that it downloads required files from the same web site (if they are missing)? ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-26 2:55 Autoload from a web page? Lennart Borgman @ 2009-12-27 3:13 ` Richard Stallman 2009-12-27 3:24 ` Lennart Borgman 2009-12-29 17:05 ` Stefan Monnier 1 sibling, 1 reply; 129+ messages in thread From: Richard Stallman @ 2009-12-27 3:13 UTC (permalink / raw) To: Lennart Borgman; +Cc: emacs-devel Would it be possible to setup a function to download an elisp file from a web page when called and then evaluate that file and call itself again (with the old parameters), now with the new definition from the web page? It must be possible, but we should warn people not to take the risk of doing this. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-27 3:13 ` Richard Stallman @ 2009-12-27 3:24 ` Lennart Borgman 2009-12-28 18:48 ` Richard Stallman 0 siblings, 1 reply; 129+ messages in thread From: Lennart Borgman @ 2009-12-27 3:24 UTC (permalink / raw) To: rms; +Cc: emacs-devel On Sun, Dec 27, 2009 at 4:13 AM, Richard Stallman <rms@gnu.org> wrote: > Would it be possible to setup a function to download an elisp file > from a web page when called and then evaluate that file and call > itself again (with the old parameters), now with the new definition > from the web page? > > It must be possible, but we should warn people not to take the risk > of doing this. Hm, yes. I have tested a bit. Technically it can be done this way in Emacs. You can, with some tweaks, setup to autoload a function from the web. It would perhaps be quite easy to distribute (and/or update) parts of Emacs and/or external packages this way. But the risk is about doing this in an uncontrolled way. A lot of sw is updated in a similar way today (in a way that tries to control the risks). ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-27 3:24 ` Lennart Borgman @ 2009-12-28 18:48 ` Richard Stallman 2009-12-28 18:55 ` Lennart Borgman 0 siblings, 1 reply; 129+ messages in thread From: Richard Stallman @ 2009-12-28 18:48 UTC (permalink / raw) To: Lennart Borgman; +Cc: emacs-devel But the risk is about doing this in an uncontrolled way. A lot of sw is updated in a similar way today (in a way that tries to control the risks). Just because it is common does not make it acceptable. We do not want software to be autoloaded from anywhere outside the user's machine. The user should always have control over installing it in the machine. (See http://www.gnu.org/philosophy/javascript-trap.html for a similar issue.) ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-28 18:48 ` Richard Stallman @ 2009-12-28 18:55 ` Lennart Borgman 2009-12-29 1:32 ` Stephen J. Turnbull ` (2 more replies) 0 siblings, 3 replies; 129+ messages in thread From: Lennart Borgman @ 2009-12-28 18:55 UTC (permalink / raw) To: rms; +Cc: emacs-devel On Mon, Dec 28, 2009 at 7:48 PM, Richard Stallman <rms@gnu.org> wrote: > But the risk is about doing this in an uncontrolled way. A lot of sw > is updated in a similar way today (in a way that tries to control the > risks). > > Just because it is common does not make it acceptable. > > We do not want software to be autoloaded from anywhere outside > the user's machine. The user should always have control over > installing it in the machine. > > (See http://www.gnu.org/philosophy/javascript-trap.html > for a similar issue.) That is a totally different context than the one I am targetting. My scenario is this: - You have group of related elisp files in a common place on the web. - You download one of them, but it turns out that it does `require' or autoload that supposes you have downloaded the other files too. In a situation like that it is possible to set up for autoloading things by downloading them from the web without compromising security (or at least not more than when you download a file yourself) since you know which files will be downloaded. Note: Of course this first assumes that you download one or two files with the necessary information. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-28 18:55 ` Lennart Borgman @ 2009-12-29 1:32 ` Stephen J. Turnbull 2009-12-29 1:39 ` Lennart Borgman 2009-12-29 2:45 ` joakim 2009-12-29 5:22 ` Autoload from a web page? Richard Stallman 2 siblings, 1 reply; 129+ messages in thread From: Stephen J. Turnbull @ 2009-12-29 1:32 UTC (permalink / raw) To: Lennart Borgman; +Cc: rms, emacs-devel Lennart Borgman writes: > In a situation like that it is possible to set up for autoloading > things by downloading them from the web without compromising security > (or at least not more than when you download a file yourself) since > you know which files will be downloaded. Why would the user know which files would be downloaded, and from where? The whole point is to do it automatically, without troubling the user. If the user is going to go to the trouble of *carefully* verifying sources and so on, little is saved. On the other hand, it would be easy enough to register a domain like "savannah.gnu.org.to", and a lot of folks might miss that, if they even looked at all. Think of this like rules against talking on your cellphone while driving. Cellphone use is not an absolute guarantee you'll kill somebody, and abstinence from cellphone use is no guarantee you won't. Some people do use cellphones responsibly while driving, and so on. But for the typical driver it does vastly increase the risks. And so does any automated downloading and execution scheme. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-29 1:32 ` Stephen J. Turnbull @ 2009-12-29 1:39 ` Lennart Borgman 0 siblings, 0 replies; 129+ messages in thread From: Lennart Borgman @ 2009-12-29 1:39 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: rms, emacs-devel On Tue, Dec 29, 2009 at 2:32 AM, Stephen J. Turnbull <stephen@xemacs.org> wrote: > Lennart Borgman writes: > > > In a situation like that it is possible to set up for autoloading > > things by downloading them from the web without compromising security > > (or at least not more than when you download a file yourself) since > > you know which files will be downloaded. > > Why would the user know which files would be downloaded, and from > where? The whole point is to do it automatically, without troubling > the user. If the user is going to go to the trouble of *carefully* > verifying sources and so on, little is saved. On the other hand, it > would be easy enough to register a domain like "savannah.gnu.org.to", > and a lot of folks might miss that, if they even looked at all. > > Think of this like rules against talking on your cellphone while > driving. Cellphone use is not an absolute guarantee you'll kill > somebody, and abstinence from cellphone use is no guarantee you > won't. Some people do use cellphones responsibly while driving, and > so on. But for the typical driver it does vastly increase the risks. > > And so does any automated downloading and execution scheme. While the comparision is funny it is not quite fair ;-) To answer your questions: * The user should not have to know much, only the starting location for the download. * It is thereafter the already downloaded files that have information about what to download. * This will hopefully ensure that only trusted files are downloaded. * The information about what to download is basically in autoload and require * ... because during collection of autoloads the relative file paths are also recorded. * ... and this information have been downloaded first. * The downloaded files will be in a mirrored tree structure to where they came from. * The price carries of course a defadviced require that does this magic. * It would be possible to download many of the Emacs core files this way, actually * ... but of course it is more meant for external packages. Unfortunately the whole thing fails at the moment because of bugs in url-copy-file... - some timeout or something. I have never cared to report this bugs before because they are very complicated... ;-) ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-28 18:55 ` Lennart Borgman 2009-12-29 1:32 ` Stephen J. Turnbull @ 2009-12-29 2:45 ` joakim 2009-12-29 2:54 ` Lennart Borgman 2009-12-29 15:11 ` Ted Zlatanov 2009-12-29 5:22 ` Autoload from a web page? Richard Stallman 2 siblings, 2 replies; 129+ messages in thread From: joakim @ 2009-12-29 2:45 UTC (permalink / raw) To: Lennart Borgman; +Cc: Tom Tromey, rms, emacs-devel Lennart Borgman <lennart.borgman@gmail.com> writes: > On Mon, Dec 28, 2009 at 7:48 PM, Richard Stallman <rms@gnu.org> wrote: >> But the risk is about doing this in an uncontrolled way. A lot of sw >> is updated in a similar way today (in a way that tries to control the >> risks). >> >> Just because it is common does not make it acceptable. >> >> We do not want software to be autoloaded from anywhere outside >> the user's machine. The user should always have control over >> installing it in the machine. >> >> (See http://www.gnu.org/philosophy/javascript-trap.html> for a similar issue.) > > > That is a totally different context than the one I am targetting. > > > My scenario is this: > > - You have group of related elisp files in a common place on the web. > - You download one of them, but it turns out that it does `require' or > autoload that supposes you have downloaded the other files too. Is this situation not handled well enough by Tom Tromeys package.el and ELPA? Especially if we move ahead with the plan to have ELPA:s backend be something like Savannah. > > In a situation like that it is possible to set up for autoloading > things by downloading them from the web without compromising security > (or at least not more than when you download a file yourself) since > you know which files will be downloaded. > > > Note: Of course this first assumes that you download one or two files > with the necessary information. > > -- Joakim Verona ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-29 2:45 ` joakim @ 2009-12-29 2:54 ` Lennart Borgman 2009-12-29 4:52 ` Tom Tromey 2009-12-29 15:11 ` Ted Zlatanov 1 sibling, 1 reply; 129+ messages in thread From: Lennart Borgman @ 2009-12-29 2:54 UTC (permalink / raw) To: joakim; +Cc: Tom Tromey, rms, emacs-devel On Tue, Dec 29, 2009 at 3:45 AM, <joakim@verona.se> wrote: > Lennart Borgman <lennart.borgman@gmail.com> writes: > >> My scenario is this: >> >> - You have group of related elisp files in a common place on the web. >> - You download one of them, but it turns out that it does `require' or >> autoload that supposes you have downloaded the other files too. > > Is this situation not handled well enough by Tom Tromeys package.el and > ELPA? Especially if we move ahead with the plan to have ELPA:s backend > be something like Savannah. I am not aware that ELPA is downloading a file on require or autoload. Is it? ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-29 2:54 ` Lennart Borgman @ 2009-12-29 4:52 ` Tom Tromey 2009-12-29 22:25 ` Lennart Borgman 0 siblings, 1 reply; 129+ messages in thread From: Tom Tromey @ 2009-12-29 4:52 UTC (permalink / raw) To: Lennart Borgman; +Cc: rms, joakim, emacs-devel >>>>> "Lennart" == Lennart Borgman <lennart.borgman@gmail.com> writes: Lennart> I am not aware that ELPA is downloading a file on require or Lennart> autoload. Is it? Nope. It works in a different way, where users download and install entire packages, including their dependencies. Tom ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-29 4:52 ` Tom Tromey @ 2009-12-29 22:25 ` Lennart Borgman 2009-12-30 6:13 ` Richard Stallman 2009-12-30 18:06 ` Jonas Bernoulli 0 siblings, 2 replies; 129+ messages in thread From: Lennart Borgman @ 2009-12-29 22:25 UTC (permalink / raw) To: Tom Tromey; +Cc: rms, joakim, emacs-devel On Tue, Dec 29, 2009 at 5:52 AM, Tom Tromey <tromey@redhat.com> wrote: >>>>>> "Lennart" == Lennart Borgman <lennart.borgman@gmail.com> writes: > > Lennart> I am not aware that ELPA is downloading a file on require or > Lennart> autoload. Is it? > > Nope. It works in a different way, where users download and install > entire packages, including their dependencies. My intention is not to replace ELPA, but rather to create a backend (and partly a frontend) for installing/updating through the web from a repository (like bazaar on Launchpad). Currently I have written to different ways to do this: - Download a whole package of elisp files. - Download a package part by part as the elisp files are needed (kind of autoloading and installing locally through the web). Those work currently in the only conventient way I could find out at the moment. They download files directly from the web interface of the repository (currently only Launchpad is supported). This has the benefit that no sw except for Emacs is needed. From the user's point of view it is easy. There is no support for this use of the repository (bazaar) web interface so this use is a bit fragile. I imagine ELPA could be something in between giving this support (for example by simply taking a snapshot from the repository and placing that on the web as just directly accessible files). ELPA could be the trusted source of where to begin, a kind of directory for resources to download this way. An end Emacs user should be able to trust ELPA that the sources are correct and virus/trojan free (at least). The second form, ie downloading part by part, depends simply on a file with autoload information for the package of elisp files. ELPA could produce such a file (or the package maintainer of course). (I have the tools for that.) Downloading part by part naturally puts some more rigid restrictions on the elisp files in the package than normally, but it looks solveable to me. (I am struggling with the elisp package nXhtml to make it fit this right now.) Downloading part by part has some advantages and disadvantages: + You download (automatically) just what you need and use. + To update you simply delete the local file. - Files could become out of phase. Some version control should be good. - You have to be connected to the internet when you want to use a feature you have not used before. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-29 22:25 ` Lennart Borgman @ 2009-12-30 6:13 ` Richard Stallman 2009-12-30 18:06 ` Jonas Bernoulli 1 sibling, 0 replies; 129+ messages in thread From: Richard Stallman @ 2009-12-30 6:13 UTC (permalink / raw) To: Lennart Borgman; +Cc: tromey, joakim, emacs-devel My intention is not to replace ELPA, but rather to create a backend (and partly a frontend) for installing/updating through the web from a repository (like bazaar on Launchpad). It is ok if it installs files on disk which the user can then edit. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-29 22:25 ` Lennart Borgman 2009-12-30 6:13 ` Richard Stallman @ 2009-12-30 18:06 ` Jonas Bernoulli 2009-12-30 18:30 ` Stefan Monnier ` (2 more replies) 1 sibling, 3 replies; 129+ messages in thread From: Jonas Bernoulli @ 2009-12-30 18:06 UTC (permalink / raw) To: emacs-devel (what's up with me today. This also did not go to the list in the first try) On Tue, Dec 29, 2009 at 23:25, Lennart Borgman <lennart.borgman@gmail.com> wrote: > On Tue, Dec 29, 2009 at 5:52 AM, Tom Tromey <tromey@redhat.com> wrote: >>>>>>> "Lennart" == Lennart Borgman <lennart.borgman@gmail.com> writes: > My intention is not to replace ELPA, but rather to create a backend > (and partly a frontend) for installing/updating through the web from a > repository (like bazaar on Launchpad). The package manager should support multiple package repositories. In theory this could mean that we end up with many competing repositories and this is clearly something that should be avoided. Instead we should have a few repositories with well defined purposes: 1. A "complete" repository. This is what I am currently trying to do with the Emacsmirror [1]. This should contain most packages that are available, regardless of quality and general usefulness. It does not mean that packages could absolutely not be removed or that it should not impose a minimal set of restrictions but the focus would be on quantity not quality. (more on this below) This would include packages that are broken and this would have to be pointed out to users. I do think that it does make sense to include broken (or very basic) packages, because this allows potential new maintainers to easily find existing implementations and go from there. 2. A "tested" repository. ELPA could probably take this role. This repository should only contain packages known to work with recent versions of Emacs and that are otherwise sound. QA should happen here. 3. The FSF repository This would contain only packages that are of could quality and generally useful AND for which copyright assignments have been filled out. I do not think that authors who release their packages under incompatible licenses or do not want (or can't) assign the copyright to the FSF have bad intentions. Especially I do not think that because a package is still released under the GPL-2 instead of GPL-3 is because they are against the move but that they simply do not see much benefit in it or have forgotten to do it. I have released all my Emacs extensions under the GPL-3 (at least I think so) and do not think that it does not make sense to use any other license. However authors of packages that are only updated when bugs are reported might just not see the need (or just forget about it) to update the license. Having a "complete" repository is in my eyes not against the notion that we want authors to move to the GPL-3. Instead they might actually relize that their packages are only included in the "complete" repository a long with many clearly inferior code, not because of it's quality but because if licensing issues. I do not know what ELPA's position on license issues are. So if they include packages e.g. releases as-is (and especially it includes package still released under the GPL-2 (which I expect)) so it might be necessary to add an addtional repository inbetween 2 and 3. However I do strongly believe that it would be very unproductive to have more than four repositories. So e.g. I do not think that it would make any sense to create a repository for packages where the license is good but that are rubbish. > Currently I have written to different ways to do this: > > - Download a whole package of elisp files. This could be done in two ways. - Download an archive - Clone a dvcs repository I favor the model where the package manager does clone the repository from the repository - ehm ... Okay I have used the terminology used by other in this thread so far. But actually I think we should talk of the repository as a dvcs (git, bazaar) repository containing the history of a particular package which is included in a mirror (Emacsmirror, ELPA) do avoid confusion. And while we are talking about terms. I have used the term package to mean the thing installed by the package manager. Of course many packages consist of only one library (the thing providing a feature) but nevertheless these are to different things. So again: I favor the model where the package manager does clone the repository from the mirror as one of the steps required to install a package. This would mean that the dvcs used by the mirror does have to be installed on the users machine. So if this is not desirable archives could be created on the mirror from each tagged release. For packages where upstream does not use a vcs an archive could be created for each version where the library of the "mainfile" has changed. Creating the archives on the mirror would not be to hard. But adding support in the package manager for installing either from a repository OR from an archive would complicate things. So unless there are strong arguments against it I would favor the vcs approach a lot, as it adds at least the following benefits: - When a user installs a package for the first time from an untrusted source e.g. the Emacsmirror he should read the packages source which is a considerable amount of work. (I will comment elsewhere on how the installation process would have to be adjusted to allow this.) But provided the user verified the integrity of a package when he first installed it, the use of a vcs would make it much easier to only verify the difference to the installed package once it is updated. - The user can use the same interface (the package manager) used to find and install working packages in order to clone broken packages, fix them, then install them, and push his own fixed branch (and of course this should be done in a way that makes it easy to also inform upstream of the changes, either to have him merge the changes or to take over as a maintainer. > - Download a package part by part as the elisp files are needed (kind > of autoloading and installing locally through the web). I do not like this idea at all. As I have said (and as you are well aware) there is a difference between package and libraries (and supporting files like README, or images). The package manager should only operate on complete packages. > Those work currently in the only conventient way I could find out at > the moment. They download files directly from the web interface of the > repository (currently only Launchpad is supported). This has the > benefit that no sw except for Emacs is needed. From the user's point > of view it is easy. As I have said above I favor the vcs approach. It it is not feasible to clone repositories then archives should be offered for download (which isn't hard). Fetching seperate files seam backward and it actually complicates things and as far as I can tell it has no benefits whatsoever. Also while the Emacsmirror hasn't been integrated with a package manager yet I do think that it already now makes the process of installing packages (and especially updating) much easier than to fetch packages from all over the internet. And this is precisely because it uses a dvcs. You simply clone the desired package and from that on you simply have to run "git pull" to bring your local copy up-to-date. You do not have to remember where you got the package. This is especially useful for packages that are distributed upstream as versioned files (that is with a version suffix) dumped on a webpage. The task of finding the most recent version is already handled by the mirror - otherwise you would have to go to the homepage, locate the most recent link and the download it. And that for all installed packages. (And yes of course while the Emacsmirror has not been integrated with a package manager yet you will have have to make the package known to Emacs manually. There also is not automated way for your local QA yet, but "git diff OLD_HEAD.." make this much easier. > There is no support for this use of the repository (bazaar) web > interface so this use is a bit fragile. I imagine ELPA could be > something in between giving this support I agree as described above. > (for example by simply taking > a snapshot from the repository and placing that on the web as just > directly accessible files). I also agree but only if the snapshot is a archive. (I also think that it is possible to download individual raw files from lp but haven't checked as I am not interested in that.) > ELPA could be the trusted source of where to begin, a kind of > directory for resources to download this way. An end Emacs user should > be able to trust ELPA that the sources are correct and virus/trojan > free (at least). Yes. But there should also be the Emacsmirror which isn't about trust but completeness. > The second form, ie downloading part by part, depends simply on a file > with autoload information for the package of elisp files. ELPA could > produce such a file (or the package maintainer of course). (I have the > tools for that.) I also have a tool for this (`elx.el' [2]). I would like to see yours - maybe we can merge the two. > Downloading part by part naturally puts some more rigid restrictions > on the elisp files in the package than normally, but it looks > solveable to me. (I am struggling with the elisp package nXhtml to > make it fit this right now.) I do not understand what nxhtml has to do with it, after all the headers in emacs lisp libraries are not in html/xml. > Downloading part by part has some advantages and disadvantages: > > + You download (automatically) just what you need and use. And when you have no connection to the internet you are stuck with what you have. Again the atom a package manager should operate on are packages. (Then again it might make sense to create seperate packages for libraries found in the contrib directory of larger packages.) > + To update you simply delete the local file. Deleting a directory containing the complete package isn't much harder. You just have to add "-r" to your "rm" - in fact it is easier, as "rm -r foo" is saver than "rm foo*" which might also remove "foo-bar" ;-) > - Files could become out of phase. Some version control should be good. Yes exactly. > - You have to be connected to the internet when you want to use a > feature you have not used before. Yes. [1] http://www.emacsmirror.org [2] http://github.com/tarsius/elx ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-30 18:06 ` Jonas Bernoulli @ 2009-12-30 18:30 ` Stefan Monnier 2009-12-30 19:10 ` Jonas Bernoulli ` (2 more replies) 2010-01-01 19:26 ` Tom Tromey 2010-01-04 18:12 ` Ted Zlatanov 2 siblings, 3 replies; 129+ messages in thread From: Stefan Monnier @ 2009-12-30 18:30 UTC (permalink / raw) To: Jonas Bernoulli; +Cc: emacs-devel > The package manager should support multiple package repositories. [...] > 3. The FSF repository > This would contain only packages that are of could quality and > generally useful AND for which copyright assignments have been > filled out. For political reasons, we only want to support repositories where the copyright is owned by the FSF. We also may want to support or notion of package quality, tho. Also I find it important that multiple versions of a package can coexist at the same time (within reasonable feasability constraints: we don't need to handle multiple versions in a single Emacs sessions). Stefan ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-30 18:30 ` Stefan Monnier @ 2009-12-30 19:10 ` Jonas Bernoulli 2010-01-01 0:40 ` Phil Hagelberg 2010-01-01 19:27 ` Tom Tromey 2 siblings, 0 replies; 129+ messages in thread From: Jonas Bernoulli @ 2009-12-30 19:10 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel On Wed, Dec 30, 2009 at 19:30, Stefan Monnier <monnier@iro.umontreal.ca> wrote: >> The package manager should support multiple package repositories. > [...] >> 3. The FSF repository > >> This would contain only packages that are of could quality and >> generally useful AND for which copyright assignments have been >> filled out. > > For political reasons, we only want to support repositories where > the copyright is owned by the FSF. I do understand. But that hopefully does not imply that you want to discourage other people from creating other repositories, or does it? Even when the other repositories are not supported by the FSF they can still be of use for users and can also be used by the FSF to find libraries that are worth to be included (e.g. where the author should be contacted fill out copyright assignments). > We also may want to support or > notion of package quality, tho. Also I find it important that multiple > versions of a package can coexist at the same time Yes, I also think that this is desirable. > (within reasonable > feasability constraints: we don't need to handle multiple versions in > a single Emacs sessions). Anything else wouldn't make any sense. -- Jonas ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-30 18:30 ` Stefan Monnier 2009-12-30 19:10 ` Jonas Bernoulli @ 2010-01-01 0:40 ` Phil Hagelberg 2010-01-01 19:27 ` Tom Tromey 2 siblings, 0 replies; 129+ messages in thread From: Phil Hagelberg @ 2010-01-01 0:40 UTC (permalink / raw) To: Stefan Monnier; +Cc: Jonas Bernoulli, emacs-devel Stefan Monnier <monnier@IRO.UMontreal.CA> writes: >> The package manager should support multiple package repositories. > [...] >> 3. The FSF repository > >> This would contain only packages that are of could quality and >> generally useful AND for which copyright assignments have been >> filled out. > > For political reasons, we only want to support repositories where > the copyright is owned by the FSF. We also may want to support or > notion of package quality, tho. Also I find it important that multiple > versions of a package can coexist at the same time (within reasonable > feasability constraints: we don't need to handle multiple versions in > a single Emacs sessions). I am fine (but not thrilled) with Emacs only including an FSF-owned repository or repositories out of the box. But I'd like to make sure that this *doesn't* mean making it difficult for the user to add third-party repositories for other software they may be interested in. I'm sure this kind of antifeature wouldn't make it in to Emacs anyway; I just thought it would be good to make that clear. -Phil ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-30 18:30 ` Stefan Monnier 2009-12-30 19:10 ` Jonas Bernoulli 2010-01-01 0:40 ` Phil Hagelberg @ 2010-01-01 19:27 ` Tom Tromey 2 siblings, 0 replies; 129+ messages in thread From: Tom Tromey @ 2010-01-01 19:27 UTC (permalink / raw) To: Stefan Monnier; +Cc: Jonas Bernoulli, emacs-devel >>>>> "Stefan" == Stefan Monnier <monnier@IRO.UMontreal.CA> writes: Stefan> Also I find it important that multiple versions of a package can Stefan> coexist at the same time (within reasonable feasability Stefan> constraints: we don't need to handle multiple versions in a Stefan> single Emacs sessions). Thanks for mentioning this again. Phil, if you're reading this, this is the one missing required feature that I keep forgetting about. We need to have a way to disable a package to prevent it from being activated. (But by default, installing should activate.) Tom ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-30 18:06 ` Jonas Bernoulli 2009-12-30 18:30 ` Stefan Monnier @ 2010-01-01 19:26 ` Tom Tromey 2010-01-04 18:12 ` Ted Zlatanov 2 siblings, 0 replies; 129+ messages in thread From: Tom Tromey @ 2010-01-01 19:26 UTC (permalink / raw) To: Jonas Bernoulli; +Cc: emacs-devel >>>>> "Jonas" == Jonas Bernoulli <jonas@bernoulli.cc> writes: Jonas> I do not know what ELPA's position on license issues are. From http://tromey.com/elpa/upload.html ELPA accepts only free software. If in doubt check the DFSG to see if your license qualifies. We encourage all authors to assign their code to the FSF and to try to get their new packages into the official Emacs release. Jonas> I favor the model where the package manager does clone the Jonas> repository from the repository To me this seems to have several negatives for end users. It takes more space and requires them to have some particular version control software installed. The ELPA approach does not require anything outside of Emacs. >> - Download a package part by part as the elisp files are needed (kind >> of autoloading and installing locally through the web). Jonas> I do not like this idea at all. [...] Jonas> The package manager should only operate on complete packages. Yeah, I agree. I couldn't think of when I would ever want to just install some part of a package. Jonas> And this is precisely because it uses a dvcs. You simply clone Jonas> the desired package and from that on you simply have to run "git Jonas> pull" to bring your local copy up-to-date. You do not have to Jonas> remember where you got the package. That is not sufficient. The user also has to make sure the dependencies are correct, and has to re-byte-compile the files. Tom ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-30 18:06 ` Jonas Bernoulli 2009-12-30 18:30 ` Stefan Monnier 2010-01-01 19:26 ` Tom Tromey @ 2010-01-04 18:12 ` Ted Zlatanov 2 siblings, 0 replies; 129+ messages in thread From: Ted Zlatanov @ 2010-01-04 18:12 UTC (permalink / raw) To: emacs-devel On Wed, 30 Dec 2009 19:06:27 +0100 Jonas Bernoulli <jonas@bernoulli.cc> wrote: JB> I favor the model where the package manager does clone the repository from JB> the mirror as one of the steps required to install a package. I think the delivery method should not require DVCS or network access. The repository should simply be a URL which can point to a file or a directory or a DVCS location. Thus a repository snapshot can be delivered in a single file or over the network (e.g. see Ubuntu's repositories for a more static version of this). It should be a single URL, though, not a set of URLs or some other list of information. Adding a repository and listing the known repositories should be really easy. DVCS only benefits repository maintainers. End users should be shielded from DVCS operations IMHO. They can still benefit from delivery via DVCS but it should all be hidden. JB> The package manager should only operate on complete packages. Agreed. Piecemeal installation of .el files is unnecessary in at least 90% of the cases I've seen. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-29 2:45 ` joakim 2009-12-29 2:54 ` Lennart Borgman @ 2009-12-29 15:11 ` Ted Zlatanov 2009-12-29 18:46 ` Richard Stallman 1 sibling, 1 reply; 129+ messages in thread From: Ted Zlatanov @ 2009-12-29 15:11 UTC (permalink / raw) To: emacs-devel; +Cc: jonas On Tue, 29 Dec 2009 03:45:38 +0100 joakim@verona.se wrote: j> Is this situation not handled well enough by Tom Tromeys package.el and j> ELPA? Especially if we move ahead with the plan to have ELPA:s backend j> be something like Savannah. There's also emacsmirror.org, just recently announced but nothing usable yet (see http://www.emacsmirror.org/ and I'm cc-ing Jonas Bernoulli). This is just a suggestion: considering that Emacs has moved to a powerful DVCS, maybe it makes sense to make ELPA and emacsmirror.org hook into the Emacs repo. Give commit bits and some structure to a few people within an isolated "unsupported packages" area, and then let them organize that area and the interfaces to it, including tracking of foreign packages and repos, any way they see fit. As long as it's clear that it's an area for unsupported packages, this has the benefit of integrating Emacs with the packages people find useful. When people pull Emacs, they'll also pull the unsupported packages, which IMHO is a good thing. Developers can still work outside of Emacs, but those who choose to host their unsupported packages within Emacs don't have to rely on external hosting (GitHub, SourceForge, Google Projects, etc.). Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-29 15:11 ` Ted Zlatanov @ 2009-12-29 18:46 ` Richard Stallman 2009-12-29 21:14 ` unsupported packages area in the Emacs repo (was: Autoload from a web page?) Ted Zlatanov 0 siblings, 1 reply; 129+ messages in thread From: Richard Stallman @ 2009-12-29 18:46 UTC (permalink / raw) To: Ted Zlatanov; +Cc: jonas, emacs-devel This is just a suggestion: considering that Emacs has moved to a powerful DVCS, maybe it makes sense to make ELPA and emacsmirror.org hook into the Emacs repo. Give commit bits and some structure to a few people within an isolated "unsupported packages" area, and then let them organize that area and the interfaces to it, including tracking of foreign packages and repos, any way they see fit. As long as it's clear that it's an area for unsupported packages, this has the benefit of integrating Emacs with the packages people find useful. This might be a good idea, but we want to get copyright assignments for these packages just as we do for the "supported" parts of Emacs. That way we can move Lisp files between the two categories based on practical motives. ^ permalink raw reply [flat|nested] 129+ messages in thread
* unsupported packages area in the Emacs repo (was: Autoload from a web page?) 2009-12-29 18:46 ` Richard Stallman @ 2009-12-29 21:14 ` Ted Zlatanov 2009-12-29 21:21 ` Deniz Dogan 2009-12-29 21:36 ` Tom Tromey 0 siblings, 2 replies; 129+ messages in thread From: Ted Zlatanov @ 2009-12-29 21:14 UTC (permalink / raw) To: emacs-devel; +Cc: jonas, elpa On Tue, 29 Dec 2009 13:46:15 -0500 Richard Stallman <rms@gnu.org> wrote: RS> This is just a suggestion: considering that Emacs has moved to a RS> powerful DVCS, maybe it makes sense to make ELPA and emacsmirror.org RS> hook into the Emacs repo. Give commit bits and some structure to a few RS> people within an isolated "unsupported packages" area, and then let them RS> organize that area and the interfaces to it, including tracking of RS> foreign packages and repos, any way they see fit. As long as it's clear RS> that it's an area for unsupported packages, this has the benefit of RS> integrating Emacs with the packages people find useful. RS> This might be a good idea, but we want to get copyright assignments for RS> these packages just as we do for the "supported" parts of Emacs. RS> That way we can move Lisp files between the two categories based on RS> practical motives. Yes, that makes a lot of sense. Promotion could work like Apache's incubation process or like Haskell's hackage system, or in another way more suited to Emacs' model. I think we should also consider demotion for packages that should not be supported but are still marginally useful. I hope Tom Tromey and Jonas Bernoulli are interested in participating too, and that the Emacs maintainers are willing to give this a try. FWIW I will help any way I can and I think it would really improve the Emacs user experience to install unsupported packages easily. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: unsupported packages area in the Emacs repo (was: Autoload from a web page?) 2009-12-29 21:14 ` unsupported packages area in the Emacs repo (was: Autoload from a web page?) Ted Zlatanov @ 2009-12-29 21:21 ` Deniz Dogan 2009-12-29 21:38 ` unsupported packages area in the Emacs repo Ted Zlatanov 2009-12-29 21:36 ` Tom Tromey 1 sibling, 1 reply; 129+ messages in thread From: Deniz Dogan @ 2009-12-29 21:21 UTC (permalink / raw) To: Ted Zlatanov; +Cc: jonas, elpa, emacs-devel 2009/12/29 Ted Zlatanov <tzz@lifelogs.com>: > On Tue, 29 Dec 2009 13:46:15 -0500 Richard Stallman <rms@gnu.org> wrote: > > RS> This is just a suggestion: considering that Emacs has moved to a > RS> powerful DVCS, maybe it makes sense to make ELPA and emacsmirror.org > RS> hook into the Emacs repo. Give commit bits and some structure to a few > RS> people within an isolated "unsupported packages" area, and then let them > RS> organize that area and the interfaces to it, including tracking of > RS> foreign packages and repos, any way they see fit. As long as it's clear > RS> that it's an area for unsupported packages, this has the benefit of > RS> integrating Emacs with the packages people find useful. > > RS> This might be a good idea, but we want to get copyright assignments for > RS> these packages just as we do for the "supported" parts of Emacs. > RS> That way we can move Lisp files between the two categories based on > RS> practical motives. > > Yes, that makes a lot of sense. Promotion could work like Apache's > incubation process or like Haskell's hackage system, or in another way > more suited to Emacs' model. > > What do you mean by "like Haskell's hackage system"? As far as I know, anyone can upload their package to Hackage and it will be made available to everyone. I don't think there are any "supported/unsupported" categories as such. -- Deniz Dogan ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: unsupported packages area in the Emacs repo 2009-12-29 21:21 ` Deniz Dogan @ 2009-12-29 21:38 ` Ted Zlatanov 0 siblings, 0 replies; 129+ messages in thread From: Ted Zlatanov @ 2009-12-29 21:38 UTC (permalink / raw) To: emacs-devel On Tue, 29 Dec 2009 22:21:14 +0100 Deniz Dogan <deniz.a.m.dogan@gmail.com> wrote: DD> 2009/12/29 Ted Zlatanov <tzz@lifelogs.com>: >> Yes, that makes a lot of sense. Promotion could work like Apache's >> incubation process or like Haskell's hackage system, or in another way >> more suited to Emacs' model. DD> What do you mean by "like Haskell's hackage system"? As far as I know, DD> anyone can upload their package to Hackage and it will be made DD> available to everyone. I don't think there are any DD> "supported/unsupported" categories as such. Apache is one way to promote packages, with a tightly controlled incubation and voting process. Hackage is another way, with everything "unsupported"--an unlikely model but I was trying to show extremes in the way packages are promoted. Sorry I wasn't clear. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: unsupported packages area in the Emacs repo 2009-12-29 21:14 ` unsupported packages area in the Emacs repo (was: Autoload from a web page?) Ted Zlatanov 2009-12-29 21:21 ` Deniz Dogan @ 2009-12-29 21:36 ` Tom Tromey 2009-12-30 16:15 ` Ted Zlatanov 2009-12-30 17:16 ` unsupported packages area in the Emacs repo Jonas Bernoulli 1 sibling, 2 replies; 129+ messages in thread From: Tom Tromey @ 2009-12-29 21:36 UTC (permalink / raw) To: Ted Zlatanov; +Cc: jonas, elpa, emacs-devel >>>>> "Ted" == Ted Zlatanov <tzz@lifelogs.com> writes: Ted> I hope Tom Tromey and Jonas Bernoulli are interested in participating Ted> too, and that the Emacs maintainers are willing to give this a try. Ted> FWIW I will help any way I can and I think it would really improve the Ted> Emacs user experience to install unsupported packages easily. I am interested but I don't have time to work on it. Recently, Phil Hagelberg <technomancy@gmail.com> has been looking into integrating package.el into Emacs. I don't know how much progress he has made. There are a couple problems to be solved in the Emacs source tree, and then a more sane server side must be written. The latter may just be some version control system plus some post-commit hooks to regenerate the metadata. Tom ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: unsupported packages area in the Emacs repo 2009-12-29 21:36 ` Tom Tromey @ 2009-12-30 16:15 ` Ted Zlatanov 2009-12-31 5:32 ` Phil Hagelberg 2010-01-01 19:18 ` Tom Tromey 2009-12-30 17:16 ` unsupported packages area in the Emacs repo Jonas Bernoulli 1 sibling, 2 replies; 129+ messages in thread From: Ted Zlatanov @ 2009-12-30 16:15 UTC (permalink / raw) To: emacs-devel; +Cc: Phil Hagelberg On Tue, 29 Dec 2009 14:36:45 -0700 Tom Tromey <elpa@tromey.com> wrote: >>>>>> "Ted" == Ted Zlatanov <tzz@lifelogs.com> writes: Ted> I hope Tom Tromey and Jonas Bernoulli are interested in participating Ted> too, and that the Emacs maintainers are willing to give this a try. Ted> FWIW I will help any way I can and I think it would really improve the Ted> Emacs user experience to install unsupported packages easily. Tom> I am interested but I don't have time to work on it. Tom> Recently, Phil Hagelberg <technomancy@gmail.com> has been looking into Tom> integrating package.el into Emacs. I don't know how much progress he Tom> has made. Can you and Phil give us your view? How would you integrate ELPA (package.el) with Emacs, specifically using the DVCS features? Your experience with ELPA so far is very valuable since you've gone through all the pain of setting up the packaging, dependencies, installer, and user support. Tom> There are a couple problems to be solved in the Emacs source tree, and Tom> then a more sane server side must be written. The latter may just be Tom> some version control system plus some post-commit hooks to regenerate Tom> the metadata. That's the technical side, but what about the supported/unsupported division? Have you considered making package.el integrated into the Emacs core to work like the Cygwin installer, so unsupported or experimental packages can be installed and loaded easily? It may even make sense to use package.el to manage supported packages, e.g. to set up Gnus. I wouldn't mind letting package.el manage my libraries, doing it by hand is a waste of time 90% of the time. There's a flexible assistant framework (analogous to the standard "wizard" UI) in Gnus itself, originally intended for setting up Gnus. Maybe it can be useful for package.el. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: unsupported packages area in the Emacs repo 2009-12-30 16:15 ` Ted Zlatanov @ 2009-12-31 5:32 ` Phil Hagelberg 2010-01-01 19:18 ` Tom Tromey 1 sibling, 0 replies; 129+ messages in thread From: Phil Hagelberg @ 2009-12-31 5:32 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel Ted Zlatanov <tzz@lifelogs.com> writes: > On Tue, 29 Dec 2009 14:36:45 -0700 Tom Tromey <elpa@tromey.com> wrote: > Tom> Recently, Phil Hagelberg <technomancy@gmail.com> has been looking into > Tom> integrating package.el into Emacs. I don't know how much progress he > Tom> has made. > > Can you and Phil give us your view? How would you integrate ELPA > (package.el) with Emacs, specifically using the DVCS features? Your > experience with ELPA so far is very valuable since you've gone through > all the pain of setting up the packaging, dependencies, installer, and > user support. I haven't given DVCS integration much thought at this point, though I've recently contacted Jonas Bernoulli who seems to have done some experiments with it. The initial idea was to just add "Emacs package source" capabilities to Savannah, but it seems like the Savannah hackers are already extremely overworked, and nobody I've talked to is much interested in hacking in PHP, which this would entail. But after talking with Jonas I'm starting to think it might be better to allow packages to be used from DVCS hosted anywhere and just maintain a centrally curated list of repositories that contain packages. This definitely needs more brainstorming and discussion. Integration with Emacs mostly consists of deciding what parts of Emacs should be treated as packages and marking them as such so they may be upgraded separately. Hopefully in the future this will also allow things like gnus and org-mode not to have to be merged into Emacs' own VCS periodically, a process which I understand is rather tedious. These packages should be able to be installed straight from the upstream repositories. > That's the technical side, but what about the supported/unsupported > division? Have you considered making package.el integrated into the > Emacs core to work like the Cygwin installer, so unsupported or > experimental packages can be installed and loaded easily? I hope to get it working that way, yes. -Phil ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: unsupported packages area in the Emacs repo 2009-12-30 16:15 ` Ted Zlatanov 2009-12-31 5:32 ` Phil Hagelberg @ 2010-01-01 19:18 ` Tom Tromey 2010-01-03 5:38 ` Integrating package.el (was Re: unsupported packages area in the Emacs repo) Phil Hagelberg 1 sibling, 1 reply; 129+ messages in thread From: Tom Tromey @ 2010-01-01 19:18 UTC (permalink / raw) To: Ted Zlatanov; +Cc: Phil Hagelberg, emacs-devel >>>>> "Ted" == Ted Zlatanov <tzz@lifelogs.com> writes: Tom> Recently, Phil Hagelberg <technomancy@gmail.com> has been looking into Tom> integrating package.el into Emacs. I don't know how much progress he Tom> has made. Ted> Can you and Phil give us your view? How would you integrate ELPA Ted> (package.el) with Emacs, specifically using the DVCS features? I don't think DVCS matters very much. Basically what is needed is to integrate package.el into Emacs' startup sequence. This requires some build-time changes, so that metadata for packages is extracted from the source tree; and it requires some source changes, so that such packages are not automatically added to load-path, but instead are added by package activation. Only packages that might be shipped separately will need this treatment. package.el requires some metadata to operate properly. Right now this metadata is generated by some elisp when I upload a package -- see package-upload-buffer. This doesn't scale nicely, though, and I think the future plan should be to generate this metadata in a commit hook on the server side. That is, when a package maintainer pushes a new version, the hook is run and the various server-side files are rebuilt. Just doing this would be pretty good. There are a few feature requests from ELPA users that would be nice to implement, that require similar treatment, but that could comfortably be done later. Ted> That's the technical side, but what about the supported/unsupported Ted> division? Have you considered making package.el integrated into the Ted> Emacs core to work like the Cygwin installer, so unsupported or Ted> experimental packages can be installed and loaded easily? package.el really has a few different parts. The stuff for resolving dependencies and downloading from ELPA is separate from the install-and-byte-compile bits. So, you can use package.el to install a random .el file, assuming it follows the comment guidelines. One thing I would like for the long term is to see distros use package.el's mechanism for installing elisp into site-lisp. That way users can see the same activation benefits for things not distributed with Emacs. This should be pretty easy to implement. Tom ^ permalink raw reply [flat|nested] 129+ messages in thread
* Integrating package.el (was Re: unsupported packages area in the Emacs repo) 2010-01-01 19:18 ` Tom Tromey @ 2010-01-03 5:38 ` Phil Hagelberg 2010-01-04 17:55 ` Integrating package.el Ted Zlatanov 0 siblings, 1 reply; 129+ messages in thread From: Phil Hagelberg @ 2010-01-03 5:38 UTC (permalink / raw) To: Tom Tromey; +Cc: Ted Zlatanov, Phil Hagelberg, emacs-devel Tom Tromey <tromey@redhat.com> writes: >>>>>> "Ted" == Ted Zlatanov <tzz@lifelogs.com> writes: > Ted> Can you and Phil give us your view? How would you integrate ELPA > Ted> (package.el) with Emacs, specifically using the DVCS features? > > I don't think DVCS matters very much. I agree that users should not need a DVCS installed on their system to use packages. However, leveraging a DVCS to get packages from their authors to a centralized listing seems like a really good idea. > Basically what is needed is to integrate package.el into Emacs' startup > sequence. This requires some build-time changes, so that metadata for > packages is extracted from the source tree; and it requires some source > changes, so that such packages are not automatically added to load-path, > but instead are added by package activation. Only packages that might > be shipped separately will need this treatment. > > Just doing this would be pretty good. There are a few feature requests > from ELPA users that would be nice to implement, that require similar > treatment, but that could comfortably be done later. I've actually been thinking in even more incremental steps. Installing package.el in Emacs without altering any of the existing Emacs code would be an easy first step and would give some immediate benefit in terms of packages that are not included in Emacs. The next step would be to work on package submission. If the centralized system has a list of packages mapped to a list of DVCS repositories, they could be polled periodically and all tags matching a certain convention (say, starting with "v" and followed by a dotted number series) would be treated as package. That version would then be processed and published to a downloadable location for clients to pull in. I wasn't thinking about integrating packages that Emacs already contains until after these steps were complete. One thing that may be infeasible but would certainly simplify things a lot would be if we spun off packages like org-mode into their own separate DVCS repository and removed them from the Emacs source tree before making package.el treat them as packages. However, this may cause some unwanted chaos; I don't want to barge in and create a lot of work for people. It might also imply that network access would be necessary to perform a full build of Emacs since it would have to download bundled packages at compilation time. Not sure if that is a serious problem. Anyway, I welcome thoughts on this. -Phil ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-03 5:38 ` Integrating package.el (was Re: unsupported packages area in the Emacs repo) Phil Hagelberg @ 2010-01-04 17:55 ` Ted Zlatanov 2010-01-04 19:51 ` Tom Tromey 0 siblings, 1 reply; 129+ messages in thread From: Ted Zlatanov @ 2010-01-04 17:55 UTC (permalink / raw) To: emacs-devel On Sat, 02 Jan 2010 21:38:58 -0800 Phil Hagelberg <phil@hagelb.org> wrote: PH> I've actually been thinking in even more incremental steps. Installing PH> package.el in Emacs without altering any of the existing Emacs code PH> would be an easy first step and would give some immediate benefit in PH> terms of packages that are not included in Emacs. Agreed. I think it's mature enough and would benefit from the wider exposure. But at that point I think it becomes important to separate the repository into "Emacs supported," "Emacs unsupported," "ELPA," and any others deemed necessary. Then the Emacs-related repositories can be managed by Emacs maintainers and developers and hosted within the Emacs repo while ELPA can remain independent. Can package.el support that? It looks to me, from reading the current source, that it's limited to a single repository. PH> The next step would be to work on package submission. If the centralized PH> system has a list of packages mapped to a list of DVCS repositories, PH> they could be polled periodically and all tags matching a certain PH> convention (say, starting with "v" and followed by a dotted number PH> series) would be treated as package. That version would then be PH> processed and published to a downloadable location for clients to pull PH> in. This should probably be a per-repository policy and process. PH> I wasn't thinking about integrating packages that Emacs already contains PH> until after these steps were complete. One thing that may be infeasible PH> but would certainly simplify things a lot would be if we spun off PH> packages like org-mode into their own separate DVCS repository and PH> removed them from the Emacs source tree before making package.el treat PH> them as packages. However, this may cause some unwanted chaos; I don't PH> want to barge in and create a lot of work for people. It might also PH> imply that network access would be necessary to perform a full build of PH> Emacs since it would have to download bundled packages at compilation PH> time. Not sure if that is a serious problem. I don't know about the other packages that come with Emacs, but Gnus could probably benefit from package.el-style installation (I don't speak for the Gnus project, though, so I can bring it up on the mailing list if necessary). A better setup process for Gnus would be really nice, though. The usual pre-install and post-install scripts you find in RPM or DEB would help. I suspect many other packages would benefit from a better setup process through package.el. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-04 17:55 ` Integrating package.el Ted Zlatanov @ 2010-01-04 19:51 ` Tom Tromey 2010-01-05 5:02 ` Phil Hagelberg 2010-01-05 15:50 ` Ted Zlatanov 0 siblings, 2 replies; 129+ messages in thread From: Tom Tromey @ 2010-01-04 19:51 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel >>>>> "Ted" == Ted Zlatanov <tzz@lifelogs.com> writes: Ted> Can package.el support that? It looks to me, from reading the current Ted> source, that it's limited to a single repository. Yes, it is currently limited to a single repository. This should not be too difficult to fix. It also needs to be changed to be able to manage multiple install locations, if it is to be used to manage site-lisp. Ted> I don't know about the other packages that come with Emacs, but Gnus Ted> could probably benefit from package.el-style installation (I don't speak Ted> for the Gnus project, though, so I can bring it up on the mailing list Ted> if necessary). A better setup process for Gnus would be really nice, Ted> though. The usual pre-install and post-install scripts you find in RPM Ted> or DEB would help. I suspect many other packages would benefit from a Ted> better setup process through package.el. If you want to try packaging it, I can explain what you need to do. It is usually quite easy. Tom ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-04 19:51 ` Tom Tromey @ 2010-01-05 5:02 ` Phil Hagelberg 2010-01-05 5:37 ` Lennart Borgman 2010-01-05 15:50 ` Ted Zlatanov 1 sibling, 1 reply; 129+ messages in thread From: Phil Hagelberg @ 2010-01-05 5:02 UTC (permalink / raw) To: Tom Tromey; +Cc: Ted Zlatanov, emacs-devel Tom Tromey <tromey@redhat.com> writes: >>>>>> "Ted" == Ted Zlatanov <tzz@lifelogs.com> writes: > > Ted> Can package.el support that? It looks to me, from reading the current > Ted> source, that it's limited to a single repository. > > Yes, it is currently limited to a single repository. > This should not be too difficult to fix. I'm not sure why I left it out of my list of goals in my last email; this is definitely high on my priority list. I've also got a quick prototype of a DVCS-centric archive management tool (for gathering packages from library authors and publishing them) that I will post soon once I've fleshed it out a bit more. > Ted> I don't know about the other packages that come with Emacs, but Gnus > Ted> could probably benefit from package.el-style installation (I don't speak > Ted> for the Gnus project, though, so I can bring it up on the mailing list > Ted> if necessary). A better setup process for Gnus would be really nice, > Ted> though. The usual pre-install and post-install scripts you find in RPM > Ted> or DEB would help. I suspect many other packages would benefit from a > Ted> better setup process through package.el. > > If you want to try packaging it, I can explain what you need to do. > It is usually quite easy. I think in general this might be best done on an opt-in basis where the maintainer of a library indicates that they'd like to convert to a package and perhaps someone more familiar with package.el can help them integrate. -Phil ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-05 5:02 ` Phil Hagelberg @ 2010-01-05 5:37 ` Lennart Borgman 2010-01-05 15:06 ` Stefan Monnier 0 siblings, 1 reply; 129+ messages in thread From: Lennart Borgman @ 2010-01-05 5:37 UTC (permalink / raw) To: Phil Hagelberg; +Cc: Tom Tromey, Ted Zlatanov, emacs-devel On Tue, Jan 5, 2010 at 6:02 AM, Phil Hagelberg <phil@hagelb.org> wrote: > Tom Tromey <tromey@redhat.com> writes: > > I've also got a quick prototype of a DVCS-centric archive management > tool (for gathering packages from library authors and publishing them) > that I will post soon once I've fleshed it out a bit more. This sounds good to me. I believe that ELPA should not hold the files but rather have pointers to them. Otherwise the turnaround time will be longer for changes made to the files. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-05 5:37 ` Lennart Borgman @ 2010-01-05 15:06 ` Stefan Monnier 2010-01-05 16:03 ` Ted Zlatanov 0 siblings, 1 reply; 129+ messages in thread From: Stefan Monnier @ 2010-01-05 15:06 UTC (permalink / raw) To: Lennart Borgman; +Cc: Tom Tromey, Ted Zlatanov, Phil Hagelberg, emacs-devel >> Tom Tromey <tromey@redhat.com> writes: >> I've also got a quick prototype of a DVCS-centric archive management >> tool (for gathering packages from library authors and publishing them) >> that I will post soon once I've fleshed it out a bit more. > This sounds good to me. I believe that ELPA should not hold the files > but rather have pointers to them. Otherwise the turnaround time will > be longer for changes made to the files. The default repositor(y|ies) will want to be under FSF control (not just the copyright, but we also want to have a copy of the files, etc...) so we can assume that the FSF will usually also hold the "master repository" for those packages. I.e. we probably don't want to only hold pointers to files. Tho of course, such an indirection might still be useful somewhere. Stefan ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-05 15:06 ` Stefan Monnier @ 2010-01-05 16:03 ` Ted Zlatanov 2010-01-05 16:47 ` Stefan Monnier 0 siblings, 1 reply; 129+ messages in thread From: Ted Zlatanov @ 2010-01-05 16:03 UTC (permalink / raw) To: emacs-devel On Tue, 05 Jan 2010 10:06:56 -0500 Stefan Monnier <monnier@iro.umontreal.ca> wrote: >>> Tom Tromey <tromey@redhat.com> writes: >>> I've also got a quick prototype of a DVCS-centric archive management >>> tool (for gathering packages from library authors and publishing them) >>> that I will post soon once I've fleshed it out a bit more. >> This sounds good to me. I believe that ELPA should not hold the files >> but rather have pointers to them. Otherwise the turnaround time will >> be longer for changes made to the files. SM> The default repositor(y|ies) will want to be under FSF control (not just SM> the copyright, but we also want to have a copy of the files, etc...) so SM> we can assume that the FSF will usually also hold the "master SM> repository" for those packages. SM> I.e. we probably don't want to only hold pointers to files. Tho of SM> course, such an indirection might still be useful somewhere. The "package file" (analogous to a RPM/DEB package fike) should contain the real, final version of all the files. The package repository may accumulate metadata about all the package files it contains, but I should be able to copy a single package file to another system and install it. As a sysadmin I don't want package files to be indeterminate. For instance, how can I set up a local mirror if some of the files inside some of the package files are possibly remote? There's all the other security risks I listed in my previous note, too, concerning remote network access. This is a huge sysadmin problem with Perl for instance, where the liberal packaging standard and complicated build process make it hard to synchronize packages across multiple installations. I've suffered through that many times and hope it doesn't recur with Emacs packages. Some OS integration (DEB, RPM, MacOS X, etc.) would be useful, at least as a possibility. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-05 16:03 ` Ted Zlatanov @ 2010-01-05 16:47 ` Stefan Monnier 2010-01-05 20:18 ` Ted Zlatanov 2010-01-09 5:40 ` Phil Hagelberg 0 siblings, 2 replies; 129+ messages in thread From: Stefan Monnier @ 2010-01-05 16:47 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel > The "package file" (analogous to a RPM/DEB package fike) should contain > the real, final version of all the files. The package repository may > accumulate metadata about all the package files it contains, but I > should be able to copy a single package file to another system and > install it. As a sysadmin I don't want package files to be > indeterminate. For instance, how can I set up a local mirror if some of > the files inside some of the package files are possibly remote? There's > all the other security risks I listed in my previous note, too, > concerning remote network access. > This is a huge sysadmin problem with Perl for instance, where the > liberal packaging standard and complicated build process make it hard to > synchronize packages across multiple installations. I've suffered > through that many times and hope it doesn't recur with Emacs packages. > Some OS integration (DEB, RPM, MacOS X, etc.) would be useful, at least > as a possibility. OK, I'm not sure whether we're talking about the same things. The way I see it, there will be the following elements: - a (set of) Bzr repository holding the package sources. - a tool that will build tarballs from those sources. - an area where those tarballs are stored, along with some metadata (think Debian repository). - a tool that can scan such repositories and downlooad packages from them, obeying dependencies (think APT). - a tool that can install/activate/uninstall a given package, ... (think DPKG). This last one is what I tried to write when I wrote install.el many moons ago. Stefan ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-05 16:47 ` Stefan Monnier @ 2010-01-05 20:18 ` Ted Zlatanov 2010-01-05 23:50 ` Jonas Bernoulli 2010-01-09 5:40 ` Phil Hagelberg 1 sibling, 1 reply; 129+ messages in thread From: Ted Zlatanov @ 2010-01-05 20:18 UTC (permalink / raw) To: emacs-devel On Tue, 05 Jan 2010 11:47:46 -0500 Stefan Monnier <monnier@iro.umontreal.ca> wrote: >> The "package file" (analogous to a RPM/DEB package fike) should contain >> the real, final version of all the files. The package repository may >> accumulate metadata about all the package files it contains, but I >> should be able to copy a single package file to another system and >> install it. As a sysadmin I don't want package files to be >> indeterminate. For instance, how can I set up a local mirror if some of >> the files inside some of the package files are possibly remote? There's >> all the other security risks I listed in my previous note, too, >> concerning remote network access. >> This is a huge sysadmin problem with Perl for instance, where the >> liberal packaging standard and complicated build process make it hard to >> synchronize packages across multiple installations. I've suffered >> through that many times and hope it doesn't recur with Emacs packages. >> Some OS integration (DEB, RPM, MacOS X, etc.) would be useful, at least >> as a possibility. SM> OK, I'm not sure whether we're talking about the same things. I digressed too much, sorry. SM> The way I see it, there will be the following elements: SM> - a (set of) Bzr repository holding the package sources. Yes, with initial members "FSF supported," "FSF unsupported" (both hosted inside the Emacs Bzr repo) and "ELPA" (hosted externally, may not be a Bazaar repository at all). This is the storage backend. The "FSF supported" storage may be the lisp/ directory inside Emacs, for instance. SM> - a tool that will build tarballs from those sources. Yes, including the necessary package metadata inside the file. This tool will probably come from ELPA. SM> - an area where those tarballs are stored, along with some metadata SM> (think Debian repository). All of this is MHO: there should be three areas to parallel the storage backends above. They may be stored inside the backend or externally. The package repositories should be identified by a single URL; the ones that come with Emacs should point to a secure Savannah URL. That may address RMS' concerns about loading software over the network. Jonas' emacsmirror.org would be a fourth package repository, probably not enabled by default but easy to enable. SM> - a tool that can scan such repositories and downlooad packages from SM> them, obeying dependencies (think APT). This is package.el IIUC. SM> - a tool that can install/activate/uninstall a given package, ... (think SM> DPKG). This last one is what I tried to write when I wrote install.el SM> many moons ago. This is also package.el IIUC. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-05 20:18 ` Ted Zlatanov @ 2010-01-05 23:50 ` Jonas Bernoulli 2010-01-06 20:45 ` Richard Stallman 0 siblings, 1 reply; 129+ messages in thread From: Jonas Bernoulli @ 2010-01-05 23:50 UTC (permalink / raw) To: emacs-devel 2010/1/5 Ted Zlatanov <tzz@lifelogs.com>: > All of this is MHO: there should be three areas to parallel the storage > backends above. They may be stored inside the backend or externally. > The package repositories should be identified by a single URL; the ones > that come with Emacs should point to a secure Savannah URL. That may > address RMS' concerns about loading software over the network. Jonas' > emacsmirror.org would be a fourth package repository, probably not > enabled by default but easy to enable. Sounds good to me. I by now means expect my mirror to be enabled by default, but it would certainly be nice if that were possible. -- Jonas ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-05 23:50 ` Jonas Bernoulli @ 2010-01-06 20:45 ` Richard Stallman 2010-01-06 21:49 ` Ted Zlatanov 0 siblings, 1 reply; 129+ messages in thread From: Richard Stallman @ 2010-01-06 20:45 UTC (permalink / raw) To: Jonas Bernoulli; +Cc: emacs-devel > The package repositories should be identified by a single URL; the ones > that come with Emacs should point to a secure Savannah URL. That may > address RMS' concerns about loading software over the network. Alas that doesn't affect the issue. Running software directly from the network is bad because it is a process that invites users to give up control. Who wrote the program makes no difference, not for this. Where the program comes from makes no difference. Suppose I wrote the program and people fetch it from gnu.org: that makes no difference. It is still bad for people to adopt a practice that gives them less control. So we won't lead people in that direction. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-06 20:45 ` Richard Stallman @ 2010-01-06 21:49 ` Ted Zlatanov 0 siblings, 0 replies; 129+ messages in thread From: Ted Zlatanov @ 2010-01-06 21:49 UTC (permalink / raw) To: emacs-devel On Wed, 06 Jan 2010 15:45:37 -0500 Richard Stallman <rms@gnu.org> wrote: >> The package repositories should be identified by a single URL; the ones >> that come with Emacs should point to a secure Savannah URL. That may >> address RMS' concerns about loading software over the network. RS> Alas that doesn't affect the issue. Running software directly from RS> the network is bad because it is a process that invites users to give RS> up control. RS> Who wrote the program makes no difference, not for this. RS> Where the program comes from makes no difference. RS> Suppose I wrote the program and people fetch it from gnu.org: RS> that makes no difference. It is still bad for people to RS> adopt a practice that gives them less control. RS> So we won't lead people in that direction. Sorry for confusing the issue between the package.el discussion and Lennart's discussion. I was talking about installing software, not running it directly from the repository. I would expect packages to be signed by the package repository maintainer as well, ensuring integrity. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-05 16:47 ` Stefan Monnier 2010-01-05 20:18 ` Ted Zlatanov @ 2010-01-09 5:40 ` Phil Hagelberg 2010-01-09 14:32 ` Richard Stallman 2010-01-12 20:06 ` Ted Zlatanov 1 sibling, 2 replies; 129+ messages in thread From: Phil Hagelberg @ 2010-01-09 5:40 UTC (permalink / raw) To: Stefan Monnier; +Cc: Ted Zlatanov, elpa, emacs-devel [-- Attachment #1: Type: text/plain, Size: 1891 bytes --] Stefan Monnier <monnier@iro.umontreal.ca> writes: > The way I see it, there will be the following elements: > - a (set of) Bzr repository holding the package sources. > - a tool that will build tarballs from those sources. > - an area where those tarballs are stored, along with some metadata > (think Debian repository). > - a tool that can scan such repositories and downlooad packages from > them, obeying dependencies (think APT). > - a tool that can install/activate/uninstall a given package, ... (think > DPKG). This last one is what I tried to write when I wrote install.el > many moons ago. Here are the pieces to the puzzle from my initial brainstorming: * An index file contains a alist mapping projects to DVCS repositories. This would be manually curated. Adding a project would just be done by adding an entry to this file. * A function that builds packages for every version in the repository of each project. A version is defined by a tag matching a given pattern. * The packages are deployed to an archive source, which is publicly available over HTTP. * Currently package.el can perform the last two points from your list (scan/download/dependencies and install/activate/uninstall). The attached file implements the server-side maintenance, albeit in a rough manner. It's limited to single-file packages kept in git repositories, simply because that's what I'm personally familiar with, though I don't think supporting other DVCSes would be tricky at all. I welcome comments on this. Once the server-side maintenance tool is ready, I want to add support for multiple sources to the client-side package.el, and once that's done supporting multiple install locations on disk (as Tom has explained) would be the next step. Right now the code is at http://github.com/technomancy/package.el, though I've attached a copy of the relevant file. -Phil [-- Attachment #2: package-maint.el --] [-- Type: application/emacs-lisp, Size: 7092 bytes --] ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-09 5:40 ` Phil Hagelberg @ 2010-01-09 14:32 ` Richard Stallman 2010-01-09 17:47 ` Phil Hagelberg 2010-01-12 20:06 ` Ted Zlatanov 1 sibling, 1 reply; 129+ messages in thread From: Richard Stallman @ 2010-01-09 14:32 UTC (permalink / raw) To: Phil Hagelberg; +Cc: tzz, elpa, monnier, emacs-devel * An index file contains a alist mapping projects to DVCS repositories. This would be manually curated. Adding a project would just be done by adding an entry to this file. This could be ok, but that shouldn't be misunderstood as a decision to include libraries that we don't have papers for. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-09 14:32 ` Richard Stallman @ 2010-01-09 17:47 ` Phil Hagelberg 2010-01-10 10:41 ` Richard Stallman 0 siblings, 1 reply; 129+ messages in thread From: Phil Hagelberg @ 2010-01-09 17:47 UTC (permalink / raw) To: rms; +Cc: tzz, elpa, monnier, emacs-devel Richard Stallman <rms@gnu.org> writes: > * An index file contains a alist mapping projects to DVCS > repositories. This would be manually curated. Adding a project would > just be done by adding an entry to this file. > > This could be ok, but that shouldn't be misunderstood as a decision > to include libraries that we don't have papers for. Naturally, it's up to whoever manually curates the index to ensure the package follows the guidelines for that archive. For the FSF archive(s) it would mean ensuring copyright assignment is in place; for folks who want to maintain their own archives it would probably be something simpler like making sure it's licensed as free software. -Phil ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-09 17:47 ` Phil Hagelberg @ 2010-01-10 10:41 ` Richard Stallman 2010-01-10 11:33 ` Stephen J. Turnbull 0 siblings, 1 reply; 129+ messages in thread From: Richard Stallman @ 2010-01-10 10:41 UTC (permalink / raw) To: Phil Hagelberg; +Cc: tzz, elpa, monnier, emacs-devel Naturally, it's up to whoever manually curates the index to ensure the package follows the guidelines for that archive. For the FSF archive(s) it would mean ensuring copyright assignment is in place; for folks who want to maintain their own archives it would probably be something simpler like making sure it's licensed as free software. I am worried that this will lead to a problem. Namely, there may be increasing numbers of packages that we can't get adequate papers for and can't put into Emacs. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-10 10:41 ` Richard Stallman @ 2010-01-10 11:33 ` Stephen J. Turnbull 2010-01-10 14:04 ` Chong Yidong 0 siblings, 1 reply; 129+ messages in thread From: Stephen J. Turnbull @ 2010-01-10 11:33 UTC (permalink / raw) To: rms; +Cc: tzz, emacs-devel, elpa, Phil Hagelberg, monnier Richard Stallman writes: > Naturally, it's up to whoever manually curates the index to ensure the > package follows the guidelines for that archive. For the FSF archive(s) > it would mean ensuring copyright assignment is in place; for folks who > want to maintain their own archives it would probably be something > simpler like making sure it's licensed as free software. > > I am worried that this will lead to a problem. > Namely, there may be increasing numbers of packages > that we can't get adequate papers for and can't put into Emacs. This is a problem as opposed to increasing numbers of packages that are available only to their authors and you can't put into Emacs? At least this way you'll have a contact address for authors. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-10 11:33 ` Stephen J. Turnbull @ 2010-01-10 14:04 ` Chong Yidong 2010-01-10 16:00 ` joakim ` (2 more replies) 0 siblings, 3 replies; 129+ messages in thread From: Chong Yidong @ 2010-01-10 14:04 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: rms, tzz, emacs-devel, elpa, Phil Hagelberg, monnier "Stephen J. Turnbull" <stephen@xemacs.org> writes: > Richard Stallman writes: > > Naturally, it's up to whoever manually curates the index to ensure the > > package follows the guidelines for that archive. For the FSF archive(s) > > it would mean ensuring copyright assignment is in place; for folks who > > want to maintain their own archives it would probably be something > > simpler like making sure it's licensed as free software. > > > > I am worried that this will lead to a problem. > > Namely, there may be increasing numbers of packages > > that we can't get adequate papers for and can't put into Emacs. > > This is a problem as opposed to increasing numbers of packages that > are available only to their authors and you can't put into Emacs? At > least this way you'll have a contact address for authors. No, it's a valid concern. It's hard work hunting down papers and integrating packages. We must make sure a package system does not tempt us to just "dump and forget". ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-10 14:04 ` Chong Yidong @ 2010-01-10 16:00 ` joakim 2010-01-10 20:43 ` Phil Hagelberg 2010-01-10 20:07 ` Phil Hagelberg 2010-01-11 3:09 ` Stephen J. Turnbull 2 siblings, 1 reply; 129+ messages in thread From: joakim @ 2010-01-10 16:00 UTC (permalink / raw) To: Chong Yidong Cc: rms, tzz, emacs-devel, elpa, Phil Hagelberg, Stephen J. Turnbull, monnier Chong Yidong <cyd@stupidchicken.com> writes: > "Stephen J. Turnbull" <stephen@xemacs.org> writes: > >> Richard Stallman writes: >> > Naturally, it's up to whoever manually curates the index to ensure the >> > package follows the guidelines for that archive. For the FSF archive(s) >> > it would mean ensuring copyright assignment is in place; for folks who >> > want to maintain their own archives it would probably be something >> > simpler like making sure it's licensed as free software. >> > >> > I am worried that this will lead to a problem. >> > Namely, there may be increasing numbers of packages >> > that we can't get adequate papers for and can't put into Emacs. >> >> This is a problem as opposed to increasing numbers of packages that >> are available only to their authors and you can't put into Emacs? At >> least this way you'll have a contact address for authors. > > No, it's a valid concern. It's hard work hunting down papers and > integrating packages. We must make sure a package system does not tempt > us to just "dump and forget". A well made package system might also conceivably make it easier to acquire papers right? For instance, it might be more prestigious to have ones package in the FSF repos. Also, digital signatures might be legally binding at some point. (I think they are in Swedenalready, we have a national system for it anyway) > -- Joakim Verona ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-10 16:00 ` joakim @ 2010-01-10 20:43 ` Phil Hagelberg 0 siblings, 0 replies; 129+ messages in thread From: Phil Hagelberg @ 2010-01-10 20:43 UTC (permalink / raw) To: joakim Cc: rms, tzz, emacs-devel, elpa, monnier, Stephen J. Turnbull, Chong Yidong joakim@verona.se writes: >> No, it's a valid concern. It's hard work hunting down papers and >> integrating packages. We must make sure a package system does not tempt >> us to just "dump and forget". > > A well made package system might also conceivably make it easier to > acquire papers right? > > For instance, it might be more prestigious to have ones package in the > FSF repos. In my mind it has little to do with prestige and more to do with streamlining the installation process for users of my projects. Being able to tell users "install $FOO through package.el" rather than giving a many-step install process means it will be easier for users to discover and try out my projects, not to mention keeping them up to date with the latest version. For this benefit I (and surely many other package authors) would be willing to put up with the hassle of paperwork where possible, thereby increasing the number of packages for which the FSF owns copyright. -Phil ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-10 14:04 ` Chong Yidong 2010-01-10 16:00 ` joakim @ 2010-01-10 20:07 ` Phil Hagelberg 2010-01-10 21:24 ` Stefan Monnier 2010-01-11 3:09 ` Stephen J. Turnbull 2 siblings, 1 reply; 129+ messages in thread From: Phil Hagelberg @ 2010-01-10 20:07 UTC (permalink / raw) To: Chong Yidong; +Cc: rms, tzz, emacs-devel, elpa, monnier, Stephen J. Turnbull Chong Yidong <cyd@stupidchicken.com> writes: >>> I am worried that this will lead to a problem. >>> Namely, there may be increasing numbers of packages >>> that we can't get adequate papers for and can't put into Emacs. >> >> This is a problem as opposed to increasing numbers of packages that >> are available only to their authors and you can't put into Emacs? At >> least this way you'll have a contact address for authors. > > No, it's a valid concern. It's hard work hunting down papers and > integrating packages. We must make sure a package system does not tempt > us to just "dump and forget". Can you explain what you mean by this? Are you saying Emacs perhaps should not have a package manager, or just that we need to be careful about what packages we allow into the repository? I'm going to continue my work on package.el whether or not it is accepted into Emacs, but it would be a shame to make users go through extra installation steps to use it. If package.el is included, I will make every effort to assign copyright for the projects I maintain for which I can, but there are some for which it simply won't be possible due to my accepting patches by email and then losing some of my old email archives in a hard drive crash. I would hate for this situation to impede adding useful features to Emacs. -Phil ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-10 20:07 ` Phil Hagelberg @ 2010-01-10 21:24 ` Stefan Monnier 2010-01-10 23:02 ` Phil Hagelberg 0 siblings, 1 reply; 129+ messages in thread From: Stefan Monnier @ 2010-01-10 21:24 UTC (permalink / raw) To: Phil Hagelberg Cc: rms, tzz, emacs-devel, elpa, Stephen J. Turnbull, Chong Yidong > I'm going to continue my work on package.el whether or not it is > accepted into Emacs, but it would be a shame to make users go through > extra installation steps to use it. Having myself written a package manager (install.el), I'm clearly fully in favor of integrating something like package.el. I don't think there's necessarily much work to be done to integrate it. E.g. It is not necessary to set up a VCS area to keep the package sources (and other such things) before integrating package.el. Basically, all I want is for it to be able to distinguish between "packages available locally, either installed by the user or the sysadmin", and "packages that will be autoloaded in a given session", so as to be able to install different versions of the same package at the same time. Stefan ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-10 21:24 ` Stefan Monnier @ 2010-01-10 23:02 ` Phil Hagelberg 2010-01-11 3:28 ` Stefan Monnier 2010-01-19 11:40 ` Phil Hagelberg 0 siblings, 2 replies; 129+ messages in thread From: Phil Hagelberg @ 2010-01-10 23:02 UTC (permalink / raw) To: Stefan Monnier Cc: rms, tzz, emacs-devel, elpa, Stephen J. Turnbull, Chong Yidong Stefan Monnier <monnier@iro.umontreal.ca> writes: >> I'm going to continue my work on package.el whether or not it is >> accepted into Emacs, but it would be a shame to make users go through >> extra installation steps to use it. > > Having myself written a package manager (install.el), I'm clearly fully > in favor of integrating something like package.el. > I don't think there's necessarily much work to be done to integrate it. > > E.g. It is not necessary to set up a VCS area to keep the package > sources (and other such things) before integrating package.el. True, this is not of the highest importance since the steps it takes can still be done manually without too much tedium. > Basically, all I want is for it to be able to distinguish between > "packages available locally, either installed by the user or the > sysadmin", and "packages that will be autoloaded in a given session", so > as to be able to install different versions of the same package at the > same time. OK, I will prioritize this once I finish adding support for multiple archive sources. I think we'll need this in order to support separating out fully-supported packages vs unsupported packages for which we simply have copyright assignment as Ted has suggested. thanks, Phil ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-10 23:02 ` Phil Hagelberg @ 2010-01-11 3:28 ` Stefan Monnier 2010-01-14 3:12 ` Phil Hagelberg 2010-01-19 11:40 ` Phil Hagelberg 1 sibling, 1 reply; 129+ messages in thread From: Stefan Monnier @ 2010-01-11 3:28 UTC (permalink / raw) To: Phil Hagelberg Cc: rms, tzz, emacs-devel, elpa, Stephen J. Turnbull, Chong Yidong > OK, I will prioritize this once I finish adding support for multiple > archive sources. I think we'll need this in order to support separating > out fully-supported packages vs unsupported packages for which we simply > have copyright assignment as Ted has suggested. Feel free to set your own priorities, but from where I stand, a single repository would already be useful (used for the packages we'd distribute separately from Emacs). Stefan ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-11 3:28 ` Stefan Monnier @ 2010-01-14 3:12 ` Phil Hagelberg 0 siblings, 0 replies; 129+ messages in thread From: Phil Hagelberg @ 2010-01-14 3:12 UTC (permalink / raw) To: Stefan Monnier; +Cc: elpa, emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: >> OK, I will prioritize this once I finish adding support for multiple >> archive sources. I think we'll need this in order to support separating >> out fully-supported packages vs unsupported packages for which we simply >> have copyright assignment as Ted has suggested. > > Feel free to set your own priorities, but from where I stand, a single > repository would already be useful (used for the packages we'd distribute > separately from Emacs). Yeah, I've already started this work, so I think it won't take too long to wrap up. Plus it will be useful to users of package.el even before it gets merged into Emacs. -Phil [trimmed cc list] ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-10 23:02 ` Phil Hagelberg 2010-01-11 3:28 ` Stefan Monnier @ 2010-01-19 11:40 ` Phil Hagelberg 2010-01-19 17:17 ` Dan Nicolaescu ` (2 more replies) 1 sibling, 3 replies; 129+ messages in thread From: Phil Hagelberg @ 2010-01-19 11:40 UTC (permalink / raw) To: Stefan Monnier Cc: rms, Chong Yidong, emacs-devel, elpa, Stephen J. Turnbull, tzz [-- Attachment #1: Type: text/plain, Size: 1553 bytes --] Phil Hagelberg <phil@hagelb.org> writes: >> Basically, all I want is for it to be able to distinguish between >> "packages available locally, either installed by the user or the >> sysadmin", and "packages that will be autoloaded in a given session", so >> as to be able to install different versions of the same package at the >> same time. > > OK, I will prioritize this once I finish adding support for multiple > archive sources. I think we'll need this in order to support separating > out fully-supported packages vs unsupported packages for which we simply > have copyright assignment as Ted has suggested. I've just implemented support for multiple package sources in package.el. Right now it is preconfigured to use ELPA, but the following snippet will let it pull in packages from my own archive source as well: (add-to-list 'package-archives '("technomancy" . "http://repo.technomancy.us/emacs/") t) Hit M-x package-list-packages to see all available packages. The "bork" and "bingle" packages are dummies that are only available from my repository, and should be available for installation at the same time as the standard ELPA-provided packages. I'd love to see some other elisp library authors try to set up their own package archive sources using package-maint.el and test the multiple-archive support. I hope that a new version of package.el incorporating my changes could be pushed out to ELPA and then possibly included in Emacs once a little more work has gone into integration with the Emacs load process. -Phil [-- Attachment #2: package.el --] [-- Type: application/emacs-lisp, Size: 55248 bytes --] [-- Attachment #3: package-maint.el --] [-- Type: application/emacs-lisp, Size: 7552 bytes --] ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-19 11:40 ` Phil Hagelberg @ 2010-01-19 17:17 ` Dan Nicolaescu 2010-02-22 19:22 ` Ted Zlatanov 2010-03-01 14:43 ` Ted Zlatanov 2 siblings, 0 replies; 129+ messages in thread From: Dan Nicolaescu @ 2010-01-19 17:17 UTC (permalink / raw) To: Phil Hagelberg Cc: rms, Chong Yidong, emacs-devel, elpa, Stefan Monnier, Stephen J. Turnbull, tzz Please add a menu to package.el. This patch vs an older version of package.el does that. It should still apply. --- package.el 2009-09-19 11:33:11.000000000 -0700 +++ package.el.with-menu 2009-09-19 11:31:00.000000000 -0700 @@ -1129,28 +1129,71 @@ ;;;; Package menu mode. -(defvar package-menu-mode-map nil +(defvar package-menu-mode-map + (let ((map (make-keymap)) + (menu-map (make-sparse-keymap "Package"))) + (suppress-keymap map) + (define-key map "q" 'quit-window) + (define-key map "n" 'next-line) + (define-key map "p" 'previous-line) + (define-key map "u" 'package-menu-mark-unmark) + (define-key map "\177" 'package-menu-backup-unmark) + (define-key map "d" 'package-menu-mark-delete) + (define-key map "i" 'package-menu-mark-install) + (define-key map "g" 'package-menu-revert) + (define-key map "r" 'package-menu-refresh) + (define-key map "~" 'package-menu-mark-obsolete-for-deletion) + (define-key map "x" 'package-menu-execute) + (define-key map "h" 'package-menu-quick-help) + (define-key map "?" 'package-menu-view-commentary) + (define-key map [menu-bar package-menu] (cons "Package" menu-map)) + (define-key menu-map [mq] + '(menu-item "Quit" quit-window + :help "Quit package selection")) + (define-key menu-map [s1] '("--")) + (define-key menu-map [mn] + '(menu-item "Next" next-line + :help "Next Line")) + (define-key menu-map [mp] + '(menu-item "Previous" previous-line + :help "Previous Line")) + (define-key menu-map [s2] '("--")) + (define-key menu-map [mu] + '(menu-item "Unmark" package-menu-mark-unmark + :help "Clear any marks on a package and move to the next line")) + (define-key menu-map [munm] + '(menu-item "Unmark backwards" package-menu-backup-unmark + :help "Back up one line and clear any marks on that package")) + (define-key menu-map [md] + '(menu-item "Mark for deletion" package-menu-mark-delete + :help "Mark a package for deletion and move to the next line")) + (define-key menu-map [mi] + '(menu-item "Mark for install" package-menu-mark-install + :help "Mark a package for installation and move to the next line")) + (define-key menu-map [s3] '("--")) + (define-key menu-map [mg] + '(menu-item "Update package list" package-menu-revert + :help "Update the list of packages")) + (define-key menu-map [mr] + '(menu-item "Refresh package list" package-menu-refresh + :help "Download the ELPA archive")) + (define-key menu-map [s4] '("--")) + (define-key menu-map [mt] + '(menu-item "Mark obsolete packages" package-menu-mark-obsolete-for-deletion + :help "Mark all obsolete packages for deletion")) + (define-key menu-map [mx] + '(menu-item "Execute actions" package-menu-execute + :help "Perform all the marked actions")) + (define-key menu-map [s5] '("--")) + (define-key menu-map [mh] + '(menu-item "Help" package-menu-quick-help + :help "Show short key binding help for package-menu-mode")) + (define-key menu-map [mc] + '(menu-item "View Commentary" package-menu-view-commentary + :help "Display information about this package")) + map) "Local keymap for `package-menu-mode' buffers.") -(unless package-menu-mode-map - (setq package-menu-mode-map (make-keymap)) - (suppress-keymap package-menu-mode-map) - (define-key package-menu-mode-map "q" 'quit-window) - (define-key package-menu-mode-map "n" 'next-line) - (define-key package-menu-mode-map "p" 'previous-line) - (define-key package-menu-mode-map "u" 'package-menu-mark-unmark) - (define-key package-menu-mode-map "\177" 'package-menu-backup-unmark) - (define-key package-menu-mode-map "d" 'package-menu-mark-delete) - (define-key package-menu-mode-map "i" 'package-menu-mark-install) - (define-key package-menu-mode-map "g" 'package-menu-revert) - (define-key package-menu-mode-map "r" 'package-menu-refresh) - (define-key package-menu-mode-map "~" - 'package-menu-mark-obsolete-for-deletion) - (define-key package-menu-mode-map "x" 'package-menu-execute) - (define-key package-menu-mode-map "h" 'package-menu-quick-help) - (define-key package-menu-mode-map "?" 'package-menu-view-commentary) - ) - (defvar package-menu-sort-button-map (let ((map (make-sparse-keymap))) (define-key map [header-line mouse-1] 'package-menu-sort-by-column) ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-19 11:40 ` Phil Hagelberg 2010-01-19 17:17 ` Dan Nicolaescu @ 2010-02-22 19:22 ` Ted Zlatanov 2010-02-22 20:36 ` joakim ` (2 more replies) 2010-03-01 14:43 ` Ted Zlatanov 2 siblings, 3 replies; 129+ messages in thread From: Ted Zlatanov @ 2010-02-22 19:22 UTC (permalink / raw) To: emacs-devel On Tue, 19 Jan 2010 03:40:11 -0800 Phil Hagelberg <phil@hagelb.org> wrote: PH> Phil Hagelberg <phil@hagelb.org> writes: >>> Basically, all I want is for it to be able to distinguish between >>> "packages available locally, either installed by the user or the >>> sysadmin", and "packages that will be autoloaded in a given session", so >>> as to be able to install different versions of the same package at the >>> same time. >> >> OK, I will prioritize this once I finish adding support for multiple >> archive sources. I think we'll need this in order to support separating >> out fully-supported packages vs unsupported packages for which we simply >> have copyright assignment as Ted has suggested. PH> I've just implemented support for multiple package sources in PH> package.el. Right now it is preconfigured to use ELPA, but the following PH> snippet will let it pull in packages from my own archive source as well: PH> (add-to-list 'package-archives PH> '("technomancy" . "http://repo.technomancy.us/emacs/") t) PH> Hit M-x package-list-packages to see all available packages. The "bork" PH> and "bingle" packages are dummies that are only available from my PH> repository, and should be available for installation at the same time as PH> the standard ELPA-provided packages. PH> I'd love to see some other elisp library authors try to set up their own PH> package archive sources using package-maint.el and test the PH> multiple-archive support. PH> I hope that a new version of package.el incorporating my changes could PH> be pushed out to ELPA and then possibly included in Emacs once a little PH> more work has gone into integration with the Emacs load process. Hi Phil, that's wonderful news. I was just reading (and commented) at http://monkey.org/~marius/self-contained-emacs.html about how package.el with custom repositories could solve a very common need to have a "personalized" self-contained Emacs. Have you considered support for non-HTTP sources? I'm OK with HTTP only for now but I think a Bazaar source would make sense if there's going to be a ELPA-style repository inside Emacs itself. Also are file:/// URLs supported? What remains to be done to make package.el a part of Emacs? I think Dan Nicolaescu's suggestion about menus makes sense. Is there anything else? Once it's in the core we can start work on making more Emacs packages installable directly. Again, I think this is great progress and I appreciate your work. Thanks Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-02-22 19:22 ` Ted Zlatanov @ 2010-02-22 20:36 ` joakim 2010-02-23 22:25 ` Stefan Monnier 2010-03-04 5:39 ` Phil Hagelberg 2 siblings, 0 replies; 129+ messages in thread From: joakim @ 2010-02-22 20:36 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel Ted Zlatanov <tzz@lifelogs.com> writes: > On Tue, 19 Jan 2010 03:40:11 -0800 Phil Hagelberg <phil@hagelb.org> wrote: > > PH> Phil Hagelberg <phil@hagelb.org> writes: >>>> Basically, all I want is for it to be able to distinguish between >>>> "packages available locally, either installed by the user or the >>>> sysadmin", and "packages that will be autoloaded in a given session", so >>>> as to be able to install different versions of the same package at the >>>> same time. >>> >>> OK, I will prioritize this once I finish adding support for multiple >>> archive sources. I think we'll need this in order to support separating >>> out fully-supported packages vs unsupported packages for which we simply >>> have copyright assignment as Ted has suggested. > > PH> I've just implemented support for multiple package sources in > PH> package.el. Right now it is preconfigured to use ELPA, but the following > PH> snippet will let it pull in packages from my own archive source as well: > > PH> (add-to-list 'package-archives > PH> '("technomancy" . "http://repo.technomancy.us/emacs/") t) > > PH> Hit M-x package-list-packages to see all available packages. The "bork" > PH> and "bingle" packages are dummies that are only available from my > PH> repository, and should be available for installation at the same time as > PH> the standard ELPA-provided packages. > > PH> I'd love to see some other elisp library authors try to set up their own > PH> package archive sources using package-maint.el and test the > PH> multiple-archive support. > > PH> I hope that a new version of package.el incorporating my changes could > PH> be pushed out to ELPA and then possibly included in Emacs once a little > PH> more work has gone into integration with the Emacs load process. > > Hi Phil, > > that's wonderful news. I was just reading (and commented) at > http://monkey.org/~marius/self-contained-emacs.html about how package.el > with custom repositories could solve a very common need to have a > "personalized" self-contained Emacs. Thats a brilliant idea! > Have you considered support for non-HTTP sources? I'm OK with HTTP only > for now but I think a Bazaar source would make sense if there's going to > be a ELPA-style repository inside Emacs itself. Also are file:/// URLs > supported? > > What remains to be done to make package.el a part of Emacs? I think > Dan Nicolaescu's suggestion about menus makes sense. Is there anything > else? > > Once it's in the core we can start work on making more Emacs packages > installable directly. Again, I think this is great progress and I > appreciate your work. > > Thanks > Ted > > -- Joakim Verona ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-02-22 19:22 ` Ted Zlatanov 2010-02-22 20:36 ` joakim @ 2010-02-23 22:25 ` Stefan Monnier 2010-02-24 21:20 ` Ted Zlatanov 2010-02-25 22:56 ` David De La Harpe Golden 2010-03-04 5:39 ` Phil Hagelberg 2 siblings, 2 replies; 129+ messages in thread From: Stefan Monnier @ 2010-02-23 22:25 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel > What remains to be done to make package.el a part of Emacs? I think > Dan Nicolaescu's suggestion about menus makes sense. Is there anything > else? For me, the only thing holding it back is the ability to concurrently install different versions of the same package. E.g. the sysadmin may install a whole bunch of packages and even different versions of those packages, and then each user gets to choose which ones to use in her ~/.emacs. Stefan ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-02-23 22:25 ` Stefan Monnier @ 2010-02-24 21:20 ` Ted Zlatanov 2010-02-25 20:05 ` Stefan Monnier 2010-02-25 22:56 ` David De La Harpe Golden 1 sibling, 1 reply; 129+ messages in thread From: Ted Zlatanov @ 2010-02-24 21:20 UTC (permalink / raw) To: emacs-devel On Tue, 23 Feb 2010 17:25:17 -0500 Stefan Monnier <monnier@IRO.UMontreal.CA> wrote: >> What remains to be done to make package.el a part of Emacs? I think >> Dan Nicolaescu's suggestion about menus makes sense. Is there anything >> else? SM> For me, the only thing holding it back is the ability to concurrently SM> install different versions of the same package. SM> E.g. the sysadmin may install a whole bunch of packages and even SM> different versions of those packages, and then each user gets to choose SM> which ones to use in her ~/.emacs. Phil and other ELPA folks, please comment, here are my opinions. Emacs could recognize the Version header and always track it internally when it loads a library file, maybe with a (version . "1.2") in the load-history. That would help a lot, I think. There's already good logic in package.el for tracking its own installations and they are required to have a version. They get installed as $prefix/NAME-VERSION/NAME.el which is a good way to resolve path conflicts. I think we should ensure this works in common scenarios; the users who break package.el in ways we haven't anticipated should either stop using it, submit patches, or suffer. I think that's reasonable, especially if it happens as a major upgrade (in Emacs 24 perhaps). The fact that there are many happy users of package.el today shows that it's all right even in its current form. I also think that once package.el is available from within Emacs, many of the custom installations will simply become redundant or be reduced to ELPA-style repositories local to the site. So the need for handling edge cases will shrink as word spreads. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-02-24 21:20 ` Ted Zlatanov @ 2010-02-25 20:05 ` Stefan Monnier 2010-03-01 14:59 ` Ted Zlatanov 0 siblings, 1 reply; 129+ messages in thread From: Stefan Monnier @ 2010-02-25 20:05 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel >>> What remains to be done to make package.el a part of Emacs? I think >>> Dan Nicolaescu's suggestion about menus makes sense. Is there anything >>> else? SM> For me, the only thing holding it back is the ability to concurrently SM> install different versions of the same package. SM> E.g. the sysadmin may install a whole bunch of packages and even SM> different versions of those packages, and then each user gets to choose SM> which ones to use in her ~/.emacs. > Phil and other ELPA folks, please comment, here are my opinions. > Emacs could recognize the Version header and always track it internally > when it loads a library file, maybe with a (version . "1.2") in the > load-history. That would help a lot, I think. I personnally don't care about the behavior if the user tries to activate two different versions of the same package in a given session. So package.el doesn't even need to do anything special about it AFAIC. > They get installed as > $prefix/NAME-VERSION/NAME.el > which is a good way to resolve path conflicts. Yes, it's a good choice for installation location. It still remains to distinguish between "installed in the file system" and "active in a particular session" (where "active" doesn't mean loaded but rather just that autoloads are in place). Stefan ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-02-25 20:05 ` Stefan Monnier @ 2010-03-01 14:59 ` Ted Zlatanov 2010-03-01 16:32 ` Jonas Bernoulli ` (2 more replies) 0 siblings, 3 replies; 129+ messages in thread From: Ted Zlatanov @ 2010-03-01 14:59 UTC (permalink / raw) To: emacs-devel On Thu, 25 Feb 2010 15:05:47 -0500 Stefan Monnier <monnier@iro.umontreal.ca> wrote: >>>> What remains to be done to make package.el a part of Emacs? I think >>>> Dan Nicolaescu's suggestion about menus makes sense. Is there anything >>>> else? SM> For me, the only thing holding it back is the ability to concurrently SM> install different versions of the same package. SM> E.g. the sysadmin may install a whole bunch of packages and even SM> different versions of those packages, and then each user gets to choose SM> which ones to use in her ~/.emacs. >> Phil and other ELPA folks, please comment, here are my opinions. >> Emacs could recognize the Version header and always track it internally >> when it loads a library file, maybe with a (version . "1.2") in the >> load-history. That would help a lot, I think. SM> I personnally don't care about the behavior if the user tries to SM> activate two different versions of the same package in a given session. SM> So package.el doesn't even need to do anything special about it AFAIC. OK. But I still think Emacs should record the version as I suggested whenever it finds it in a .el/.elc file. It would help resolve many annoying user-level bugs by showing exactly what version of the library was loaded, not implied from the directory but directly from the version header. Does that require lots of changes? >> They get installed as >> $prefix/NAME-VERSION/NAME.el >> which is a good way to resolve path conflicts. SM> Yes, it's a good choice for installation location. It still remains to SM> distinguish between "installed in the file system" and "active in SM> a particular session" (where "active" doesn't mean loaded but rather SM> just that autoloads are in place). I think Phil or Tom should comment, I don't know how they plan to address your concerns. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-01 14:59 ` Ted Zlatanov @ 2010-03-01 16:32 ` Jonas Bernoulli 2010-03-01 17:14 ` Ted Zlatanov 2010-03-01 21:19 ` Stefan Monnier 2010-03-01 21:37 ` Jonas Bernoulli 2 siblings, 1 reply; 129+ messages in thread From: Jonas Bernoulli @ 2010-03-01 16:32 UTC (permalink / raw) To: emacs-devel (I am rather confused by the mixture of quoting styles.) >>> Emacs could recognize the Version header and always track it internally >>> when it loads a library file, maybe with a (version . "1.2") in the >>> load-history. That would help a lot, I think. Absolutely. However this information is missing from a lot of libraries. Also even if library contain version information it is still uncommon that libraries state what version of their dependencies are actually required. Cedet contains something like this - has this portion of cedet been merged into 23.2? If such an extended `require' form (or similar standardized information in the library header) are not adopted there is no way to automatically extract this information. This means that maintainers of package repositories have to figure it out manually or just leave this information out completely. I am mirroring 2100 packages - I won't do it manually. > SM> I personnally don't care about the behavior if the user tries to > SM> activate two different versions of the same package in a given session. If I remember correctly what he meant to say was that loading multiple versions is a user error. Having multiple versions installed is still an option as is choosing a particular version by the user (as opposed to the sysadmin) at runtime. > OK. But I still think Emacs should record the version as I suggested > whenever it finds it in a .el/.elc file. It would help resolve many > annoying user-level bugs by showing exactly what version of the library > was loaded, not implied from the directory but directly from the version > header. Does that require lots of changes? I agree. But as explained above this still doesn't help the package manager to determine which version of a dependency is required. -- Jonas ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-01 16:32 ` Jonas Bernoulli @ 2010-03-01 17:14 ` Ted Zlatanov 2010-03-01 20:59 ` Jonas Bernoulli 2010-03-02 17:39 ` Richard Stallman 0 siblings, 2 replies; 129+ messages in thread From: Ted Zlatanov @ 2010-03-01 17:14 UTC (permalink / raw) To: emacs-devel On Mon, 1 Mar 2010 17:32:21 +0100 Jonas Bernoulli <jonas@bernoulli.cc> wrote: JB> (I am rather confused by the mixture of quoting styles.) >>>> Emacs could recognize the Version header and always track it internally >>>> when it loads a library file, maybe with a (version . "1.2") in the >>>> load-history. That would help a lot, I think. JB> Absolutely. However this information is missing from a lot of JB> libraries. Also even if library contain version information it is JB> still uncommon that libraries state what version of their JB> dependencies are actually required. Cedet contains something like JB> this - has this portion of cedet been merged into 23.2? We have to start somewhere. Tracking dependencies is not possible until versions are consistent so I think it's OK to use (version . nil) in the load-history for the libraries that don't have a version header. JB> If such an extended `require' form (or similar standardized JB> information in the library header) are not adopted there is no way JB> to automatically extract this information. JB> This means that maintainers of package repositories have to figure JB> it out manually or just leave this information out completely. I am JB> mirroring 2100 packages - I won't do it manually. I think it's reasonable to also require unit and integration tests for packages, at least for those that are considered "reliable" by the packaging system, to accomplish these goals. But these are long-term goals and I think they merit a separate discussion on emacs-devel. I'll start the discussion with my (as usual) naive questions :) SM> I personnally don't care about the behavior if the user tries to SM> activate two different versions of the same package in a given session. JB> If I remember correctly what he meant to say was that loading JB> multiple versions is a user error. Having multiple versions JB> installed is still an option as is choosing a particular version by JB> the user (as opposed to the sysadmin) at runtime. Does elm.el support that scheme as package.el does, distinguishing between package installation (with a versioned install dir) and package activation? >> OK. But I still think Emacs should record the version as I suggested >> whenever it finds it in a .el/.elc file. It would help resolve many >> annoying user-level bugs by showing exactly what version of the library >> was loaded, not implied from the directory but directly from the version >> header. Does that require lots of changes? JB> I agree. But as explained above this still doesn't help the package JB> manager to determine which version of a dependency is required. Yes, in this context I only meant to say it would save time when debugging user errors. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-01 17:14 ` Ted Zlatanov @ 2010-03-01 20:59 ` Jonas Bernoulli 2010-03-02 17:39 ` Richard Stallman 1 sibling, 0 replies; 129+ messages in thread From: Jonas Bernoulli @ 2010-03-01 20:59 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel 2010/3/1 Ted Zlatanov <tzz@lifelogs.com>: > On Mon, 1 Mar 2010 17:32:21 +0100 Jonas Bernoulli <jonas@bernoulli.cc> wrote: > > JB> (I am rather confused by the mixture of quoting styles.) >>>>> Emacs could recognize the Version header and always track it internally >>>>> when it loads a library file, maybe with a (version . "1.2") in the >>>>> load-history. That would help a lot, I think. > > JB> Absolutely. However this information is missing from a lot of > JB> libraries. Also even if library contain version information it is > JB> still uncommon that libraries state what version of their > JB> dependencies are actually required. Cedet contains something like > JB> this - has this portion of cedet been merged into 23.2? > > We have to start somewhere. Tracking dependencies is not possible until > versions are consistent so I think it's OK to use (version . nil) in the > load-history for the libraries that don't have a version header. Yes. > Does elm.el support that scheme as package.el does, distinguishing > between package installation (with a versioned install dir) and package > activation? No, it is not a package manager it doesn't care if a package is installed it just needs to know where the sources are and then extracts information from it. elx.el and lisp-mnt.el are used to extract information from individual packages. elm.el is used to collect, check and store that information. If I write a package manager it will be called epkg until (and if) it can be merged with package.el. -- Jonas ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-01 17:14 ` Ted Zlatanov 2010-03-01 20:59 ` Jonas Bernoulli @ 2010-03-02 17:39 ` Richard Stallman 2010-03-02 18:46 ` Ted Zlatanov 1 sibling, 1 reply; 129+ messages in thread From: Richard Stallman @ 2010-03-02 17:39 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel It looks like some people are trying to turn this into a package system with all the features of Debian. Please don't do that. The reason it is ok to install package.el is that it doesn't try to be a full-blown package system. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-02 17:39 ` Richard Stallman @ 2010-03-02 18:46 ` Ted Zlatanov 0 siblings, 0 replies; 129+ messages in thread From: Ted Zlatanov @ 2010-03-02 18:46 UTC (permalink / raw) To: emacs-devel On Tue, 02 Mar 2010 12:39:34 -0500 Richard Stallman <rms@gnu.org> wrote: RS> It looks like some people are trying to turn this into a package RS> system with all the features of Debian. Please don't do that. The RS> reason it is ok to install package.el is that it doesn't try to be a RS> full-blown package system. The only major feature that has been added (by Phil Hagelberg) is support for multiple package repositories. I don't think any others are under review; the only outstanding issues I know of are Stefan's concerns about overlapping installs and a request for menus. All the discussion about testing, versions, and dependency tracking is purely theoretical and I expect it to benefit the package repository contributors and maintainers in the long run. I don't think that functionality should necessarily be pushed into package.el. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-01 14:59 ` Ted Zlatanov 2010-03-01 16:32 ` Jonas Bernoulli @ 2010-03-01 21:19 ` Stefan Monnier 2010-03-02 13:34 ` Ted Zlatanov 2010-03-01 21:37 ` Jonas Bernoulli 2 siblings, 1 reply; 129+ messages in thread From: Stefan Monnier @ 2010-03-01 21:19 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel > OK. But I still think Emacs should record the version as I suggested > whenever it finds it in a .el/.elc file. It would help resolve many > annoying user-level bugs by showing exactly what version of the library > was loaded, not implied from the directory but directly from the version > header. Does that require lots of changes? I don't see much evidence that "it would help resolve many annoying user-level bugs". I'm not opposed to it, but when it comes to making external Elisp packages easier to manage for the user, this comes very far down the list of priorities. Stefan ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-01 21:19 ` Stefan Monnier @ 2010-03-02 13:34 ` Ted Zlatanov 0 siblings, 0 replies; 129+ messages in thread From: Ted Zlatanov @ 2010-03-02 13:34 UTC (permalink / raw) To: emacs-devel On Mon, 01 Mar 2010 16:19:47 -0500 Stefan Monnier <monnier@iro.umontreal.ca> wrote: >> OK. But I still think Emacs should record the version as I suggested >> whenever it finds it in a .el/.elc file. It would help resolve many >> annoying user-level bugs by showing exactly what version of the library >> was loaded, not implied from the directory but directly from the version >> header. Does that require lots of changes? SM> I don't see much evidence that "it would help resolve many annoying SM> user-level bugs". There was one just a few days ago on the Gnus newsgroup, which Katsumi Yamaoka resolved by prior experience but otherwise would have been really puzzling. I've seen many like it. The general problem of shadowed paths is pretty pervasive and frustrating, especially since users know many ways to add to the load-path. SM> I'm not opposed to it, but when it comes to making external Elisp SM> packages easier to manage for the user, this comes very far down the SM> list of priorities. All right, thanks. I will keep it in mind. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-01 14:59 ` Ted Zlatanov 2010-03-01 16:32 ` Jonas Bernoulli 2010-03-01 21:19 ` Stefan Monnier @ 2010-03-01 21:37 ` Jonas Bernoulli 2010-03-01 22:18 ` Štěpán Němec ` (2 more replies) 2 siblings, 3 replies; 129+ messages in thread From: Jonas Bernoulli @ 2010-03-01 21:37 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel 2010/3/1 Ted Zlatanov <tzz@lifelogs.com>: > OK. But I still think Emacs should record the version as I suggested > whenever it finds it in a .el/.elc file. It would help resolve many > annoying user-level bugs by showing exactly what version of the library > was loaded, not implied from the directory but directly from the version > header. The information you get like this at runtime is not reliable. Some people bump right after making a new release other develop for months keeping the version from the latest release. Rather this information should be extracted by the repository maintainers, They have the full history of the package (if available) and cat determine from that which of the many revision containing a particular version string, actually IS that version... (I have some slightly buggy code for this somewhere). Speaking of version strings, are there any conventions how an author should version his packages? Currently when I make edits after a release and make them public while not wanting to release yet another version I usually just add a "+" after the version. 0.1 -> 0.1+ -> .... -> 0.1+ -> 0.2 Not really happy with it. But what should I be doing instead? -- Jonas ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-01 21:37 ` Jonas Bernoulli @ 2010-03-01 22:18 ` Štěpán Němec 2010-03-01 22:30 ` Štěpán Němec 2010-03-01 23:00 ` Jonas Bernoulli 2010-03-02 13:38 ` Ted Zlatanov 2010-03-02 19:03 ` Davis Herring 2 siblings, 2 replies; 129+ messages in thread From: Štěpán Němec @ 2010-03-01 22:18 UTC (permalink / raw) To: Jonas Bernoulli; +Cc: Ted Zlatanov, emacs-devel On Mon, Mar 01, 2010 at 10:37:43PM +0100, Jonas Bernoulli wrote: > Speaking of version strings, are there any conventions how an author > should version his packages? Currently when I make edits after a > release and make them public while not wanting to release yet another > version I usually just add a "+" after the version. > > 0.1 -> 0.1+ -> .... -> 0.1+ -> 0.2 [just a thought:] Maybe using something compatible with what `version-to-list' and friends can understand? Štěpán ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-01 22:18 ` Štěpán Němec @ 2010-03-01 22:30 ` Štěpán Němec 2010-03-01 23:00 ` Jonas Bernoulli 1 sibling, 0 replies; 129+ messages in thread From: Štěpán Němec @ 2010-03-01 22:30 UTC (permalink / raw) To: Jonas Bernoulli, Ted Zlatanov, emacs-devel On Mon, Mar 01, 2010 at 11:18:32PM +0100, Štěpán Němec wrote: > On Mon, Mar 01, 2010 at 10:37:43PM +0100, Jonas Bernoulli wrote: > > Speaking of version strings, are there any conventions how an author > > should version his packages? Currently when I make edits after a > > release and make them public while not wanting to release yet another > > version I usually just add a "+" after the version. > > > > 0.1 -> 0.1+ -> .... -> 0.1+ -> 0.2 > > [just a thought:] > Maybe using something compatible with what `version-to-list' and friends > can understand? ... which is actually the case even with the above: (version-to-list "0.1+") => (0 1 -3) so it's treated like an alpha release by default. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-01 22:18 ` Štěpán Němec 2010-03-01 22:30 ` Štěpán Němec @ 2010-03-01 23:00 ` Jonas Bernoulli 1 sibling, 0 replies; 129+ messages in thread From: Jonas Bernoulli @ 2010-03-01 23:00 UTC (permalink / raw) To: Jonas Bernoulli, Ted Zlatanov, emacs-devel >> 0.1 -> 0.1+ -> .... -> 0.1+ -> 0.2 > > [just a thought:] > Maybe using something compatible with what `version-to-list' and friends > can understand? Hm, yes even my own such library does not understand it. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-01 21:37 ` Jonas Bernoulli 2010-03-01 22:18 ` Štěpán Němec @ 2010-03-02 13:38 ` Ted Zlatanov 2010-03-03 20:13 ` Tom Tromey 2010-03-02 19:03 ` Davis Herring 2 siblings, 1 reply; 129+ messages in thread From: Ted Zlatanov @ 2010-03-02 13:38 UTC (permalink / raw) To: emacs-devel On Mon, 1 Mar 2010 22:37:43 +0100 Jonas Bernoulli <jonas@bernoulli.cc> wrote: JB> 2010/3/1 Ted Zlatanov <tzz@lifelogs.com>: >> OK. But I still think Emacs should record the version as I suggested >> whenever it finds it in a .el/.elc file. It would help resolve many >> annoying user-level bugs by showing exactly what version of the library >> was loaded, not implied from the directory but directly from the version >> header. JB> The information you get like this at runtime is not reliable. Some people JB> bump right after making a new release other develop for months keeping JB> the version from the latest release. JB> Rather this information should be extracted by the repository maintainers, JB> They have the full history of the package (if available) and cat determine JB> from that which of the many revision containing a particular version string, JB> actually IS that version... (I have some slightly buggy code for this JB> somewhere). I don't think that's ideal either. I'd rather use the authors' version and then allow an override by the repository maintainer. Otherwise you'll certainly end up with different version levels between repos and that's not a good scenario for the user. The repo could associate a content hash with the version to generate a unique identifier (and some insurance against corruption) for a particular library snapshot. I wonder if Emacs has a standard way to do this (ignoring comments and whitespace). Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-02 13:38 ` Ted Zlatanov @ 2010-03-03 20:13 ` Tom Tromey 2010-03-04 5:42 ` Phil Hagelberg 0 siblings, 1 reply; 129+ messages in thread From: Tom Tromey @ 2010-03-03 20:13 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel >>>>> "Ted" == Ted Zlatanov <tzz@lifelogs.com> writes: Ted> I don't think that's ideal either. I'd rather use the authors' version Ted> and then allow an override by the repository maintainer. Yes. My policy for ELPA has just been to require sanity from the maintainers. In general I don't upload a package that is broken, and I require changes to go upstream before uploading. My reasoning was that a little sanity is not very hard to achieve (though in real life there are a some recalcitrant types out there) and it was better to try to distribute the work instead of taking it all on myself. Tom ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-03 20:13 ` Tom Tromey @ 2010-03-04 5:42 ` Phil Hagelberg 0 siblings, 0 replies; 129+ messages in thread From: Phil Hagelberg @ 2010-03-04 5:42 UTC (permalink / raw) To: Tom Tromey; +Cc: Ted Zlatanov, emacs-devel On Wed, Mar 3, 2010 at 12:13 PM, Tom Tromey <tromey@redhat.com> wrote: >>>>>> "Ted" == Ted Zlatanov <tzz@lifelogs.com> writes: > > Ted> I don't think that's ideal either. I'd rather use the authors' version > Ted> and then allow an override by the repository maintainer. > > Yes. My policy for ELPA has just been to require sanity from the > maintainers. In general I don't upload a package that is broken, and I > require changes to go upstream before uploading. My reasoning was that > a little sanity is not very hard to achieve (though in real life there > are a some recalcitrant types out there) and it was better to try to > distribute the work instead of taking it all on myself. It should be noted that if package.el is included in Emacs, it will provide a lot more incentive for package authors to provide proper metadata and ensure that their code works with package.el themselves. So I don't think this needs to be worried about. -Phil ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-01 21:37 ` Jonas Bernoulli 2010-03-01 22:18 ` Štěpán Němec 2010-03-02 13:38 ` Ted Zlatanov @ 2010-03-02 19:03 ` Davis Herring 2 siblings, 0 replies; 129+ messages in thread From: Davis Herring @ 2010-03-02 19:03 UTC (permalink / raw) To: Jonas Bernoulli; +Cc: Ted Zlatanov, emacs-devel > Speaking of version strings, are there any conventions how an author > should version his packages? Currently when I make edits after a > release and make them public while not wanting to release yet another > version I usually just add a "+" after the version. > > 0.1 -> 0.1+ -> .... -> 0.1+ -> 0.2 > > Not really happy with it. But what should I be doing instead? Why not just use another layer of versions? 0.1, 0.1.1, 0.1.2, ..., 0.1.74, 0.2. The rule I (try to) follow is that the major version number should be incremented on an incompatible change, the minor version number on a feature addition, the revision on any (public) bug fix, and (if one uses it) the build number on any test. Davis -- This product is sold by volume, not by mass. If it appears too dense or too sparse, it is because mass-energy conversion has occurred during shipping. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-02-23 22:25 ` Stefan Monnier 2010-02-24 21:20 ` Ted Zlatanov @ 2010-02-25 22:56 ` David De La Harpe Golden 1 sibling, 0 replies; 129+ messages in thread From: David De La Harpe Golden @ 2010-02-25 22:56 UTC (permalink / raw) To: Emacs developers; +Cc: elpa Stefan Monnier wrote: >> What remains to be done to make package.el a part of Emacs? I think >> Dan Nicolaescu's suggestion about menus makes sense. Is there anything >> else? > > For me, the only thing holding it back is the ability to concurrently > install different versions of the same package. > I find _calling_ the facility "package" of (minor) concern. Clearly it's not package as in Common Lisp package::symbol Obviously, Emacs Lisp is not Common Lisp and there's more than enough precedent for the other "package" usage from elsewhere, I expect most Emacs users would in fact be more used to it from GNU+Linux distros for starters. But could maybe just add something like this to the ELPA FAQ? Though it should be fairly obvious, newbies who don't know some core differences between Emacs Lisp and Common Lisp may be briefly caught out: Q. Does this implement Common Lisp style "packages" (of symbols) for Emacs Lisp? A. No, it does not, neither as its primary goal nor as an implementation detail. Think "package" purely as in "program code distribution bundle". Note that the fact that a Common Lisp "program code distribution bundle"* is typically a bundle of some program code that defines and then defines itself in a particular Common Lisp "package of symbols" is an aspect of Common Lisp language and conventions completely irrelevant for and alien to Emacs Lisp. * sometimes referred to as a "package" even in the Common Lisp world. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-02-22 19:22 ` Ted Zlatanov 2010-02-22 20:36 ` joakim 2010-02-23 22:25 ` Stefan Monnier @ 2010-03-04 5:39 ` Phil Hagelberg 2010-03-04 7:29 ` Stephen J. Turnbull ` (3 more replies) 2 siblings, 4 replies; 129+ messages in thread From: Phil Hagelberg @ 2010-03-04 5:39 UTC (permalink / raw) To: Ted Zlatanov, tromey; +Cc: emacs-devel > Have you considered support for non-HTTP sources? I'm OK with HTTP only > for now but I think a Bazaar source would make sense if there's going to > be a ELPA-style repository inside Emacs itself. Also are file:/// URLs > supported? Rather than supporting installing straight out of a VC repository, I have opted to make it easy to create an archive from a list of VC repositories. (package-maint.el) The idea is that only releases would be included in the archive rather than any-old-version. This also reduces the dependencies on the client-side. If you want to add support for installing directly from a VC repository don't let me stop you, but I think there are more important things to do first. > What remains to be done to make package.el a part of Emacs? I think > Dan Nicolaescu's suggestion about menus makes sense. Is there > anything else? I want to look at the menus patch soon, but I haven't found the time yet. Stefan also mentioned supporting having multiple versions of the same project installed at once. Rather than supporting this by allowing multiple versions to coexist in a single install location, I think it makes more sense to allow multiple install locations. I haven't thought through the implications of this though. Perhaps it would be as easy as simply activating the newest version available, but perhaps we need something more explicit. Probably some mechanism would be necessary for allowing users to opt-out of system packages. I think supporting the distinction between system-level installs vs user-level installs is the biggest blocker (besides more thorough testing) to including package.el in Emacs. I would like to implement this, but it probably won't happen within the next month unless someone else steps up to start work on it. > Phil hasn't replied to questions in this thread for a bit so he must > be busy as well. Would it be OK if I worked with the Emacs > maintainers to patch up Phil's latest package.el so it can go into > Emacs? Or should I wait a bit longer? I really don't mind waiting, > but if I can help... Don't wait on account of me. I definitely want to see this through, but if you're able to put work into it now then go for it. -Phil ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-04 5:39 ` Phil Hagelberg @ 2010-03-04 7:29 ` Stephen J. Turnbull 2010-03-04 18:27 ` Stefan Monnier 2010-03-04 13:54 ` Ted Zlatanov ` (2 subsequent siblings) 3 siblings, 1 reply; 129+ messages in thread From: Stephen J. Turnbull @ 2010-03-04 7:29 UTC (permalink / raw) To: Phil Hagelberg; +Cc: tromey, Ted Zlatanov, emacs-devel Phil Hagelberg writes: > I think supporting the distinction between system-level installs vs > user-level installs is the biggest blocker (besides more thorough > testing) to including package.el in Emacs. I would like to implement > this, but it probably won't happen within the next month unless > someone else steps up to start work on it. Warning: I'm not really sure what the problems are[1], but the user install vs. system install distinction has never really worked right in XEmacs's package system. It probably just requires a little bit of thought[2], but it will be well worth it in reducing user frustration if you take care in designing this feature. Footnotes: [1] Probably partly an incomplete design and partly PEBKACs. [2] My apologies to whoever implemented that part of our system, but that's my opinion. ;-) ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-04 7:29 ` Stephen J. Turnbull @ 2010-03-04 18:27 ` Stefan Monnier 2010-03-05 4:41 ` Stephen J. Turnbull 0 siblings, 1 reply; 129+ messages in thread From: Stefan Monnier @ 2010-03-04 18:27 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: tromey, Ted Zlatanov, Phil Hagelberg, emacs-devel > Warning: I'm not really sure what the problems are[1], but the user > install vs. system install distinction has never really worked right > in XEmacs's package system. It would help if you could describe the problems encountered, Stefan ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-04 18:27 ` Stefan Monnier @ 2010-03-05 4:41 ` Stephen J. Turnbull 0 siblings, 0 replies; 129+ messages in thread From: Stephen J. Turnbull @ 2010-03-05 4:41 UTC (permalink / raw) To: Stefan Monnier; +Cc: tromey, Ted Zlatanov, Phil Hagelberg, emacs-devel Stefan Monnier writes: > > Warning: I'm not really sure what the problems are[1], but the user > > install vs. system install distinction has never really worked right > > in XEmacs's package system. > > It would help if you could describe the problems encountered, At my consulting rates, that would be worth about $500. ;-) As I said, it's not clear what is design and what is PEBKAC, and clarifying that would require a lot of effort. We've just had a lot of user complaints over the years related to specified and/or default installation locations, permissions issues, etc. Packages get installed in places the running XEmacs isn't looking for them, insufficient privilege to install in the default place, that kind of thing. This often seems to be related to system vs. user issues. At this point I just want to offer the advice that Here Be Dragons (or at least some cute little lizards) to watch out for. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-04 5:39 ` Phil Hagelberg 2010-03-04 7:29 ` Stephen J. Turnbull @ 2010-03-04 13:54 ` Ted Zlatanov 2010-03-04 18:29 ` Stefan Monnier 2010-03-04 18:30 ` Tom Tromey 3 siblings, 0 replies; 129+ messages in thread From: Ted Zlatanov @ 2010-03-04 13:54 UTC (permalink / raw) To: emacs-devel; +Cc: Dan Hackney, Phil Hagelberg On Wed, 3 Mar 2010 21:39:17 -0800 Phil Hagelberg <phil@hagelb.org> wrote: >> Have you considered support for non-HTTP sources? I'm OK with HTTP only >> for now but I think a Bazaar source would make sense if there's going to >> be a ELPA-style repository inside Emacs itself. Also are file:/// URLs >> supported? PH> Rather than supporting installing straight out of a VC repository, I PH> have opted to make it easy to create an archive from a list of VC PH> repositories. (package-maint.el) The idea is that only releases PH> would be included in the archive rather than any-old-version. PH> This also reduces the dependencies on the client-side. OK. See below about file:/// URLs. PH> If you want to add support for installing directly from a VC repository PH> don't let me stop you, but I think there are more important things to PH> do first. Understood. The TODO list has more important items, I agree. >> What remains to be done to make package.el a part of Emacs? I think >> Dan Nicolaescu's suggestion about menus makes sense. Is there >> anything else? PH> I want to look at the menus patch soon, but I haven't found the time PH> yet. Great, thanks! PH> Stefan also mentioned supporting having multiple versions of the PH> same project installed at once. Rather than supporting this by PH> allowing multiple versions to coexist in a single install location, PH> I think it makes more sense to allow multiple install locations. I PH> haven't thought through the implications of this though. Perhaps it PH> would be as easy as simply activating the newest version available, PH> but perhaps we need something more explicit. Probably some mechanism PH> would be necessary for allowing users to opt-out of system packages. PH> I think supporting the distinction between system-level installs vs PH> user-level installs is the biggest blocker (besides more thorough PH> testing) to including package.el in Emacs. I would like to implement PH> this, but it probably won't happen within the next month unless PH> someone else steps up to start work on it. How about associating a single install location with each repository? Logically that would make sense and there would be a default (nil) repository for things not managed by package.el. Then the user, by managing the repository priority, would also manage the load-path priority. >> Phil hasn't replied to questions in this thread for a bit so he must >> be busy as well. Would it be OK if I worked with the Emacs >> maintainers to patch up Phil's latest package.el so it can go into >> Emacs? Or should I wait a bit longer? I really don't mind waiting, >> but if I can help... PH> Don't wait on account of me. I definitely want to see this through, PH> but if you're able to put work into it now then go for it. Can you review Dan Haxney's (CC here and to you) patches as well at http://github.com/haxney/package? He supports file:/// URLs and has made many other improvements. I don't know if he has rebased against your support for multiple repositories. If the two of you could decide what pieces are worth keeping and merge, it would make it easier for me to start work on the merged version. Otherwise I may end up wasting effort. Thanks Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-04 5:39 ` Phil Hagelberg 2010-03-04 7:29 ` Stephen J. Turnbull 2010-03-04 13:54 ` Ted Zlatanov @ 2010-03-04 18:29 ` Stefan Monnier 2010-03-04 18:33 ` Tom Tromey ` (2 more replies) 2010-03-04 18:30 ` Tom Tromey 3 siblings, 3 replies; 129+ messages in thread From: Stefan Monnier @ 2010-03-04 18:29 UTC (permalink / raw) To: Phil Hagelberg; +Cc: tromey, Ted Zlatanov, emacs-devel > yet. Stefan also mentioned supporting having multiple versions of the > same project installed at once. Rather than supporting this by > allowing multiple versions to coexist in a single install location, I > think it makes more sense to allow multiple install locations. I I strongly disagree. I want to be able to install all kinds of versions in a single spot so I can quickly see which versions are available. This said, I agree that allowing several install locations is desirable. Actually the "install" part of the code should be able to install a package *anywhere*. Similarly, the activation of a package (i.e. setting up the autoloads) should be doable from a package located anywhere. It doesn't need to be part of the visible UI, but there should be a command like M-x package-install that takes a file name (a single .el file or a tarball) and a target directory (defaults to the main "install location") and installs it there. The only part that really needs to know about "install locations" is the part that lets you list all the installed packages, deinstall some of them, setup/remove activation for some of them, etc... > I think supporting the distinction between system-level installs vs > user-level installs is the biggest blocker (besides more thorough > testing) to including package.el in Emacs. No, I think the only blocker is the support for multiple simultaneous versions. Tho I haven't kept track closely enough to know if there might be copyright-paperwork issues left. Stefan ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-04 18:29 ` Stefan Monnier @ 2010-03-04 18:33 ` Tom Tromey 2010-03-07 22:58 ` Phil Hagelberg 2010-03-04 20:39 ` Ted Zlatanov 2010-03-07 23:16 ` Phil Hagelberg 2 siblings, 1 reply; 129+ messages in thread From: Tom Tromey @ 2010-03-04 18:33 UTC (permalink / raw) To: Stefan Monnier; +Cc: Ted Zlatanov, Phil Hagelberg, emacs-devel Stefan> No, I think the only blocker is the support for multiple Stefan> simultaneous versions. Tho I haven't kept track closely enough Stefan> to know if there might be copyright-paperwork issues left. My version was written by me, and all other contributions were under the copyright threshold. So, it is clear here. I don't know about the status of other contributions (Phil's branch, the other github branch, or the menu patch). Tom ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-04 18:33 ` Tom Tromey @ 2010-03-07 22:58 ` Phil Hagelberg 0 siblings, 0 replies; 129+ messages in thread From: Phil Hagelberg @ 2010-03-07 22:58 UTC (permalink / raw) To: Tom Tromey; +Cc: Ted Zlatanov, Stefan Monnier, emacs-devel On Thu, Mar 4, 2010 at 10:33 AM, Tom Tromey <tromey@redhat.com> wrote: > Stefan> No, I think the only blocker is the support for multiple > Stefan> simultaneous versions. Tho I haven't kept track closely enough > Stefan> to know if there might be copyright-paperwork issues left. > > My version was written by me, and all other contributions were under the > copyright threshold. So, it is clear here. I don't know about the > status of other contributions (Phil's branch, the other github branch, > or the menu patch). I haven't gotten any contributions apart from Daniel's patches, and I have my copyright assignment in. So I think Daniel's is the only one missing. -Phil ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-04 18:29 ` Stefan Monnier 2010-03-04 18:33 ` Tom Tromey @ 2010-03-04 20:39 ` Ted Zlatanov 2010-03-07 23:16 ` Phil Hagelberg 2 siblings, 0 replies; 129+ messages in thread From: Ted Zlatanov @ 2010-03-04 20:39 UTC (permalink / raw) To: emacs-devel On Thu, 04 Mar 2010 13:29:49 -0500 Stefan Monnier <monnier@iro.umontreal.ca> wrote: SM> I want to be able to install all kinds of versions in a single spot SM> so I can quickly see which versions are available. This said, I SM> agree that allowing several install locations is desirable. SM> Actually the "install" part of the code should be able to install SM> a package *anywhere*. Similarly, the activation of a package SM> (i.e. setting up the autoloads) should be doable from a package located SM> anywhere. SM> It doesn't need to be part of the visible UI, but there should be SM> a command like M-x package-install that takes a file name (a single .el SM> file or a tarball) and a target directory (defaults to the main "install SM> location") and installs it there. SM> The only part that really needs to know about "install locations" is the SM> part that lets you list all the installed packages, deinstall some of SM> them, setup/remove activation for some of them, etc... On Thu, 04 Mar 2010 11:30:26 -0700 Tom Tromey <tromey@redhat.com> wrote: Tom> You need multiple install locations to let package.el manage additions Tom> in site-lisp, and also (maybe -- there are some questions here) the Tom> load-path for packages which are included with Emacs but also released Tom> separately. Tom> So suppose Emacs starts up and sees, say, 3 versions of gnus: one Tom> included in Emacs, one in site-lisp, and one in ~/.emacs.d/elpa/. Tom> Which one should be activated? Tom> Right now the obvious answer would be the newest one -- but Stefan wants Tom> to let the user pick a specific one. So, I think we'll need a bit of Tom> additional metadata about this. How about letting the user define his own install location for each repository, but with a sensible default? The location could also be tagged with a "is it versioned?" boolean. While installing may not be possible into every location, the user will be able to activate whatever is installed in any location. For example: ELPA's Gnus defaults to ~/.emacs.d/elpa (from repository "ELPA", versioned to $location/gnus-x.yz ) Emacs' Gnus defaults to /usr/local/share/emacs/23.1/lisp (from repository "emacs 23.1", unversioned to $location/gnus) site's Gnus is set by user to /usr/local/share/oursite/lisp (from user-defined repository "oursite", unversioned to $location/gnus) So then "package-install" without a specific repository will pick the first repository in the package-archives list and try to write to it. If it fails, that's an error. Similarly for package removal. With a specific repository, both install and remove go to the specific location set by the user. Yes, unversioned install locations will cause conflicts, but they are necessary to make this backwards compatible. So then resolving the question of multiple installs will actually be "Do you want to pick the ELPA Gnus [in ...], the Emacs 23.1 Gnus [in ...], the oursite Gnus [in ...], or this CVS checkout we found in ~/gnus/lisp because it was in your load-path?" IOW, the user would choose between repository install locations (represented by the name of the repository) and unmanaged paths to resolve the conflict. Would that work? Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-04 18:29 ` Stefan Monnier 2010-03-04 18:33 ` Tom Tromey 2010-03-04 20:39 ` Ted Zlatanov @ 2010-03-07 23:16 ` Phil Hagelberg 2010-03-08 3:17 ` Tom Tromey 2 siblings, 1 reply; 129+ messages in thread From: Phil Hagelberg @ 2010-03-07 23:16 UTC (permalink / raw) To: Stefan Monnier; +Cc: tromey, Ted Zlatanov, emacs-devel On Thu, Mar 4, 2010 at 10:29 AM, Stefan Monnier <monnier@iro.umontreal.ca> wrote: >> yet. Stefan also mentioned supporting having multiple versions of the >> same project installed at once. Rather than supporting this by >> allowing multiple versions to coexist in a single install location, I >> think it makes more sense to allow multiple install locations. I > > I strongly disagree. I want to be able to install all kinds of versions > in a single spot so I can quickly see which versions are available. OK, if that's the most important to you then we should focus on that next. I imagine it might be a fairly invasive modification though; perhaps Tom could offer some hints on how it could be implemented since he's the only one really familiar with the package activation logic? -Phil ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-07 23:16 ` Phil Hagelberg @ 2010-03-08 3:17 ` Tom Tromey 2010-03-08 14:55 ` Ted Zlatanov 0 siblings, 1 reply; 129+ messages in thread From: Tom Tromey @ 2010-03-08 3:17 UTC (permalink / raw) To: Phil Hagelberg; +Cc: Ted Zlatanov, Stefan Monnier, emacs-devel >>>>> "Phil" == Phil Hagelberg <phil@hagelb.org> writes: Phil> OK, if that's the most important to you then we should focus on that Phil> next. I imagine it might be a fairly invasive modification though; Phil> perhaps Tom could offer some hints on how it could be implemented Phil> since he's the only one really familiar with the package activation Phil> logic? I think the default should be to activate the most recent package, and to activate a package at install time. So, if the user picks a specific older version to activate (or equivalently deactivates the most recent version), record that, and take it into account during activation. This would also need some changes in package-activate and the package menu mode, and also we'd have to store some more info somewhere in ~/.emacs.d/elpa/. Tom ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-08 3:17 ` Tom Tromey @ 2010-03-08 14:55 ` Ted Zlatanov 2010-03-08 17:01 ` Stefan Monnier 0 siblings, 1 reply; 129+ messages in thread From: Ted Zlatanov @ 2010-03-08 14:55 UTC (permalink / raw) To: emacs-devel On Sun, 07 Mar 2010 20:17:23 -0700 Tom Tromey <tromey@redhat.com> wrote: Tom> I think the default should be to activate the most recent package, and Tom> to activate a package at install time. So, if the user picks a specific Tom> older version to activate (or equivalently deactivates the most recent Tom> version), record that, and take it into account during activation. So it's a version override alist, where a missing entry implies the user wants the latest? Do you mean something like this: ((package1 (repository1 path-to-specific-version1)) (package2 (repository2 path-to-specific-version2))) or am I misunderstanding something? Tom> This would also need some changes in package-activate and the package Tom> menu mode, and also we'd have to store some more info somewhere in Tom> ~/.emacs.d/elpa/. If this is just an alist it could be stored with Customize and not as part of the repository itself. Conceptually it seems to be at the global level, not per repository. If the repository list is customizable and global (as I think Phil's changes assume) then the overrides could simply be part of the repository list: (setq package-archives '((repository1 :overrides (package1 path-to-specific-version1)) (repository2 :overrides (package2 path-to-specific-version2)))) Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-08 14:55 ` Ted Zlatanov @ 2010-03-08 17:01 ` Stefan Monnier 2010-03-08 17:53 ` Ted Zlatanov 0 siblings, 1 reply; 129+ messages in thread From: Stefan Monnier @ 2010-03-08 17:01 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel Tom> I think the default should be to activate the most recent package, and Tom> to activate a package at install time. So, if the user picks a specific Tom> older version to activate (or equivalently deactivates the most recent Tom> version), record that, and take it into account during activation. > So it's a version override alist, where a missing entry implies the user > wants the latest? Do you mean something like this: > ((package1 (repository1 path-to-specific-version1)) > (package2 (repository2 path-to-specific-version2))) > or am I misunderstanding something? Don't know about you, but I seem to be missing something: why is the word "repository" used here? AFAIK the "repository" for package.el are (typically remote) locations from where to download packages, and they should have no interaction whatsoever with the part that worries about installation and activation of packages (just like Debian's dpkg has no idea about repositories). BTW, my take on package activation and selection of versions (which IIRC I already discussed with Tom a while back and we agreed to disagree) is that activation of a package is controlled by lines in .emacs that take a form similar to: (load "/some/where/package/init/file.el" 'package) so there is no search or selection of package version at startup-time. This means that when a new version of a package is installed, Emacs has various ways to react to it: - don't do anything, and at the next startup warn the user that the package he requested doesn't exist any more because it was replaced by a new version. - update the "load" line right when the package gets upgraded (tho only for the .emacs of the user that performs the upgrade). - use symlinks like "/some/where/elisp/sml-mode" pointing to "sml-mode-4.1" and use (load "/some/where/elisp/sml-mode/startup.el") so the symlink can be adjusted during the upgrade. - use a different load, like (package-activate-latest "/some/where/elisp/sml-mode") which will look for the latest sml-mode package installed in /some/where/elisp/, or (package-activate-latest "sml-mode") which will look for the latest sml-mode package installed in any of the installation targets. -- Stefan ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-08 17:01 ` Stefan Monnier @ 2010-03-08 17:53 ` Ted Zlatanov 0 siblings, 0 replies; 129+ messages in thread From: Ted Zlatanov @ 2010-03-08 17:53 UTC (permalink / raw) To: emacs-devel On Mon, 08 Mar 2010 12:01:52 -0500 Stefan Monnier <monnier@IRO.UMontreal.CA> wrote: Tom> I think the default should be to activate the most recent package, and Tom> to activate a package at install time. So, if the user picks a specific Tom> older version to activate (or equivalently deactivates the most recent Tom> version), record that, and take it into account during activation. >> So it's a version override alist, where a missing entry implies the user >> wants the latest? Do you mean something like this: >> ((package1 (repository1 path-to-specific-version1)) >> (package2 (repository2 path-to-specific-version2))) >> or am I misunderstanding something? SM> Don't know about you, but I seem to be missing something: why is the SM> word "repository" used here? AFAIK the "repository" for package.el are SM> (typically remote) locations from where to download packages, and they SM> should have no interaction whatsoever with the part that worries about SM> installation and activation of packages (just like Debian's dpkg has no SM> idea about repositories). I thought it made sense to remember the repository that a particular version came from, so selection (for activation) and warning messages are more helpful. But this can be guessed based on the path prefix so it's not strictly necessary, and you seem to be looking for package management that's less tied to repositories anyhow. So forget the above and see if the following makes sense. SM> BTW, my take on package activation and selection of versions (which IIRC SM> I already discussed with Tom a while back and we agreed to disagree) is SM> that activation of a package is controlled by lines in .emacs that take SM> a form similar to: SM> (load "/some/where/package/init/file.el" 'package) SM> so there is no search or selection of package version at startup-time. SM> This means that when a new version of a package is installed, Emacs has SM> various ways to react to it: SM> - don't do anything, and at the next startup warn the user that the SM> package he requested doesn't exist any more because it was replaced by SM> a new version. This warning is always necessary because packages can get removed by external agents as well (so the user doesn't know the load path is incorrect). So there could be no new version at all. SM> - update the "load" line right when the package gets upgraded (tho only SM> for the .emacs of the user that performs the upgrade). Too many potential problems here, I'd stay away from this. SM> - use symlinks like "/some/where/elisp/sml-mode" pointing to SM> "sml-mode-4.1" and use (load "/some/where/elisp/sml-mode/startup.el") SM> so the symlink can be adjusted during the upgrade. I did this for 7 years in a lab I was managing and it's not fun. You can automate some of the tedium but inevitably it becomes unwieldy. If the user or admin wants to do it this way, let them manage it externally, there are decent tools to automate it or they can write ELisp wrappers to fit their environment. Also symlinks don't work reliably in some environments. SM> - use a different load, like SM> (package-activate-latest "/some/where/elisp/sml-mode") SM> which will look for the latest sml-mode package installed in SM> /some/where/elisp/, or SM> (package-activate-latest "sml-mode") SM> which will look for the latest sml-mode package installed in SM> any of the installation targets. For the sake of backward compatibility this seems like the best option. (load) and (require) can keep working normally. Users can then transition to the package.el management gradually. Emacs can start using these options gradually too. Version overrides can be then specified as (package-activate-specific "sml-mode" "specific-version") (package-activate-specific "/path/to/sml-mode" "specific-version") Together with the startup warnings (which can be issued by package-activate-{specific,latest}) I think this approach makes sense. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-04 5:39 ` Phil Hagelberg ` (2 preceding siblings ...) 2010-03-04 18:29 ` Stefan Monnier @ 2010-03-04 18:30 ` Tom Tromey 2010-03-05 0:22 ` Stefan Monnier 3 siblings, 1 reply; 129+ messages in thread From: Tom Tromey @ 2010-03-04 18:30 UTC (permalink / raw) To: Phil Hagelberg; +Cc: Ted Zlatanov, emacs-devel >>>>> "Phil" == Phil Hagelberg <phil@hagelb.org> writes: Phil> Stefan also mentioned supporting having multiple versions of the Phil> same project installed at once. Rather than supporting this by Phil> allowing multiple versions to coexist in a single install Phil> location, I think it makes more sense to allow multiple install Phil> locations. I consider these to be orthogonal. You need multiple install locations to let package.el manage additions in site-lisp, and also (maybe -- there are some questions here) the load-path for packages which are included with Emacs but also released separately. So suppose Emacs starts up and sees, say, 3 versions of gnus: one included in Emacs, one in site-lisp, and one in ~/.emacs.d/elpa/. Which one should be activated? Right now the obvious answer would be the newest one -- but Stefan wants to let the user pick a specific one. So, I think we'll need a bit of additional metadata about this. Tom ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-04 18:30 ` Tom Tromey @ 2010-03-05 0:22 ` Stefan Monnier 0 siblings, 0 replies; 129+ messages in thread From: Stefan Monnier @ 2010-03-05 0:22 UTC (permalink / raw) To: Tom Tromey; +Cc: Ted Zlatanov, Phil Hagelberg, emacs-devel > Right now the obvious answer would be the newest one -- but Stefan wants > to let the user pick a specific one. So, I think we'll need a bit of > additional metadata about this. The simplest solution is to not decide which at runtime but at some earlier time. This of course means that this choice can be out-of-date (e.g. the choice may say "activate /usr/local/elisp/foo-2.3" but that directory doesn't even exist any more), but if the changes are made through the package manager, than those out-of-date problems can be caught at that point. And otherwise we can just signal a warning and let the user invoke the package manager to fix it. Stefan ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-19 11:40 ` Phil Hagelberg 2010-01-19 17:17 ` Dan Nicolaescu 2010-02-22 19:22 ` Ted Zlatanov @ 2010-03-01 14:43 ` Ted Zlatanov 2010-03-01 16:26 ` Jonas Bernoulli 2 siblings, 1 reply; 129+ messages in thread From: Ted Zlatanov @ 2010-03-01 14:43 UTC (permalink / raw) To: emacs-devel On Tue, 19 Jan 2010 03:40:11 -0800 Phil Hagelberg <phil@hagelb.org> wrote: PH> Phil Hagelberg <phil@hagelb.org> writes: >>> Basically, all I want is for it to be able to distinguish between >>> "packages available locally, either installed by the user or the >>> sysadmin", and "packages that will be autoloaded in a given session", so >>> as to be able to install different versions of the same package at the >>> same time. >> >> OK, I will prioritize this once I finish adding support for multiple >> archive sources. I think we'll need this in order to support separating >> out fully-supported packages vs unsupported packages for which we simply >> have copyright assignment as Ted has suggested. PH> I've just implemented support for multiple package sources in PH> package.el. Right now it is preconfigured to use ELPA, but the following PH> snippet will let it pull in packages from my own archive source as well: PH> (add-to-list 'package-archives PH> '("technomancy" . "http://repo.technomancy.us/emacs/") t) PH> Hit M-x package-list-packages to see all available packages. The "bork" PH> and "bingle" packages are dummies that are only available from my PH> repository, and should be available for installation at the same time as PH> the standard ELPA-provided packages. PH> I'd love to see some other elisp library authors try to set up their own PH> package archive sources using package-maint.el and test the PH> multiple-archive support. PH> I hope that a new version of package.el incorporating my changes could PH> be pushed out to ELPA and then possibly included in Emacs once a little PH> more work has gone into integration with the Emacs load process. Jonas, have you looked at this update to package.el? Any chance you can make your Emacsmirror accessible as a package.el repository, over HTTP or through patched-in Git/SVN support in package.el? Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-01 14:43 ` Ted Zlatanov @ 2010-03-01 16:26 ` Jonas Bernoulli 2010-03-01 17:28 ` Ted Zlatanov 0 siblings, 1 reply; 129+ messages in thread From: Jonas Bernoulli @ 2010-03-01 16:26 UTC (permalink / raw) To: emacs-devel 2010/3/1 Ted Zlatanov <tzz@lifelogs.com>: > On Tue, 19 Jan 2010 03:40:11 -0800 Phil Hagelberg <phil@hagelb.org> wrote: > PH> I've just implemented support for multiple package sources in > PH> package.el. Right now it is preconfigured to use ELPA, but the following > PH> snippet will let it pull in packages from my own archive source as well: > > PH> I'd love to see some other elisp library authors try to set up their own > PH> package archive sources using package-maint.el and test the > PH> multiple-archive support. > > PH> I hope that a new version of package.el incorporating my changes could > PH> be pushed out to ELPA and then possibly included in Emacs once a little > PH> more work has gone into integration with the Emacs load process. > > Jonas, have you looked at this update to package.el? No, I have not found the time yet but I am aware that Phil has added this feature [0]. > Any chance you can make your Emacsmirror accessible as a package.el repository, Not immediately. Of course I do want the Emacsmirror to support (a) package manager(s) but due to lack of time I have concentrated on mirroring (adding and *keeping up-to-date*) packages. I also haven't updated the metadata which I generate using elm.el in a long time. But this is next on my todo list - I might actually do this today so after that I will hopefully find some time to look into package-maint.el. (While I haven't pushed any updates to the metadata I have worked on improving the code used to generate it though.) Without actually having looked at package-maint.el I believe that elm.el is more advanced - so I have heard and do in part believe... At least the metadata that I generate is *different* from that generated by package-maint.el or manually; and used by package.el. I think the data I generate has some advantages - mainly I do extract more information. Also I do store it in one file per package instead of just one file (which would be huge given that now more than 2100 packages are being mirrored). In the future I would like to extend this to one file per package version. (I used to have support for this but dropped it because it is not clear yet how manual fixes would be merged when new versions are released.) Of course anyone is free to generate the package list as required by package.el himself. This could either be done by using the metadata I have generated and converting it [1] [2] or by getting a recent tarball [3] of all the git directories of all mirrored packages and generating it directly using package-maint.el. Do not misunderstand me - I do plan to support package.el in the future. But right now I am working on other things. Also I am more than willing to support anyone who would like to experiment with this. It might actually be a good idea to test package-maint.el using the 2100 packages in the Emacsmirror tarball. Right now it probably has only been tested with some selected packages which closely follow the conventions - but I have seen things you people would not dream of - attack ships on fire... > over HTTP or through patched-in Git/SVN support in package.el? I am working on git support as I do think it has some considerable advantages - generally people seam to disagree. Since I think using a dvcs instead of tarballs should be preferred I have absolutely no interest in working on generating tarballs myself. Again, like for package.el-style-metadata, that does not mean that I won't add support for tarballs if someone else writes the code. I just do not have an interest in doing it myself. I will quietly work on git support and once it is ready people can test it and decide whether it does have advantages that out weight the cost of requiring users to install git or not. Also I do not much feel like discussing this anymore. At this point I simply have nothing that would demonstrate the benefits and at the same time I doubt that anyone can come up with an argument that would convince me that it's not even worth writing a prove-of-concept. So in summary: I do wish package.el and the Emacsmirror to support one another but due to lack of time, different priorities and because it is unclear which of the two has to go how far to meet the other it is not a short term priority. -- Jonas [0] And I do not know if anyone has found the time to look at my alternative: elm.el. [1] Though while generally more informative it also lacks some information required by package.el. [2] But please wait until I have updated it. As of now it contains some severe bugs. [3] http://github.com/emacsmirror/elm-backup-pkgs ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-01 16:26 ` Jonas Bernoulli @ 2010-03-01 17:28 ` Ted Zlatanov 2010-03-01 18:06 ` Tom Tromey 2010-03-01 21:09 ` Jonas Bernoulli 0 siblings, 2 replies; 129+ messages in thread From: Ted Zlatanov @ 2010-03-01 17:28 UTC (permalink / raw) To: emacs-devel On Mon, 1 Mar 2010 17:26:46 +0100 Jonas Bernoulli <jonas@bernoulli.cc> wrote: JB> Without actually having looked at package-maint.el I believe that JB> elm.el is more advanced - so I have heard and do in part JB> believe... At least the metadata that I generate is *different* from JB> that generated by package-maint.el or manually; and used by JB> package.el. I think the data I generate has some advantages - mainly JB> I do extract more information. Can you or Phil/Tom explain the metadata capabilities of elm.el and package-maint.el respectively, please? It would help to know what the authors think and do a side-by-side comparison. JB> Of course anyone is free to generate the package list as required by JB> package.el himself. This could either be done by using the metadata JB> I have generated and converting it [1] [2] or by getting a recent JB> tarball [3] of all the git directories of all mirrored packages and JB> generating it directly using package-maint.el. That may be necessary if package.el becomes the default package manager in Emacs. It doesn't seem too hard since, as you say, the ELPA-style metadata is a subset of the Emacsmirror metadata. It would also be possible to make a special package.el setup for Emacsmirror which would pull elm.el and manage elm.el packages through it, if that was required. JB> I am working on git support as I do think it has some considerable JB> advantages - generally people seam to disagree. Since I think using JB> a dvcs instead of tarballs should be preferred I have absolutely no JB> interest in working on generating tarballs myself. I agree. 2100 packages over HTTP is crazy, an update would be very costly whether you use a single database or one per package. OTOH for a few packages or specific situations HTTP makes sense so it's a matter of providing a uniform frontend over various backend protocols. JB> Also I do not much feel like discussing this anymore. At this point JB> I simply have nothing that would demonstrate the benefits and at the JB> same time I doubt that anyone can come up with an argument that JB> would convince me that it's not even worth writing a JB> prove-of-concept. Your input is valuable at any stage in the discussions, so thank you for contributing. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-01 17:28 ` Ted Zlatanov @ 2010-03-01 18:06 ` Tom Tromey 2010-03-01 21:22 ` Jonas Bernoulli 2010-03-02 13:31 ` Ted Zlatanov 2010-03-01 21:09 ` Jonas Bernoulli 1 sibling, 2 replies; 129+ messages in thread From: Tom Tromey @ 2010-03-01 18:06 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel >>>>> "Ted" == Ted Zlatanov <tzz@lifelogs.com> writes: Ted> Can you or Phil/Tom explain the metadata capabilities of elm.el and Ted> package-maint.el respectively, please? It would help to know what the Ted> authors think and do a side-by-side comparison. ELPA keeps a file, called archive-contents, that tracks metadata about all the uploaded packages. This metadata is extracted from the package when I do an upload. The information tracked are package name, the version, the requirements list (see my other note), a docstring (for the package menu mode), and whether a package is a single file or a .tar. The latter is just so we can construct the right URL at download time. There's actually a second set of metadata about packages that are included in Emacs itself. This is (poorly) hand-maintained. Ideally this would be generated during the Emacs build. I still haven't had time to look at Phil's changes, so I don't know what he might have added or changed. Tom ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-01 18:06 ` Tom Tromey @ 2010-03-01 21:22 ` Jonas Bernoulli 2010-03-03 20:15 ` Tom Tromey 2010-03-02 13:31 ` Ted Zlatanov 1 sibling, 1 reply; 129+ messages in thread From: Jonas Bernoulli @ 2010-03-01 21:22 UTC (permalink / raw) To: Tom Tromey; +Cc: Ted Zlatanov, emacs-devel > I still haven't had time to look at Phil's changes, so I don't know what > he might have added or changed. Daniel Hackney has also made additions: http://github.com/technomancy/package.el/network Tom, do you use a vcs to develop package.el? If so it might be a good idea to make it publicly available or start using vcs if you are not doing so already. Might make it easier to contribute. What vcs doesn't really matter to me with git it's rather easy to work with foreign repositories, though git (since Phil, Daniel and I use it) or bzr (since it is the political correct solution:) would probably be preferable. -- Jonas ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-01 21:22 ` Jonas Bernoulli @ 2010-03-03 20:15 ` Tom Tromey 2010-03-03 20:22 ` Ted Zlatanov 0 siblings, 1 reply; 129+ messages in thread From: Tom Tromey @ 2010-03-03 20:15 UTC (permalink / raw) To: Jonas Bernoulli; +Cc: Ted Zlatanov, emacs-devel >>>>> "Jonas" == Jonas Bernoulli <jonas@bernoulli.cc> writes: >> I still haven't had time to look at Phil's changes, so I don't know what >> he might have added or changed. Jonas> Daniel Hackney has also made additions: Jonas> http://github.com/technomancy/package.el/network Interesting, thanks. Jonas> Tom, do you use a vcs to develop package.el? Just locally, nothing public. Jonas> If so it might be a good idea to make it publicly available or Jonas> start using vcs if you are not doing so already. I wouldn't mind but I have basically zero time for ELPA right now, and for the foreseeable future. I've been hoping Phil will drive the project of adding the missing features and then integrating package.el into Emacs. Tom ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-03 20:15 ` Tom Tromey @ 2010-03-03 20:22 ` Ted Zlatanov 2010-03-03 22:21 ` Tom Tromey 0 siblings, 1 reply; 129+ messages in thread From: Ted Zlatanov @ 2010-03-03 20:22 UTC (permalink / raw) To: emacs-devel; +Cc: Phil Hagelberg On Wed, 03 Mar 2010 13:15:53 -0700 Tom Tromey <tromey@redhat.com> wrote: Tom> I wouldn't mind but I have basically zero time for ELPA right now, and Tom> for the foreseeable future. I've been hoping Phil will drive the Tom> project of adding the missing features and then integrating package.el Tom> into Emacs. Phil hasn't replied to questions in this thread for a bit so he must be busy as well. Would it be OK if I worked with the Emacs maintainers to patch up Phil's latest package.el so it can go into Emacs? Or should I wait a bit longer? I really don't mind waiting, but if I can help... Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-03 20:22 ` Ted Zlatanov @ 2010-03-03 22:21 ` Tom Tromey 0 siblings, 0 replies; 129+ messages in thread From: Tom Tromey @ 2010-03-03 22:21 UTC (permalink / raw) To: Ted Zlatanov; +Cc: Phil Hagelberg, emacs-devel >>>>> "Ted" == Ted Zlatanov <tzz@lifelogs.com> writes: Ted> On Wed, 03 Mar 2010 13:15:53 -0700 Tom Tromey <tromey@redhat.com> wrote: Tom> I wouldn't mind but I have basically zero time for ELPA right now, and Tom> for the foreseeable future. I've been hoping Phil will drive the Tom> project of adding the missing features and then integrating package.el Tom> into Emacs. Ted> Phil hasn't replied to questions in this thread for a bit so he must be Ted> busy as well. Would it be OK if I worked with the Emacs maintainers to Ted> patch up Phil's latest package.el so it can go into Emacs? Or should I Ted> wait a bit longer? I really don't mind waiting, but if I can help... Yes, it is fine by me. Tom ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-01 18:06 ` Tom Tromey 2010-03-01 21:22 ` Jonas Bernoulli @ 2010-03-02 13:31 ` Ted Zlatanov 1 sibling, 0 replies; 129+ messages in thread From: Ted Zlatanov @ 2010-03-02 13:31 UTC (permalink / raw) To: emacs-devel On Mon, 01 Mar 2010 11:06:15 -0700 Tom Tromey <tromey@redhat.com> wrote: >>>>>> "Ted" == Ted Zlatanov <tzz@lifelogs.com> writes: Ted> Can you or Phil/Tom explain the metadata capabilities of elm.el and Ted> package-maint.el respectively, please? It would help to know what the Ted> authors think and do a side-by-side comparison. Tom> ELPA keeps a file, called archive-contents, that tracks metadata about Tom> all the uploaded packages. This metadata is extracted from the package Tom> when I do an upload. Tom> The information tracked are package name, the version, the requirements Tom> list (see my other note), a docstring (for the package menu mode), and Tom> whether a package is a single file or a .tar. The latter is just so we Tom> can construct the right URL at download time. Tom> There's actually a second set of metadata about packages that are Tom> included in Emacs itself. This is (poorly) hand-maintained. Ideally Tom> this would be generated during the Emacs build. On Mon, 1 Mar 2010 22:09:59 +0100 Jonas Bernoulli <jonas@bernoulli.cc> wrote: JB> $ cat elm.epkg JB> (:summary "Utilities for maintaining the Emacsmirror" JB> :created "20081202" JB> :updated "20100226" JB> :license "GPL-3" JB> :authors (("Jonas Bernoulli" . "jonas@bernoul.li")) JB> :maintainer ("Jonas Bernoulli" . "jonas@bernoul.li") JB> :provided (elm elm-org) JB> :required ((("elx" elx) JB> ("emacs" assoc cl finder))) JB> :keywords ("libraries") JB> :homepage "https://github.com/tarsius/elm") JB> $ cat ../package-commentaries/elm.txt JB> This package is used to maintain the Emacsmirror which can be found at JB> http://www.emacsmirror.org. Thanks! The Emacs package metadata will, ideally, be replaced with a package repository that resides inside Emacs itself. Thus users can explore and activate Emacs packages without the usual drudgery, and some default packages can even be activated for them. This is my plan at least and I hope it's accepted into Emacs. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-03-01 17:28 ` Ted Zlatanov 2010-03-01 18:06 ` Tom Tromey @ 2010-03-01 21:09 ` Jonas Bernoulli 1 sibling, 0 replies; 129+ messages in thread From: Jonas Bernoulli @ 2010-03-01 21:09 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel 2010/3/1 Ted Zlatanov <tzz@lifelogs.com>: > Can you or Phil/Tom explain the metadata capabilities of elm.el and > package-maint.el respectively, please? It would help to know what the > authors think and do a side-by-side comparison. $ [ -e .git ] && echo "yes please" yes please $ ls -1 | wc --lines 2121 $ cat elm.epkg (:summary "Utilities for maintaining the Emacsmirror" :created "20081202" :updated "20100226" :license "GPL-3" :authors (("Jonas Bernoulli" . "jonas@bernoul.li")) :maintainer ("Jonas Bernoulli" . "jonas@bernoul.li") :provided (elm elm-org) :required ((("elx" elx) ("emacs" assoc cl finder))) :keywords ("libraries") :homepage "https://github.com/tarsius/elm") $ cat ../package-commentaries/elm.txt This package is used to maintain the Emacsmirror which can be found at http://www.emacsmirror.org. This library is mostly used to extracts metadata from packages and save it for future use by e.g. a package manager. Most of the code used to generate the mirrors webpage can be found in the accompanying libary `elm-org.el' which might eventually be replaced by a more dynamic webpage. That's what it looks like. Thoughts follow later. -- Jonas ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-10 14:04 ` Chong Yidong 2010-01-10 16:00 ` joakim 2010-01-10 20:07 ` Phil Hagelberg @ 2010-01-11 3:09 ` Stephen J. Turnbull 2 siblings, 0 replies; 129+ messages in thread From: Stephen J. Turnbull @ 2010-01-11 3:09 UTC (permalink / raw) To: Chong Yidong; +Cc: rms, tzz, emacs-devel, elpa, Phil Hagelberg, monnier Chong Yidong writes: > > This is a problem as opposed to increasing numbers of packages that > > are available only to their authors and you can't put into Emacs? At > > least this way you'll have a contact address for authors. > > No, it's a valid concern. It's hard work hunting down papers and > integrating packages. Nobody said otherwise. I am painfully aware of the costs of both. > We must make sure a package system does not tempt us to just "dump > and forget". Too late. By refusing to handle registration of 3rd-party packages itself, Emacs has been "dumping and forgetting" for decades. That hasn't hindered growth of repositories of unassigned code in any way, it has just created a class system and contributed to integration problems for maintainers of packages like AUCTeX who do exercise due diligence ... but they arrived on the scene too late. The temptation is a *human* problem, not the system's, and refusing to list unassigned packages is just as much succumbing to the temptation as "forgetting" to chase papers for listed packages. At least if you list the packages, you have the goad of shame to go chasing the papers. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-09 5:40 ` Phil Hagelberg 2010-01-09 14:32 ` Richard Stallman @ 2010-01-12 20:06 ` Ted Zlatanov 2010-01-12 21:37 ` Phil Hagelberg 1 sibling, 1 reply; 129+ messages in thread From: Ted Zlatanov @ 2010-01-12 20:06 UTC (permalink / raw) To: emacs-devel On Fri, 08 Jan 2010 21:40:31 -0800 Phil Hagelberg <phil@hagelb.org> wrote: PH> The attached file implements the server-side maintenance, albeit in a PH> rough manner. It's limited to single-file packages kept in git PH> repositories, simply because that's what I'm personally familiar with, PH> though I don't think supporting other DVCSes would be tricky at all. PH> I welcome comments on this. Once the server-side maintenance tool is PH> ready, I want to add support for multiple sources to the client-side PH> package.el, and once that's done supporting multiple install locations PH> on disk (as Tom has explained) would be the next step. Technically it seems fine. I wouldn't mind working with it. The git calls could perhaps be abstracted to the VC equivalents, though I don't know the Emacs VC well at all. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-12 20:06 ` Ted Zlatanov @ 2010-01-12 21:37 ` Phil Hagelberg 0 siblings, 0 replies; 129+ messages in thread From: Phil Hagelberg @ 2010-01-12 21:37 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel Ted Zlatanov <tzz@lifelogs.com> writes: > On Fri, 08 Jan 2010 21:40:31 -0800 Phil Hagelberg <phil@hagelb.org> wrote: > > PH> The attached file implements the server-side maintenance, albeit in a > PH> rough manner. It's limited to single-file packages kept in git > PH> repositories, simply because that's what I'm personally familiar with, > PH> though I don't think supporting other DVCSes would be tricky at all. > > PH> I welcome comments on this. Once the server-side maintenance tool is > PH> ready, I want to add support for multiple sources to the client-side > PH> package.el, and once that's done supporting multiple install locations > PH> on disk (as Tom has explained) would be the next step. > > Technically it seems fine. I wouldn't mind working with it. The git > calls could perhaps be abstracted to the VC equivalents, though I don't > know the Emacs VC well at all. Unfortunately the abstracted VC functionality doesn't currently support creating new checkouts/cloning, which is why I didn't investigate that much further. (Plus I know of 20+ elisp libs in git and only 1 or 2 in bzr.) It may not be a common enough operation to justify adding to VC, or maybe it's a long-standing TODO that nobody's tackled yet. -Phil ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-04 19:51 ` Tom Tromey 2010-01-05 5:02 ` Phil Hagelberg @ 2010-01-05 15:50 ` Ted Zlatanov 2010-01-05 16:42 ` Stefan Monnier ` (3 more replies) 1 sibling, 4 replies; 129+ messages in thread From: Ted Zlatanov @ 2010-01-05 15:50 UTC (permalink / raw) To: emacs-devel On Mon, 04 Jan 2010 12:51:06 -0700 Tom Tromey <tromey@redhat.com> wrote: Tom> It also needs to be changed to be able to manage multiple install Tom> locations, if it is to be used to manage site-lisp. Good point, but do you mean multiple search locations for existing installs? I would expect a single install location, otherwise it gets complicated... Ted> I don't know about the other packages that come with Emacs, but Gnus Ted> could probably benefit from package.el-style installation (I don't speak Ted> for the Gnus project, though, so I can bring it up on the mailing list Ted> if necessary). A better setup process for Gnus would be really nice, Ted> though. The usual pre-install and post-install scripts you find in RPM Ted> or DEB would help. I suspect many other packages would benefit from a Ted> better setup process through package.el. Tom> If you want to try packaging it, I can explain what you need to do. Tom> It is usually quite easy. I think the pre-install and post-install steps are pretty important. Without them, packaging Gnus doesn't do much. I want the post-install to actually set up the user's Gnus configuration. This has been a very common complaint about Gnus. Installing it is the easy part, since it comes with Emacs. Can package.el support that? I can't tell if this is the "activate" or the "load" stage (are they states or state transitions? English can be so ambiguous...) or something new; also it seems like this is something external to Gnus, a function of the ELPA wrapper (although it may be bundled within Gnus) rather than something Gnus will always run for new users. This is the major question I have before I propose this packaging on the Gnus mailing list. I also want to know if you and Phil want to make Gnus your first Emacs-hosted package, or if there's going to be a ELPA clone of Gnus. I'd actually like both: the Emacs-hosted version is "Emacs-supported Gnus" while the ELPA versions are "bleeding-edge Gnus from CVS" and "latest Gnus release." The last one is usually but not always synchronized with the Emacs release; I'll need to ask the other Gnus developers what they think. At least two Gnus versions in package.el make sense in any case. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-05 15:50 ` Ted Zlatanov @ 2010-01-05 16:42 ` Stefan Monnier 2010-01-05 17:51 ` Installation, activation and setup of packages (e.g. Gnus) (was: Integrating package.el) Ted Zlatanov 2010-01-05 17:27 ` Installation, activation and setup of packages (e.g. Gnus) (was: Integrating package.el) Reiner Steib ` (2 subsequent siblings) 3 siblings, 1 reply; 129+ messages in thread From: Stefan Monnier @ 2010-01-05 16:42 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel Tom> It also needs to be changed to be able to manage multiple install Tom> locations, if it is to be used to manage site-lisp. > Good point, but do you mean multiple search locations for existing > installs? I would expect a single install location, otherwise it gets > complicated... You need at least 2 install locations: one for user-installed packages and one for admin-installed packages (the "site-lisp" mentioned above). > I think the pre-install and post-install steps are pretty important. > Without them, packaging Gnus doesn't do much. I want the post-install > to actually set up the user's Gnus configuration. This has been a very This is not part of an install, it's a separate step (a "configuration" step). Consider the case where the package is installed in site-lisp, where it needs to work for all users. "packaging Gnus" is only supposed to solve the problem of replacing a version of Gnus with another independently from the version of Emacs you use. > seems like this is something external to Gnus, a function of the ELPA > wrapper (although it may be bundled within Gnus) rather than something > Gnus will always run for new users. This is the major question I have > before I propose this packaging on the Gnus mailing list. I don't think it needs to be external to Gnus. You're basically asking for a Gnus wizard, I think. Stefan ^ permalink raw reply [flat|nested] 129+ messages in thread
* Installation, activation and setup of packages (e.g. Gnus) (was: Integrating package.el) 2010-01-05 16:42 ` Stefan Monnier @ 2010-01-05 17:51 ` Ted Zlatanov 2010-01-05 19:43 ` Installation, activation and setup of packages (e.g. Gnus) Stefan Monnier 0 siblings, 1 reply; 129+ messages in thread From: Ted Zlatanov @ 2010-01-05 17:51 UTC (permalink / raw) To: emacs-devel On Tue, 05 Jan 2010 11:42:47 -0500 Stefan Monnier <monnier@iro.umontreal.ca> wrote: >> seems like this is something external to Gnus, a function of the ELPA >> wrapper (although it may be bundled within Gnus) rather than something >> Gnus will always run for new users. This is the major question I have >> before I propose this packaging on the Gnus mailing list. SM> I don't think it needs to be external to Gnus. You're basically asking SM> for a Gnus wizard, I think. Yeah, "gnus/assistant.el" is capable enough to do it. It's been on my TODO list for a while to write some basic configuration assistants. On Tue, 05 Jan 2010 18:27:31 +0100 Reiner Steib <reinersteib+gmane@imap.cc> wrote: RS> On Tue, Jan 05 2010, Ted Zlatanov wrote: Ted> The usual pre-install and post-install scripts you find in RPM Ted> or DEB would help. RS> Those don't start per-user setup. The (missing) setup process (using RS> Gnus half-done assistant.el or anything else) is per-user: configuring RS> news server, mail sources, IMAP, SMTP. >> I think the pre-install and post-install steps are pretty important. >> Without them, packaging Gnus doesn't do much. I want the post-install >> to actually set up the user's Gnus configuration. This has been a very >> common complaint about Gnus. RS> I don't think the purpose of package.el is to do or start the user RS> setup. The Gnus assistant is supposed to be run when a *user* fires RS> up Gnus for the first time, which is after the package is already RS> installed and "activated" (by the *administrator*). I would oppose to RS> mix admistrative tasks (installation) with user setup. Well, this can be debated for a while. I think users expect an installed package to work (Gnus doesn't do much if just installed) and it's convenient to set it up when installed instead of later. System packages these days are commonly set up like that, e.g. Postfix on a Debian system asks several basic setup questions IIRC. OTOH it's often painful to have to answer setup questions when you're installing packages, especially when you don't want or don't have an interactive session. My proposal is: 1) at least show a message when installing Gnus that the first-time assistant can be run with commands X and Y. If the session is interactive, ask the user if he wants to do it now. This requires some package.el support. 2) make Gnus smarter about starting up without any configuration. The assistant should run automatically in this case. As a start, provide links to the documentation, but work on making the assistant interactive and capable of setting up news server, mail sources (IMAP or POP), an IMAP server, a Maildir, SMTP, etc. GMail should have a specific setup path since it's so popular. This is entirely on the Gnus side. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Installation, activation and setup of packages (e.g. Gnus) 2010-01-05 17:51 ` Installation, activation and setup of packages (e.g. Gnus) (was: Integrating package.el) Ted Zlatanov @ 2010-01-05 19:43 ` Stefan Monnier 2010-01-05 22:28 ` Gnus encouragement of GMail (was: Installation, activation and setup of packages (e.g. Gnus)) Ted Zlatanov 0 siblings, 1 reply; 129+ messages in thread From: Stefan Monnier @ 2010-01-05 19:43 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel > Well, this can be debated for a while. I don't think there's much to debate: when the admin installs a user package, it can't automatically configure it for all the users (especially not for the users that haven't yet been created). Sometimes, some part of the package depends on site data, so that part might be configured when the admin installs the package, but usually this is very limited (e.g. in the case of Gnus, the admin might set the DNS name of the local NNTP server [tho I'd sadly expect nowadays that for most admins there's simply no such local NNTP server to specify]). > I think users expect an installed package to work (Gnus doesn't do > much if just installed) and it's convenient to set it up when > installed instead of later. When I start `evolution', it doesn't "just work": it starts by running the wizard. How could my sysadmin know that I read my email from imap.iro.umontreal.ca rather than pop.teksavvy.com? > System packages these days are commonly set up like that, e.g. Postfix > on a Debian system asks several basic setup questions IIRC. The key word above is "System": Postfix is a *system* package, Gnus isn't. > 1) at least show a message when installing Gnus that the first-time > assistant can be run with commands X and Y. If the session is > interactive, ask the user if he wants to do it now. This requires some > package.el support. It might be a good idea to let the package management run a wizard when a user package is installed by a user (or when a system package is installed, tho there are very few Emacs system packages). > 2) make Gnus smarter about starting up without any configuration. The > assistant should run automatically in this case. Sounds fine. But that's a Gnus issue, unrelated to packaging. > GMail should have a specific setup path since it's so popular. I definitely do not want Emacs to encourage the use of GMail over any other service. Stefan ^ permalink raw reply [flat|nested] 129+ messages in thread
* Gnus encouragement of GMail (was: Installation, activation and setup of packages (e.g. Gnus)) 2010-01-05 19:43 ` Installation, activation and setup of packages (e.g. Gnus) Stefan Monnier @ 2010-01-05 22:28 ` Ted Zlatanov 0 siblings, 0 replies; 129+ messages in thread From: Ted Zlatanov @ 2010-01-05 22:28 UTC (permalink / raw) To: emacs-devel; +Cc: Ding Mailing List On Tue, 05 Jan 2010 14:43:33 -0500 Stefan Monnier <monnier@iro.umontreal.ca> wrote: > Ted Z wrote: >> GMail should have a specific setup path since it's so popular. SM> I definitely do not want Emacs to encourage the use of GMail over SM> any other service. Well, users are constantly pointed to the relevant EmacsWiki page for GMail support in Gnus. The settings required are not intuitive. So we either accept the support burden and frustrated users, or we give them the sensible settings as I suggested, or we point them to the EmacsWiki. I don't think the second and third options encourage GMail use in particular. They are just tweaks for those who use GMail IMAP. GMail is the only major IMAP provider to require well-known tweaks; when others arise we'll handle them. Similarly, there's code in Gnus to address Exchange IMAP issues; does that encourage Exchange use? I don't think so. IMHO it actually broadens the appeal of free software to support Exchange IMAP better. I guess a fourth option is to write gnus-gmail.el, host it externally, and make it clear that it's not endorsed by the FSF. But that's no better--how will the users know they need gnus-gmail.el? I'd rather include the support and make it clear it's not an endorsement. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Installation, activation and setup of packages (e.g. Gnus) (was: Integrating package.el) 2010-01-05 15:50 ` Ted Zlatanov 2010-01-05 16:42 ` Stefan Monnier @ 2010-01-05 17:27 ` Reiner Steib 2010-01-05 18:03 ` Integrating package.el Phil Hagelberg 2010-01-05 19:14 ` Tom Tromey 3 siblings, 0 replies; 129+ messages in thread From: Reiner Steib @ 2010-01-05 17:27 UTC (permalink / raw) To: emacs-devel, ding On Tue, Jan 05 2010, Ted Zlatanov wrote: > On Mon, 04 Jan 2010 12:51:06 -0700 Tom Tromey <tromey@redhat.com> wrote: > Ted> A better setup process for Gnus would be really nice, though. ACK > Ted> The usual pre-install and post-install scripts you find in RPM > Ted> or DEB would help. Those don't start per-user setup. The (missing) setup process (using Gnus half-done assistant.el or anything else) is per-user: configuring news server, mail sources, IMAP, SMTP. > Ted> I suspect many other packages would benefit from a better setup > Ted> process through package.el. > > Tom> If you want to try packaging it, I can explain what you need to do. > Tom> It is usually quite easy. > > I think the pre-install and post-install steps are pretty important. > Without them, packaging Gnus doesn't do much. I want the post-install > to actually set up the user's Gnus configuration. This has been a very > common complaint about Gnus. I don't think the purpose of package.el is to do or start the user setup. The Gnus assistant is supposed to be run when a *user* fires up Gnus for the first time, which is after the package is already installed and "activated" (by the *administrator*). I would oppose to mix admistrative tasks (installation) with user setup. > Installing it is the easy part, since it comes with Emacs. Can > package.el support that? I can't tell if this is the "activate" or > the "load" stage (are they states or state transitions? English can > be so ambiguous...) or something new; also it seems like this is > something external to Gnus, a function of the ELPA wrapper (although > it may be bundled within Gnus) rather than something Gnus will > always run for new users. This is the major question I have before > I propose this packaging on the Gnus mailing list. Bye, Reiner. -- ,,, (o o) ---ooO-(_)-Ooo--- | PGP key available | http://rsteib.home.pages.de/ ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-05 15:50 ` Ted Zlatanov 2010-01-05 16:42 ` Stefan Monnier 2010-01-05 17:27 ` Installation, activation and setup of packages (e.g. Gnus) (was: Integrating package.el) Reiner Steib @ 2010-01-05 18:03 ` Phil Hagelberg 2010-01-05 18:40 ` Ted Zlatanov 2010-01-05 19:14 ` Tom Tromey 3 siblings, 1 reply; 129+ messages in thread From: Phil Hagelberg @ 2010-01-05 18:03 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel Ted Zlatanov <tzz@lifelogs.com> writes: > I also want to know if you and Phil want to make Gnus your first > Emacs-hosted package, or if there's going to be a ELPA clone of Gnus. I'm actually somewhat intimidated by the thought of packaging gnus. I'd much rather start with supporting smaller packages first, but if someone more familiar with hacking gnus wants to start work on packaging it I would be happy to provide support. -Phil ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-05 18:03 ` Integrating package.el Phil Hagelberg @ 2010-01-05 18:40 ` Ted Zlatanov 0 siblings, 0 replies; 129+ messages in thread From: Ted Zlatanov @ 2010-01-05 18:40 UTC (permalink / raw) To: emacs-devel On Tue, 05 Jan 2010 10:03:18 -0800 Phil Hagelberg <phil@hagelb.org> wrote: PH> Ted Zlatanov <tzz@lifelogs.com> writes: >> I also want to know if you and Phil want to make Gnus your first >> Emacs-hosted package, or if there's going to be a ELPA clone of Gnus. PH> I'm actually somewhat intimidated by the thought of packaging gnus. I'd PH> much rather start with supporting smaller packages first, but if someone PH> more familiar with hacking gnus wants to start work on packaging it I PH> would be happy to provide support. I'll go to the Gnus mailing list and discuss this further, but at least for now let's assume Reiner or I will make the package. I don't mind doing the work, though I can't promise I'll get it done quickly. I still need to know about the 2+ versions of Gnus that I mentioned earlier--how do you want to deal with that? Also, how do you want to package an application that's already part of Emacs for the "Emacs-hosted Gnus" version? Thanks Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-05 15:50 ` Ted Zlatanov ` (2 preceding siblings ...) 2010-01-05 18:03 ` Integrating package.el Phil Hagelberg @ 2010-01-05 19:14 ` Tom Tromey 2010-01-05 20:04 ` Ted Zlatanov 3 siblings, 1 reply; 129+ messages in thread From: Tom Tromey @ 2010-01-05 19:14 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel >>>>> "Ted" == Ted Zlatanov <tzz@lifelogs.com> writes: Tom> It also needs to be changed to be able to manage multiple install Tom> locations, if it is to be used to manage site-lisp. Ted> Good point, but do you mean multiple search locations for existing Ted> installs? I would expect a single install location, otherwise it gets Ted> complicated... Basically we need to handle 3 install locations: the Emacs install tree, the global site-lisp, and the user's install location. These only need to be handled during the activation step. When the user installs a new package, it should always go to his personal install location. Right now package.el handles the Emacs install tree in a hacky way and ignores site-lisp entirely. Ted> This has been a very Ted> common complaint about Gnus. Installing it is the easy part, since it Ted> comes with Emacs. Can package.el support that? I can't tell if this is Ted> the "activate" or the "load" stage (are they states or state Ted> transitions? English can be so ambiguous...) or something new; also it Ted> seems like this is something external to Gnus, a function of the ELPA Ted> wrapper (although it may be bundled within Gnus) rather than something Ted> Gnus will always run for new users. This is the major question I have Ted> before I propose this packaging on the Gnus mailing list. This would be a new thing. I agree with the other posters who recommend that this be done in Gnus, not as something related to package.el. Ted> I also want to know if you and Phil want to make Gnus your first Ted> Emacs-hosted package, or if there's going to be a ELPA clone of Gnus. FWIW, ELPA already includes some packages that are also included in Emacs. I maintain the necessary metadata for this by hand (and, I'm afraid, not very well at the moment due to lack of time -- I think I am missing some updates). Ted> I'd actually like both: the Emacs-hosted version is "Emacs-supported Ted> Gnus" while the ELPA versions are "bleeding-edge Gnus from CVS" and Ted> "latest Gnus release." The last one is usually but not always Ted> synchronized with the Emacs release; I'll need to ask the other Gnus Ted> developers what they think. At least two Gnus versions in package.el Ted> make sense in any case. package.el doesn't support this at the moment. Thanks for bringing this up, though. I think it is pretty important to flush out all these use cases. I can think of a couple solutions to this problem. One would be to somehow let users select different package versions. Normally, though, users don't actually want this -- when a new version is released, ordinarily all the old ones are obsolete. Another solution would be to have two repositories, one for stable packages and one for experimental. This wouldn't require any changes to package.el. Tom ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-05 19:14 ` Tom Tromey @ 2010-01-05 20:04 ` Ted Zlatanov 2010-01-05 23:19 ` Tom Tromey 0 siblings, 1 reply; 129+ messages in thread From: Ted Zlatanov @ 2010-01-05 20:04 UTC (permalink / raw) To: emacs-devel On Tue, 05 Jan 2010 12:14:14 -0700 Tom Tromey <tromey@redhat.com> wrote: Tom> Right now package.el handles the Emacs install tree in a hacky way Tom> and ignores site-lisp entirely. OK, I hope you and Phil have some ideas. I don't know much about this. Tom> I agree with the other posters who recommend that [post-install Tom> configuration] be done in Gnus, not as something related to Tom> package.el. I would like to at least show a message or offer a prompt (answering 'y' launches the assistant), is that possible? If not that's OK. Ted> I'd actually like both: the Emacs-hosted version is "Emacs-supported Ted> Gnus" while the ELPA versions are "bleeding-edge Gnus from CVS" and Ted> "latest Gnus release." The last one is usually but not always Ted> synchronized with the Emacs release; I'll need to ask the other Gnus Ted> developers what they think. At least two Gnus versions in package.el Ted> make sense in any case. Tom> package.el doesn't support this at the moment. Tom> Thanks for bringing this up, though. I think it is pretty important to Tom> flush out all these use cases. Tom> I can think of a couple solutions to this problem. Tom> One would be to somehow let users select different package versions. Tom> Normally, though, users don't actually want this -- when a new version Tom> is released, ordinarily all the old ones are obsolete. This is probably too confusing for most users. Tom> Another solution would be to have two repositories, one for stable Tom> packages and one for experimental. This wouldn't require any changes to Tom> package.el. This works for me. We're talking now about the proposed FSF supported repository (part of Emacs), not about an ELPA "stable" repository, right? The bleeding-edge Gnus can live in the external ELPA archive that's currently live, and perhaps can move to the FSF unsupported repository we discussed earlier (you and Phil may want different names for the repositories). I think RMS, Stefan, Reiner, and you and Phil need to agree on the setup and where things will live. Jonas will probably have an opinion as well. I can do the mechanical work for packaging Gnus but can't make this kind of policy decision. Whatever the decision, Gnus is a good test case because of its complexity and baggage[1]. Ted [1] by "baggage" I mean that Gnus has a handbag, two purses, six wallets, a rolling suitcase, a laundry basket, and also stuffs things in its socks "just in case." :) ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-05 20:04 ` Ted Zlatanov @ 2010-01-05 23:19 ` Tom Tromey 2010-01-06 15:42 ` Ted Zlatanov 0 siblings, 1 reply; 129+ messages in thread From: Tom Tromey @ 2010-01-05 23:19 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel >>>>> "Ted" == Ted Zlatanov <tzz@lifelogs.com> writes: Ted> I would like to at least show a message or offer a prompt (answering 'y' Ted> launches the assistant), is that possible? If not that's OK. It is sort of possible. You can do anything you like in an autoload. These will be evaluated when the package is activated, which does happen when the package is installed. I think this would be pretty unfriendly to users, though. For example, what if the user installs several packages at once? Tom ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Integrating package.el 2010-01-05 23:19 ` Tom Tromey @ 2010-01-06 15:42 ` Ted Zlatanov 0 siblings, 0 replies; 129+ messages in thread From: Ted Zlatanov @ 2010-01-06 15:42 UTC (permalink / raw) To: emacs-devel On Tue, 05 Jan 2010 16:19:56 -0700 Tom Tromey <tromey@redhat.com> wrote: >>>>>> "Ted" == Ted Zlatanov <tzz@lifelogs.com> writes: Ted> I would like to at least show a message or offer a prompt (answering 'y' Ted> launches the assistant), is that possible? If not that's OK. Tom> It is sort of possible. Tom> You can do anything you like in an autoload. These will be evaluated Tom> when the package is activated, which does happen when the package is Tom> installed. Tom> I think this would be pretty unfriendly to users, though. For example, Tom> what if the user installs several packages at once? OK, if it doesn't fit with the package.el flow, let's drop it. Stefan and Reiner are also not crazy about the idea so it's probably a bad one :) I'll make the assistant run on the first Gnus startup. There's several other issues I raised, but at least this one can be safely ignored. Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: unsupported packages area in the Emacs repo 2009-12-29 21:36 ` Tom Tromey 2009-12-30 16:15 ` Ted Zlatanov @ 2009-12-30 17:16 ` Jonas Bernoulli 2010-01-01 19:21 ` Tom Tromey 1 sibling, 1 reply; 129+ messages in thread From: Jonas Bernoulli @ 2009-12-30 17:16 UTC (permalink / raw) To: emacs-devel This did not go to the list in the first try (only Tom). So again: On Tue, Dec 29, 2009 at 22:36, Tom Tromey <elpa@tromey.com> wrote: >>>>>> "Ted" == Ted Zlatanov <tzz@lifelogs.com> writes: > > Ted> I hope Tom Tromey and Jonas Bernoulli are interested in participating > Ted> too, and that the Emacs maintainers are willing to give this a try. > Ted> FWIW I will help any way I can and I think it would really improve the > Ted> Emacs user experience to install unsupported packages easily. > > I am interested but I don't have time to work on it. I am also interested and will have time to work on it starting sometime next month. > Recently, Phil Hagelberg <technomancy@gmail.com> has been looking into > integrating package.el into Emacs. I don't know how much progress he > has made. Phil has contacted my privately uttered the worry that I might be duplicating efforts. As I have explained to him this is not my intention and I plan to work with anyone who is interested in the general idea of "package managment" for Emacs, which of course could be implemented in many different ways. I have given this a lot of thought some of which are mentioned on the mirrors homepage [1]. Phil indicated that he agrees with many of them at least in spirit. He also said that he has found a few like minded people on #elpa. He also mentioned that the maintainers have agreed to (possibly) include `package.el' in the 24 (I think [2] is the relevant thread). As this idea seams to gain some momentum I think the best way to proceed from here is this: A few dedicated people - Phil, me, hopefully Tom and others who have shown support and interest in the past (and of course those that haven't in the past but do now) - work together more closely to create a working implementation. (see below, and elsewhere in this thread). Then in time for the 24 release it has to be decided whether things are ready and if not we should admit it and not include it. There is no need to hurry and add anything prematurely. > There are a couple problems to be solved in the Emacs source tree, and > then a more sane server side must be written. The latter may just be > some version control system plus some post-commit hooks to regenerate > the metadata. I and Phil also think that the use of a _distributed_ version control system is the way to go. About the metadata: I have created `elx.el' [3] an extension to `lisp-mnt.el' which has more features (can extract additional data) and can deal with library header that don't fully comply with the header conventions (as well as aspects that should be defined there but haven't). I have written to this list before [4] about `elx.el' and Stefan has agreed that some of it should probably be merged into `lisp-mnt.el'. I have since made quite a few extensions and others will follow this is why I did not prepare any patches for `lisp-mnt.el' yet. The current implementation is able to generate what I call "epkg" a sexp like this: (:summary "Extract information from Emacs Lisp libraries" :created "20081202" :updated "20091208" :license "GPL-3" :authors (("Jonas Bernoulli" . "jonas@bernoul.li")) :maintainer ("Jonas Bernoulli" . "jonas@bernoul.li") :provided (elx) :required ((("dconv" dconv) ("emacs" cl lisp-mnt) ("vcomp" vcomp))) :keywords ("libraries") :homepage "https://github.com/tarsius/elx") [Tom: I also have some patches for `package.el' and will send them to you once I find the time to work on it. I would have contacted you some time in January but since this discussion is talking place now: Hi! I hope we will work together well!] I will comment on some other suggestions at the appropriate places in this thread. (In particular about my thought on how the repository(ies) should be implemented, what additions to package.el are necessary, and some more on the use of dvcs). And you might also want to read [1] and the relevant pages on ELPA [5]. -- Jonas [1] http://www.emacsmirror.org [2] http://thread.gmane.org/gmane.emacs.devel/101927 [3] http://github.com/tarsius/elx [4] http://thread.gmane.org/gmane.emacs.devel/117127 [5] http://tromey.com/elpa/ ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: unsupported packages area in the Emacs repo 2009-12-30 17:16 ` unsupported packages area in the Emacs repo Jonas Bernoulli @ 2010-01-01 19:21 ` Tom Tromey 0 siblings, 0 replies; 129+ messages in thread From: Tom Tromey @ 2010-01-01 19:21 UTC (permalink / raw) To: Jonas Bernoulli; +Cc: emacs-devel >>>>> "Jonas" == Jonas Bernoulli <jonas@emacsmirror.org> writes: Jonas> The current implementation is able to generate what I call "epkg" Jonas> a sexp like this: Jonas> :provided (elx) Jonas> :required ((("dconv" dconv) Jonas> ("emacs" cl lisp-mnt) Jonas> ("vcomp" vcomp))) You really need versions, not just package names. It is common for a package to require a relatively new version of some other package. package.el already does this. What it does is sufficient for many purposes, but still not completely ideal... there have been cases of packages being obsoleted by some other package, and package.el has no notion of this. Jonas> [Tom: I also have some patches for `package.el' and will send Jonas> them to you once I find the time to work on it. I would have Jonas> contacted you some time in January but since this discussion is Jonas> talking place now: Hi! I hope we will work together well!] Sure thing. Tom ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-28 18:55 ` Lennart Borgman 2009-12-29 1:32 ` Stephen J. Turnbull 2009-12-29 2:45 ` joakim @ 2009-12-29 5:22 ` Richard Stallman 2009-12-29 5:29 ` Lennart Borgman 2 siblings, 1 reply; 129+ messages in thread From: Richard Stallman @ 2009-12-29 5:22 UTC (permalink / raw) To: Lennart Borgman; +Cc: emacs-devel - You have group of related elisp files in a common place on the web. - You download one of them, but it turns out that it does `require' or autoload that supposes you have downloaded the other files too. I understand that is the case you're talking about. It is wrong to cut the user out of the process of deciding what software to install. In a situation like that it is possible to set up for autoloading things by downloading them from the web without compromising security This issue is not about security in the usual sense. It is about preserving the user's control of his computing. This is a fundamental goal for the GNU Project Please see http://www.gnu.org/philosophy/javascript-trap.html. That issue is not related to Emacs, but it is basically the same issue. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-29 5:22 ` Autoload from a web page? Richard Stallman @ 2009-12-29 5:29 ` Lennart Borgman 2010-01-02 15:45 ` Richard Stallman 0 siblings, 1 reply; 129+ messages in thread From: Lennart Borgman @ 2009-12-29 5:29 UTC (permalink / raw) To: rms; +Cc: emacs-devel On Tue, Dec 29, 2009 at 6:22 AM, Richard Stallman <rms@gnu.org> wrote: > - You have group of related elisp files in a common place on the web. > - You download one of them, but it turns out that it does `require' or > autoload that supposes you have downloaded the other files too. > > I understand that is the case you're talking about. > It is wrong to cut the user out of the process of deciding what > software to install. But in this situation he is not cut out of the decision. At least that is not my intention. In this scenario the user wants to download a package, but he may not want all of it at once. It is just like autoloading locally, but with the difference that the files are loaded from the web (in a well defined manner). > In a situation like that it is possible to set up for autoloading > things by downloading them from the web without compromising security > > This issue is not about security in the usual sense. > It is about preserving the user's control of his computing. > This is a fundamental goal for the GNU Project Yes, I understand that and I read about the problem with javascript. The same problems can not arise here since the user will be in control of where to download files from. Unlike the situation with javascript a single site (or a list of well defined sites) will be where the download comes from. > Please see http://www.gnu.org/philosophy/javascript-trap.html. That > issue is not related to Emacs, but it is basically the same issue. > > ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-29 5:29 ` Lennart Borgman @ 2010-01-02 15:45 ` Richard Stallman 2010-01-04 2:26 ` Lennart Borgman 0 siblings, 1 reply; 129+ messages in thread From: Richard Stallman @ 2010-01-02 15:45 UTC (permalink / raw) To: Lennart Borgman; +Cc: emacs-devel In this scenario the user wants to download a package, but he may not want all of it at once. It is just like autoloading locally, but with the difference that the files are loaded from the web (in a well defined manner). This difference is precisely the problem. Autoloading from files on disk gives you the chance to edit those files. Autoloading from a server means you can't do so. Yes, I understand that and I read about the problem with javascript. The same problems can not arise here since the user will be in control of where to download files from. Unlike the situation with javascript a single site (or a list of well defined sites) will be where the download comes from. I see your argument, that it is the user who decides to load from those files. But I'm not convinced this makes it ok, because it would be easy for programs to do this without the user's knowing about it. If we want to be safe, we need to tell users to watch out for this as a danger sign. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2010-01-02 15:45 ` Richard Stallman @ 2010-01-04 2:26 ` Lennart Borgman 2010-01-04 16:23 ` Richard Stallman 0 siblings, 1 reply; 129+ messages in thread From: Lennart Borgman @ 2010-01-04 2:26 UTC (permalink / raw) To: rms; +Cc: emacs-devel On Sat, Jan 2, 2010 at 4:45 PM, Richard Stallman <rms@gnu.org> wrote: > In this scenario the user wants to download a package, but he may not > want all of it at once. It is just like autoloading locally, but with > the difference that the files are loaded from the web (in a well > defined manner). > > This difference is precisely the problem. > Autoloading from files on disk gives you the chance > to edit those files. > Autoloading from a server means you can't do so. I have added an optional pause in the download where the user may check the file before it is byte compiled and used. > Yes, I understand that and I read about the problem with javascript. > The same problems can not arise here since the user will be in control > of where to download files from. Unlike the situation with javascript > a single site (or a list of well defined sites) will be where the > download comes from. > > I see your argument, that it is the user who decides to load from > those files. But I'm not convinced this makes it ok, because it would > be easy for programs to do this without the user's knowing about it. > If we want to be safe, we need to tell users to watch out for this > as a danger sign. Yes, of course. The user must trust the sources. And be able to have a look at them before using them. I have implemented this incremental installing now for nXhtml. The sources are in Launchpad so the user can have a look at them before downloading. And during the download is another chance. As I said before there is no contract, no API, for how two access files from Launchpad this way. A bit unfortunate, but it is still possible to do use the web interface this way. To make it more reliable would not take much (but requires cooperation). Something like ELPA might stand for the necessary API (beside cooperation, version dependence etc). Some people argued that downloading files as you need them is not useful. I think it can be. If something like this was used for ELPA then different people could depend on each others files. Those who provides the elisp files would not have to tell others to download this and that. It would be downloaded automatically. And the sources could be anywhere (as long as they are trusted). But as RMS pointed out this has security implications so it could only be used for reviewed and trusted files/sources. So this would be (IMO) a special groups of files in ELPA. If anyone wants to test then please go to http://www.emacswiki.org/cgi-bin/wiki/NxhtmlMode and follow the instructions for web-vcs.el there. If you do you could for example try commands like M-x resize-windows open and html file M-x n-back-game or anything from the nXhtml menu (do M-x nxhtml-minor-mode if it is not shown). And please tell me who it works and how you want it to work, it is a bit beta still ... ;-) ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2010-01-04 2:26 ` Lennart Borgman @ 2010-01-04 16:23 ` Richard Stallman 0 siblings, 0 replies; 129+ messages in thread From: Richard Stallman @ 2010-01-04 16:23 UTC (permalink / raw) To: Lennart Borgman; +Cc: emacs-devel I have added an optional pause in the download where the user may check the file before it is byte compiled and used. That is rather vague, so I don't know exactly what you mean. Judging from what you've said, a "chance to check the file" is insufficient to make it easy for users to install and run edited versions. So this autoloading is still harmful. Some people argued that downloading files as you need them is not useful. I think it can be. If something like this was used for ELPA The idea of an ELPA is just theoretical at this point, but if we have one, "autoloading from the net" won't be allowed in it unless you convince me to approve it. You won't convince me unless you show me you understand and care about the issue I am concerned about. then different people could depend on each others files. If that is desirable technically (which is far from clear; it could be unmodular), there are other ways to do it. Packages in Debian depend on other packages and they don't autoload from the net. But even if it turned out that autoloading gave some advantage, that isn't a major factor in a decision this important. A minor convenience is insignificant compared with the community harm that this could do. You are trying to rush us into a major policy change which is potentially dangerous. We will not be rushed. Please slow down! Please take this change out of your distribution sources, pause for a week, and then post a clear explanation of what you are proposing now, so that I can have a chance to see what its consequences could be. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-26 2:55 Autoload from a web page? Lennart Borgman 2009-12-27 3:13 ` Richard Stallman @ 2009-12-29 17:05 ` Stefan Monnier 2009-12-30 16:30 ` Ted Zlatanov 1 sibling, 1 reply; 129+ messages in thread From: Stefan Monnier @ 2009-12-29 17:05 UTC (permalink / raw) To: Lennart Borgman; +Cc: Emacs-Devel devel > Would it be possible to setup a function to download an elisp file > from a web page when called and then evaluate that file and call > itself again (with the old parameters), now with the new definition > from the web page? (url-handler-mode 1) (autoload 'foo-function "http://toto.bar/baz/foo.el") > Would it be possible to redefine `require' during this eval so that it > downloads required files from the same web site (if they are missing)? I think that using `autoload' this would only work if that URL is in your global load-path (probably not something you want) or if your remote "foo.el" is careful to temporarily add its (file-name-directory load-file-name) to the load-path (c.f. thread about loading files relative to the current file). Otherwise you might be able to do something like (defun foo-function (&rest args) (let ((load-path (append load-path '("http://toto.bar/baz/")))) (load "foo.el") ;; Here you might additionally want to check that foo-function ;; was redefined. (apply 'foo-function args))) Do it at your own risk. Using SSH (via Tramp) rather than HTTP (via url-handler-mode) might be preferable. Stefan PS: Of course this is completely untested and may bump into lacking features of url-handler-mode. ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-29 17:05 ` Stefan Monnier @ 2009-12-30 16:30 ` Ted Zlatanov 2009-12-30 16:58 ` Stefan Monnier 0 siblings, 1 reply; 129+ messages in thread From: Ted Zlatanov @ 2009-12-30 16:30 UTC (permalink / raw) To: emacs-devel On Tue, 29 Dec 2009 15:05:28 -0200 Stefan Monnier <monnier@IRO.UMontreal.CA> wrote: >> Would it be possible to setup a function to download an elisp file >> from a web page when called and then evaluate that file and call >> itself again (with the old parameters), now with the new definition >> from the web page? SM> (url-handler-mode 1) SM> (autoload 'foo-function "http://toto.bar/baz/foo.el") There are so many security risks with this, and better ways to manage packages have already been devised! Ubuntu, for instance, signs the packages and there's a whole key infrastructure set up in the distro. Downloading and evaluating a file is the easy part, technically. Listing Lisp files on a web page requires no security. Managing software, though, is hard. For instance: - your worst enemy is trying to break/infect/DDOS your distribution, what are your defenses? What if your webserver dies? What if your domain name expires or gets hijacked? - how do you issue an emergency patch and notify your users? - how do you back out of a change? How do you version releases? - how do you deal with circular dependencies? - how do you minimize bandwidth, disk, and CPU costs? - who will manage the repository when you can't? - who will support the users when they have the inevitable problems? Ted ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-30 16:30 ` Ted Zlatanov @ 2009-12-30 16:58 ` Stefan Monnier 2009-12-30 17:08 ` Lennart Borgman 0 siblings, 1 reply; 129+ messages in thread From: Stefan Monnier @ 2009-12-30 16:58 UTC (permalink / raw) To: Ted Zlatanov; +Cc: emacs-devel SM> (url-handler-mode 1) SM> (autoload 'foo-function "http://toto.bar/baz/foo.el") > There are so many security risks with this, and better ways to manage 100% agreement. The above is just an example of how to shoot oneself in the foot, as requested. Stefan ^ permalink raw reply [flat|nested] 129+ messages in thread
* Re: Autoload from a web page? 2009-12-30 16:58 ` Stefan Monnier @ 2009-12-30 17:08 ` Lennart Borgman 0 siblings, 0 replies; 129+ messages in thread From: Lennart Borgman @ 2009-12-30 17:08 UTC (permalink / raw) To: Stefan Monnier; +Cc: Ted Zlatanov, emacs-devel On Wed, Dec 30, 2009 at 5:58 PM, Stefan Monnier <monnier@iro.umontreal.ca> wrote: > SM> (url-handler-mode 1) > SM> (autoload 'foo-function "http://toto.bar/baz/foo.el") >> There are so many security risks with this, and better ways to manage > > 100% agreement. The above is just an example of how to shoot oneself in > the foot, as requested. ;-) I did not request that, but the hint actually made me thought about other ways to structure my code (which was how I interpreted the intention of your reply) so it was useful. ^ permalink raw reply [flat|nested] 129+ messages in thread
end of thread, other threads:[~2010-03-08 17:53 UTC | newest] Thread overview: 129+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-12-26 2:55 Autoload from a web page? Lennart Borgman 2009-12-27 3:13 ` Richard Stallman 2009-12-27 3:24 ` Lennart Borgman 2009-12-28 18:48 ` Richard Stallman 2009-12-28 18:55 ` Lennart Borgman 2009-12-29 1:32 ` Stephen J. Turnbull 2009-12-29 1:39 ` Lennart Borgman 2009-12-29 2:45 ` joakim 2009-12-29 2:54 ` Lennart Borgman 2009-12-29 4:52 ` Tom Tromey 2009-12-29 22:25 ` Lennart Borgman 2009-12-30 6:13 ` Richard Stallman 2009-12-30 18:06 ` Jonas Bernoulli 2009-12-30 18:30 ` Stefan Monnier 2009-12-30 19:10 ` Jonas Bernoulli 2010-01-01 0:40 ` Phil Hagelberg 2010-01-01 19:27 ` Tom Tromey 2010-01-01 19:26 ` Tom Tromey 2010-01-04 18:12 ` Ted Zlatanov 2009-12-29 15:11 ` Ted Zlatanov 2009-12-29 18:46 ` Richard Stallman 2009-12-29 21:14 ` unsupported packages area in the Emacs repo (was: Autoload from a web page?) Ted Zlatanov 2009-12-29 21:21 ` Deniz Dogan 2009-12-29 21:38 ` unsupported packages area in the Emacs repo Ted Zlatanov 2009-12-29 21:36 ` Tom Tromey 2009-12-30 16:15 ` Ted Zlatanov 2009-12-31 5:32 ` Phil Hagelberg 2010-01-01 19:18 ` Tom Tromey 2010-01-03 5:38 ` Integrating package.el (was Re: unsupported packages area in the Emacs repo) Phil Hagelberg 2010-01-04 17:55 ` Integrating package.el Ted Zlatanov 2010-01-04 19:51 ` Tom Tromey 2010-01-05 5:02 ` Phil Hagelberg 2010-01-05 5:37 ` Lennart Borgman 2010-01-05 15:06 ` Stefan Monnier 2010-01-05 16:03 ` Ted Zlatanov 2010-01-05 16:47 ` Stefan Monnier 2010-01-05 20:18 ` Ted Zlatanov 2010-01-05 23:50 ` Jonas Bernoulli 2010-01-06 20:45 ` Richard Stallman 2010-01-06 21:49 ` Ted Zlatanov 2010-01-09 5:40 ` Phil Hagelberg 2010-01-09 14:32 ` Richard Stallman 2010-01-09 17:47 ` Phil Hagelberg 2010-01-10 10:41 ` Richard Stallman 2010-01-10 11:33 ` Stephen J. Turnbull 2010-01-10 14:04 ` Chong Yidong 2010-01-10 16:00 ` joakim 2010-01-10 20:43 ` Phil Hagelberg 2010-01-10 20:07 ` Phil Hagelberg 2010-01-10 21:24 ` Stefan Monnier 2010-01-10 23:02 ` Phil Hagelberg 2010-01-11 3:28 ` Stefan Monnier 2010-01-14 3:12 ` Phil Hagelberg 2010-01-19 11:40 ` Phil Hagelberg 2010-01-19 17:17 ` Dan Nicolaescu 2010-02-22 19:22 ` Ted Zlatanov 2010-02-22 20:36 ` joakim 2010-02-23 22:25 ` Stefan Monnier 2010-02-24 21:20 ` Ted Zlatanov 2010-02-25 20:05 ` Stefan Monnier 2010-03-01 14:59 ` Ted Zlatanov 2010-03-01 16:32 ` Jonas Bernoulli 2010-03-01 17:14 ` Ted Zlatanov 2010-03-01 20:59 ` Jonas Bernoulli 2010-03-02 17:39 ` Richard Stallman 2010-03-02 18:46 ` Ted Zlatanov 2010-03-01 21:19 ` Stefan Monnier 2010-03-02 13:34 ` Ted Zlatanov 2010-03-01 21:37 ` Jonas Bernoulli 2010-03-01 22:18 ` Štěpán Němec 2010-03-01 22:30 ` Štěpán Němec 2010-03-01 23:00 ` Jonas Bernoulli 2010-03-02 13:38 ` Ted Zlatanov 2010-03-03 20:13 ` Tom Tromey 2010-03-04 5:42 ` Phil Hagelberg 2010-03-02 19:03 ` Davis Herring 2010-02-25 22:56 ` David De La Harpe Golden 2010-03-04 5:39 ` Phil Hagelberg 2010-03-04 7:29 ` Stephen J. Turnbull 2010-03-04 18:27 ` Stefan Monnier 2010-03-05 4:41 ` Stephen J. Turnbull 2010-03-04 13:54 ` Ted Zlatanov 2010-03-04 18:29 ` Stefan Monnier 2010-03-04 18:33 ` Tom Tromey 2010-03-07 22:58 ` Phil Hagelberg 2010-03-04 20:39 ` Ted Zlatanov 2010-03-07 23:16 ` Phil Hagelberg 2010-03-08 3:17 ` Tom Tromey 2010-03-08 14:55 ` Ted Zlatanov 2010-03-08 17:01 ` Stefan Monnier 2010-03-08 17:53 ` Ted Zlatanov 2010-03-04 18:30 ` Tom Tromey 2010-03-05 0:22 ` Stefan Monnier 2010-03-01 14:43 ` Ted Zlatanov 2010-03-01 16:26 ` Jonas Bernoulli 2010-03-01 17:28 ` Ted Zlatanov 2010-03-01 18:06 ` Tom Tromey 2010-03-01 21:22 ` Jonas Bernoulli 2010-03-03 20:15 ` Tom Tromey 2010-03-03 20:22 ` Ted Zlatanov 2010-03-03 22:21 ` Tom Tromey 2010-03-02 13:31 ` Ted Zlatanov 2010-03-01 21:09 ` Jonas Bernoulli 2010-01-11 3:09 ` Stephen J. Turnbull 2010-01-12 20:06 ` Ted Zlatanov 2010-01-12 21:37 ` Phil Hagelberg 2010-01-05 15:50 ` Ted Zlatanov 2010-01-05 16:42 ` Stefan Monnier 2010-01-05 17:51 ` Installation, activation and setup of packages (e.g. Gnus) (was: Integrating package.el) Ted Zlatanov 2010-01-05 19:43 ` Installation, activation and setup of packages (e.g. Gnus) Stefan Monnier 2010-01-05 22:28 ` Gnus encouragement of GMail (was: Installation, activation and setup of packages (e.g. Gnus)) Ted Zlatanov 2010-01-05 17:27 ` Installation, activation and setup of packages (e.g. Gnus) (was: Integrating package.el) Reiner Steib 2010-01-05 18:03 ` Integrating package.el Phil Hagelberg 2010-01-05 18:40 ` Ted Zlatanov 2010-01-05 19:14 ` Tom Tromey 2010-01-05 20:04 ` Ted Zlatanov 2010-01-05 23:19 ` Tom Tromey 2010-01-06 15:42 ` Ted Zlatanov 2009-12-30 17:16 ` unsupported packages area in the Emacs repo Jonas Bernoulli 2010-01-01 19:21 ` Tom Tromey 2009-12-29 5:22 ` Autoload from a web page? Richard Stallman 2009-12-29 5:29 ` Lennart Borgman 2010-01-02 15:45 ` Richard Stallman 2010-01-04 2:26 ` Lennart Borgman 2010-01-04 16:23 ` Richard Stallman 2009-12-29 17:05 ` Stefan Monnier 2009-12-30 16:30 ` Ted Zlatanov 2009-12-30 16:58 ` Stefan Monnier 2009-12-30 17:08 ` Lennart Borgman
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).