Projectile versus project.el
As both projects are moving targets this page might not reflect the differences between them accurately. |
Projectile was created at a time when Emacs didn’t feature built-in project
navigation functionality. Eventually this changed in Emacs 25 with the introduction of project.el
and a lot of people have been asking what are the advantages of using
Projectile over the built-in library. This section of the documentation will try to answer this question.
When project.el
was originally introduced it’s feature-set was quite spartan, but it has added some new features in every Emacs release and circa 2024 it should cover the needs of most casual users. I’m guessing that Projectile inspired many features in project.el
, and Projectile itself was inspired by tools like IntelliJ IDEA.
TLDR;
If the functionality in project.el
is good enough for you than you should probably use project.el
.
At a glance
As of early 2024. (Projectile 2.8 and project.el in Emacs 29)
|
Projectile | project.el | |
---|---|---|
Created in |
2011 |
2014 [1] |
Supported Emacs versions |
25+ |
25+ [2] |
Built-in |
no |
yes |
Package Availability |
MELPA, MELPA Stable, NonGNU ELPA |
GNU ELPA |
Indexing Strategies |
3 ( |
1 (similar to Projectile’s alien strategy) |
Native Project Config |
Yes ( |
No |
Built-in Project Types |
60+ |
n/a |
Number of Configuration Options |
~90 |
~20 |
Number of Commands |
80+ |
30+ |
Feature-set |
Extensive |
Essential |
Extensions |
~20 |
~10 |
Contribution Process |
Light-weight |
Somewhat complicated (standard for Emacs) |
Projectile’s Pros
-
Projectile targets Emacs 25, so you can get all the features even with older Emacs releases
-
Projectile has different project indexing strategies, which offer you a lot of flexibility in different situations
-
Projectile supports a lot of project types out-of-the-box (e.g.
ruby
,Rails
,cabal
anddune
) -
Projectile has a lot more features, although one can argue that some of them are rarely needed
-
Projectile’s Commander is pretty cool for project switching!
-
-
It’s easier to contribute to Projectile, as you don’t need to deal with Emacs’s contributor’s agreement and the
emacs-devel
mailing list -
Projectile has more extensive documentation
Projectile’s Cons
-
Third-party dependency, developed outside of Emacs. This is both a pro and con depending on one’s perspective, but I know that many people prefer built-in packages, so I’ve put it under "cons".
-
Built-in packages in theory should be maintained better (or at least for longer), as they have the Emacs team behind them.
-
While Projectile has a rich ecosystem of extensions, over a long enough period of time likely
project.el
will take the lead.
-
-
Due to its larger size, one can argue that Projectile is more complex than
project.el