emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Making Emacs more friendly to newcomers


From: Sébastien Gendre
Subject: Re: Making Emacs more friendly to newcomers
Date: Tue, 21 Apr 2020 14:43:47 +0200
User-agent: Evolution 3.36.1 (3.36.1-1.fc32)

Having a Vanilla-mode are maybe wore difficult than it seems.

So, let's forget Vanilla-mode and see another solution who can be more
feasible.

Maybe we can take inspiration from the work of Spacemacs and Doom
Emacs: Offer an official pre-configuration of Emacs, on the side of
Emacs itself. This pre-configuration will be more focused on new users
and
new features when Emacs itself would be more focused on stability.

Here is, in more detail, what I have in mind.

On one side, continue to develop Emacs as today :
- Keep same defaults
- If a new features is proposed, check if it break any compatibility
  or defaults
- If no, include it in Emacs
- If yes, try to modify this feature to not break any compatibility or
  defaults and if its a success, include this feature in Emacs
- If it's not possible, include the feature but deactivate it by
  default or make a package on ELPA
  
  
I don't think this side is different from what development on Emacs is
today. We can call this side Emacs vanilla, or Emacs core, or Emacs
base. Anything that reflect that this is the common base for everyone.


On another side, we can create a pre-configuration (like what
Spacemacs or Doom Emacs do) :
- All this pre-configuration is a set of files to be put inside the
  .emacs.d to start using it (like Spacemacs)
- Main goal is to have a pre-configuration that provide what is
  commonly expected from a modern text editor [1], out of the box
- Easy to use for the common tasks
- Enable some features that are not enabled by default
- Modify some defaults behaviours of Emacs to reflect more what new
  users search in a text editor
- Can include some packages from ELPA (if no legal or licence issue)
- This pre-configuration can be done by a dedicated team who
  collaborate with who work directly on Emacs
- The structure of this pre-configuration need to be made to not
  conflict with user personal configuration (ex: avoid to put anything
  in the init.el, use separate sub-directory inside .emacs.d, etc)
  
  
The actual Emacs show that the first side is possible. And projects
like Spacemacs and Doom Emacs show that the second side is also
possible. So I think this solution is feasible. And a direct
collaboration of the both side can make the process more easy.

A remaining problem is: How provide the pre-configuration easily and
out of the box for new users, without breaking long time Emacs users
configuration?

A possibility would be:
- When Emacs start, it check if a configuration already exist on the
  user directory (~/.emacs.d or ~/.emacs)
- If yes, Emacs start
- If no, Emacs restore the pre-configuration inside ~/.emacs.d then
  start

With this, new user can use the "modern, shiny, OOTB Emacs", out of
the box, by simply download and run it. And the long time user can
have a stable Emacs who don't break their configuration. For someone
who want to use Spacemacs, simply extract it as ~/.emacs.d before
start Emacs. And for someone who want to start Emacs without a
pre-configuration, simply create an empty directory for ~/.emacs.d.

Of course, the pre-configuration can be updated automatically with
Emacs. As the files of this pre-configuration are separated from user
specific configuration.

Open questions remain:
- Does the pre-configuration release cycle are synchronised with Emacs
or
  completely independent?
- Does the user can block the pre-configuration update, to avoid
  breaking its configuration based on a specific version of the
  pre-configuration?

But I think this can be a realisable solution. 

[1] List of features to be defined, but I imagine some out of the box
auto-completion, code navigation, functions documentation + functions
signatures + errors showing automatically, strong integration with git
(Magit?) and debuger, major containers engines (docker, kubernetes)
integration, etc. With a great support of the most populare
programming languages. And maybe have a special attention to integrate
with web technologies and tools for web developer.



PS: Or maybe we think to much about this problem. And making an LTS
versions of Emacs, like Ubuntu does, is the solution.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]