SystemCrafters / crafted-emacs

A sensible base Emacs configuration.
MIT License
739 stars 117 forks source link

Explain the long term vision for Rational Emacs and how it's different from other Emacs distros #192

Closed vaidyafamily closed 1 year ago

vaidyafamily commented 2 years ago

@daviwil I'm curious, what is your long term vision for Rational Emacs? After having played with it some, the general structure of it seems pretty similar to Doom. There are a number of modules Rational provides to the user, which the user can choose to include or exclude. The user then crafts his personal config around those modules. If someone were to ask me to characterize what Rational is, I would describe it something like a less opinionated Doom. Is that sort of the long term vision for this project? What ultimately distinguishes this project from something like Doom (or the other distributions out there).

daviwil commented 2 years ago

This is probably something we should include on the README, but the core differences between this distro and Doom or Spacemacs are the following:

In short, this distro is for Emacs users who want a nice baseline for building their own Emacs configuration while writing actual Emacs Lisp code, not some other distro's configuration code. They should also be able to learn configuration tricks and useful settings by reading the source!

I know a lot of this is already possible in other distros, but typically the convenience macros and patterns provided by those distros get prioritized over writing raw Emacs Lisp. In the end it's more about the intent of using such a distro: do you want "batteries included" without doing much work, or do you really want to build your own configuration over time without having to write everything from scratch at first.

A potential path for a Crafted Emacs user is to eventually abandon Crafted Emacs once their own configuration is complete :)

@jeffbowman should feel free to chime in here with his thoughts too!

Hope that helps!

jeffbowman commented 2 years ago

I am not sure I can add much to the thoughts from @daviwil , but I'll highlight things which I think are generally important to me:

To support these things, I try to keep these things in mind when I'm working on the project:

As for a long-term vision, I'd love to see this project fulfill the goal of the opening line in the readme... a sensible place to start hacking your own Emacs config. I'd consider this project a success if someone could start from scratch and in an hour or less get at least 70% of their configuration completed, have something that works for most of their day-to-day workflow. Over time, I might consider that 70% number a bit too low, but for where we are now, we should be able to hit at least that in a lot of cases.

As a secondary goal, I'd echo what @daviwil said - this should be a project that you could eventually outgrow as your configuration matures through your own implementation. Hopefully that means you, as the user, have learned enough about Emacs Lisp, Emacs configuration, making decisions on packages you prefer and configuring them to your taste. Eventually, Crafted Emacs becomes more and more transparent to the point you have replaced it with your own. That journey is worth going on!

daviwil commented 2 years ago

Fully agree with @jeffbowman!

daviwil commented 2 years ago

I wonder if we should digest some of this thinking as an update to the README to flesh out the ideas further. I think as time goes on, things are becoming clearer! I've updated the issue to reflect the need to update the README with more details.

phikal commented 1 year ago

Has the idea ever been discussed to make Crafted Emacs modular enough to be installed via package.el? In the sense of that the modules are distributed via an ELPA, and users get to pick and choose what they want to install? The bootstrap configuration would then just configure package.el and download a meta-package with the base dependencies.

hab25 commented 1 year ago

Has the idea ever been discussed to make Crafted Emacs modular enough to be installed via package.el? In the sense of that the modules are distributed via an ELPA, and users get to pick and choose what they want to install? The bootstrap configuration would then just configure package.el and download a meta-package with the base dependencies.

This implies that it has.

jeffbowman commented 1 year ago

Yes and no... There is the concept that a user might craft their own configuration from certain modules provided by Crafted Emacs but not actually use Crafted Emacs itself. Basically, they would provide their own custom early-init.el and init.el and then use some of the modules from this project. While we endorse this idea, there hasn't really been any movement on "packaging" any of the modules. IIRC, @daviwil made passing reference to the idea in the very early days of (then) Rational (now Crafted) Emacs. There is another issue (#251) which might take a step in this direction.

One of the difficulties at the moment is the tight coupling between the modules and the initialization (ie early-init.el and init.el). This is not necessarily a "bad" thing per se, however, decoupling requires configuration of certain path variables which, if the modules were packages, would need further refinement, probably default values and customization options - not the end of the world, nor impossible to accomplish, but will certainly require some thoughtful development.

For the moment, you can nearly achieve the same effect by following some of the instructions left in #251, specifically this comment.

Hope that helps!

jeffbowman commented 1 year ago

Closing in anticipation of Crafted Emacs v2