Stefan Monnier writes:
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).