Mats Lidell writes:
I have implemented the basic functionality of the GNU Emacs function
recenter-top-bottom. That function is the default keybinding for C-l
in GNU Emacs.
Great! I'm a non-fan of the function (I agree with I think it was
Drew Adams), but since it's now a central feature of GNU, it's very
good to have. People will expect it.
I'm not going so far as suggesting we change our default
keybinding
but think recenter-top-bottom is a neat function to have. The question
is where to place it? (if you don't veto it out ;-)
The right place to put it is in a user theme. We just don't really
have them yet. ;-)
In the meantime, why not put it on C-l? It's mostly backward
compatible, no? Of course there will be howls of protest, but mostly
from people who know how to rebind keys. If they don't die down in a
few months, we can switch back.
My idea about user themes is that each version's UI changes would be
added as a (cascading, like CSS) user theme, overlaid over the
previous version's defaults (as amended by experience). Users who
really dislike the whole new look can just disable the whole
'ui-improvements'[sic] theme; users who aren't quite sure what it is
that they don't like know where to look for documentation.
By "as amended by experience" I mean that the default would be to move
the previous version's ui-improvements theme into the core, but if
people really didn't like them, we could either back them out
completely, put the right answer into core if that's really clear now,
or try a "better idea" we're not 100% sure of in the new release's
ui-improvements theme.
You see I also stumbled on the file reposition.el that we have in
the
xemacs-devel package and realized that small functions, typically GUI
related, might be better placed in a package than in the core. What do
you think?
That's the program, yes.
However, this is a delicate matter. The basic idea is a good one, and
what Steve B and I suppose Mike S had in mind in the first place. In
fact, my long-run dream is to turn XEmacs into Xet, the "XEmacs
editing toolkit, and what we now think of as "core XEmacs" into a
sample implementation of an editor on top of Xet. (Steve B I can
testify to, we talked a lot about this. Mike can speak for himself,
but if as the editor of R6RS he put "call/cc" into the "base library"
I think he might agree. ;-)
The advantages to putting stuff in packages are
(1) Packages can have a different development cycle from core,
appropriate to their levels of maturity.
(2) Users can pick and choose from various implementations of a given
feature.
(3) People interested in a given implementation of a feature can focus
on it more closely.
(4) A package system including a public repository of packages may
make refactoring easier, so that high level packages can share
implementations maintained in low-level packages.
The disadvantages of packages are
(1) Putting things in packages constrains API changes in both core and
the packages. Especially if various packages and core have
different maintainer teams.
(2) Users can get confused by, or unable to find, multiple
implementations of features maintained outside of core.
(3) People working in a separate team will tend to focus on that, to
some extent excluding work on core and other packages they have
relevant expertise for.
(4) Coordinating among interdependent packages will increase
communication cost and decrease coding fun.
In case it isn't already clear, each advantage of packages brings with
it a corresponding disadvantage. Over the past two decades, it has
become clear to me that the balance to be chosen is a very personal
matter. In fact, most developers I've worked with don't have a
systematic preference. Rather, if they're working on something that
seems to require changes in core APIs, they want it in core. If
they're happy with the core APIs, they want to be left alone to do
their work without interference from well-meaning passers-by (ie, they
want to be factored out, and a package will do the trick).
My take on all this is that Mercurial is a usable VCS, and as the
Pythonistas say (in a different context) "it's easier to ask for
forgiveness than permission". We're a pretty small group, and even
though some of us (at least me ;-) can be fractious about process, I
don't think there's anybody who is opposed in principle to
experimentation on trunk. (The only major exception I can think of is
that everybody else hurts when Ben lands a megapatch, but he hasn't
done that since we changed VCSes from CVS to hg. I don't expect it to
do more than reduce the pain; we won't know how much until/unless Ben
comes back.)
I would like to do something about allowing users to more easily
rollback UI changes they don't like, but we don't have the
infrastructure for that yet.
There was some work done on themes, but nobody really carried through
on them, unfortunately.
Steve
_______________________________________________
XEmacs-Beta mailing list
XEmacs-Beta(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-beta