Pareto Optimal Dev

Discoverable Emacs configuration for beginners based on Object->Action

This idea hit me while reading Fifteen ways to use embark when I realized how much easier having access to embark-act could make things for beginners.

This idea was furthered when reading the reddit thread about Discoverablity 2: Use context-menu-mode (since 28.1)….

Then other updates from Nicolas Rougier of Elegant Emacs that aims to clean up the emacs theme and UI had a couple posts that I thought of as being useful for this beginner configuration:

All of these ideas together make me envision an emacs configuration whose:

  • UI is based on all of the great NΛNO stuff that should be friendly if not enticing to newcomers
  • User is encouraged to use right click for context-specific help as much as possible
  • User is encouraged to use C-. (embark-act) as much as possible
  • Encouraged to use the help, but given an omni-search of C-h f, C-h v

Then the very active Emacs discoverability reddit post about emacs configurations aimed at beginners turning off the toolbar which aids in discoverability. Is it context specific? Either way, a plan would be to keep it by default but give it a redesign in the spirit of the NΛNO theme (Note: Is Nicolas Rougier working on this or perhaps interested?).

Then the typical additions, but stripped down to not have overwhelming information:

  • which-key, perhaps bindings recommended ordered by “most used in community”
  • strip down embark actions, categorize them, or otherwise add hierarchy to prevent overwhelm

And other ideas:

  • keyfreq configured by default, and some nice tutorial/wrapper to encourage them to improve their bindings/process
  • alert.el for all notifications by default (Note: will this require users installing a notification library?)
  • pdf-tools added by default along with maybe a wrapper mode that guides users to easily taking notes/annotating
  • Encourage use of org-roam dailies to casually start developing their knowledge?
  • no-littering package by default
  • dired copy to other window by default, maybe an interactive tutorial for dired and suggest it could replace quick terminal sessions?

Other important questions:

Prior work to review:

  • Wakib, an easy to use Emacs starter kit (This has a focus on keybindings, but I wonder if that’s ultimately a negative? Perhaps start with CUA for accessibility then try to sell the value of C-c C-c style bindings because emacs has more contexts to need keybindings?)
  • Note, from some beginners feedback Wakib bindings aside from the typical you expect like C-c being copy, are just as complex as default emacs keybindings plus the overhead of being different

Maybe useful:

Maybe useful thoughts/ideas:

The bottom line is that emacs is a not an editor, it’s a platform that you can use throughout your entire life. And if your life depends heavily on computers - whether you’re a writer or an entrepreneur or an accountant or a government researcher or anything else these days - emacs is a worthwhile investment because it’ll pay off in the long term. - source

This gets at the heart of the matter in the desire to grow users from having a good and accessible first experience and how that conflicts with making emacs something that continues to be valuable for them. What emacs is best at, and in answering Why pick emacs over vscode?, is extensibility and the low-cost relatively of doing so.

The problem is to attract new users emacs should do something much better than other tools, and there is one thing emacs does much better: extensibility.

But in order to master extensibility, new users have to face the alienness of emacs compared to other tools.

Most users wants things like out of the box autocompletion and stuff, so they can use the new tool instantly before starting to learn its deeper layers.

And emacs is not very good at this, new users have to start tinkering to set up autocompletion and stuff, while other tools, like vscode, download and setup things automatically and seamlessly.

I was impressed by vscode when I tried it, seeing how polished the experience is. I still use emacs, of course, but vscode can be a model of how the new user experience should be. - source


Maybe we should add:

Loaded user-init-file: home/user.emacs

To the welcome page.