Emacs switched the version control system from Bazaar to git yesterday, so now is the time to start hacking away at Emacs.
Emacs: The Best Thing Since Sliced Bread If It Wasn’t For The Fact That Emacs Was Actually Invented Before Sliced Bread.
This is a very short how-to guide on building and then contributing to Emacs.
Depending on what OS you’re running, you should install some libraries and stuff. On Debian/Ubuntu you’d say something like
sudo apt-get build-dep emacs24
(See the end of this post for instructions for other operating systems.)
Then you need to get the Emacs sources and build Emacs. Here’s how on most Linux systems:
git clone git://git.savannah.gnu.org/emacs.git cd emacs make ./src/emacs &
And you’re off! If you know what you want to add to Emacs, just start hacking away. If not, you should have a look at the wishlist in the Emacs bug tracker. Starting with a new feature can be less daunting than starting with a bug, since it’s more open ended. And more fun.
First we need to get the bug tracker into Emacs.
M-x package-install RET debbugs RET
Ready for action!
M-x debbugs-gnu RET C-a C-k wishlist RET
This will list everything that anybody wanted, but nobody got around to doing anything about. Find one you think look interesting, hit enter to read more about it, and if you think you want to have a go, start hacking away.
Emacs requires a copyright assignment on all bits that are larger than 15 lines. Send an email to email@example.com saying you wish to assign your Emacs code to the FSF, and they’ll get back to you on the paperwork, which is very un-daunting.
If you’re fixing lots of bugs and adding lots of new code, just ask for commit rights to the Emacs repository, and your code will fly out a lot faster.
Go forth and Emacs!
If apt-get build-dep doesn’t work for you on Debian/Ubuntu, you could say something like
sudo apt-get install gcc automake autotools libmagick++-dev \ libgtk2.0-dev libxft-dev libgnutls-dev libdbus-1-dev libgif-dev
On Fedora you’d say
sudo yum-builddep emacs
sudo yum install gcc makeinfo texinfo gtk3-devel gnutls-devel\ giflib-devel ImageMagick-c++-devel autotools automake \ libXaw-devel libpng-devel ncurses-devel libxml2-devel
If you have instructions for other OS-es, or these instructions here are wrong, please leave a comment.
If you need more information on the git flow for Emacs developers, have a peek here.