Re: Cleaning up the EIEIO namespace
David Engster <[email protected]> Tue, 19 Feb 2013 20:49:02 +0100
| Newsgroups | gmane.emacs.eieio,gmane.emacs.devel |
|---|---|
| Message-ID | <[email protected]> |
Stefan Monnier writes: >> I meant a compat package in CEDET upstream, so that it can run on older >> Emacsen if we stop shipping our own EIEIO version. As long as we're >> obsolete-aliasing the old names, I don't see why we would need a compat >> package in Emacs? > > Only if we can hope to get rid of those aliases soon, because we'd > rather not have those compatibility aliases use up the namespace even > when all the packages in use have been updated to use the "clean" names. Well, you've started aliasing `class-name' in your patch, so I thought that was the plan. > For the CL package we solved this problem by leaving the "cl.el" package > as a "compatibility package" only required by the packages that haven't > been updated to use the new names. CL was so widely used that it will > take a *long* time to get rid of all uses of the old names, whereas > EIEIO's use is not as pervasive, so we don't necessarily have to do the > same for it. > This said, maybe it would make sense to move "eieio.el" to "cl-eieio.el" > (with clean names, autoloaded from cl-lib) and then make eieio.el > into a simple compatibility package full of aliases. What to do with the other files like eieio-base then? We cannot rename it to cl-eieio-base.el because of name clashes, but it also provides part of the public, CLOS-like functions. To summarize the options so far: 1) Prefix everything with eieio- and be done with it. Create obsolete aliases for the old names and get rid of them "soon" (Emacs 25?). Alternatively, create an eieio-compat package with aliases for the old names. 2) Prefix everything with eieio- and create cl- aliases for the CLOS-like functionality. Those aliases may be defined in 2a) the eieio* files itself, or 2b) in a separate cl-whatever.el file. As in 1), define obsolete aliases for the old names or use a compat package. 3) Rename eieio to cl-eieio with clean names (i.e., eieio- and cl-prefixes), autoloaded from cl-lib, and make eieio.el a simple compatibility package full of aliases. I'm currently pretty much tied on "2b)+compat package" and 3). -David ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_feb