If you want to contribute to Linux Mint development, here are a some ways you could approach that:(1) You could contribute to Cinnamon by developing applets, desklets, or extensions.
. There is a bundle of reference material for applets, desklets and extensions on the Cinnamon Wiki: https://github.com/linuxmint/Cinnamon/wiki
. The SegFault developer blog would also be interesting and has many posts with regards to new APIs introduced and examples how to use them: http://segfault.linuxmint.com/
. I've used that a lot in the past, but it's not very helpful to start learning a new language--but a good reference to have once you start finding your way.
The various Mint tools can be found on https://github.com/linuxmint
. At the right edge of the screen you can see what language each project there is in. So, if you want to focus on Python, the Mint tools are for you
Major ones would be mintinstall (Software Manager), mintupdate (Update Manager), mintsources (Software Sources), mintwelcome (Welcome Screen), and I'd say mintbackup (Backup Tool), though as you can see there are a few more.
You'll need a GitHub account and learn your way around GitHub and git--as for triaging and fixing bugs you will want to run the development version of the Mint tools. GitHub have a great interactive 15 minute training to learn the basics: http://try.github.io/levels/1/challenges/1
. Perhaps also the walkthrough of the features on the website would be useful: https://github.com/features
Basically for this you would look at the list of issues for a Mint tool, pick one, and see if you can reproduce the issue. If you can't reproduce the issue at the development version of the Mint tool, comment! Be concise but descriptive of the steps you took to try and reproduce the issue. Perhaps the original poster of the issue, or others affected by the issue, will come forward with more information. But if you can reproduce the issue, fork the Mint tool (that is, click the "Fork" button in the top right of the Mint tool's GitHub page--so you get a personal copy of the development files) and you can now try and work on the code to fix the issue. If you manage to fix an issue in your tests (great
), do a pull request (that is, use the button for that on your own GitHub page's copy of the development files, to ask for your changes to be reviewed by the Linux Mint developers and be merged back to the development version of the Mint tool).
Now, before you pitch in, it's a good idea to seek alignment with the development team on what they are doing (perhaps they are thinking about doing a rewrite for a Mint tool, making your efforts not timely). To do so, join the #linuxmint-dev IRC channel. At least come say hi to the Linux Mint developers and other contributors
To join, just open XChat from your menu to join various Linux Mint chat and help IRC channels automatically and then in any type /join #linuxmint-dev
to join the developer IRC channel. Good idea to also browse the issues for a Mint tool on GitHub first and look at who has do commits to the code, so you know which developers are the ones you might want to try and catch on IRC.
Finally, for learning Python... The Mint tools are, currently, all written in Python 2.7. There is also a Python 3 version, which isn't fully compatible with Python 2. So be clear you are trying to learn Python 2.7--though I'd say most of what you'll learn will easily be usable in Python 3 also, with a few adjustments for specific differences introduced in Python 3 (http://docs.python.org/3/whatsnew/3.0.html
). I'd say for learning Python there are a few good places:(3) You could contribute to Mint tools by implementing new features.
Everybody of course wants to implement new features
IMHO it's a good idea to get a good feeling for the code base by first doing some bug triaging and fixing. Anyway, the issues list on GitHub may also have feature requests or you may spot something on Linux Mint's "TODO" list: https://github.com/linuxmint/Roadmap
. For both I'd say here you should even closer align with the developers on IRC, so you're not duplicating effort by spending time on some major new feature that somebody else may already be working on. Or implement something that doesn't align with the vision of Linux Mint
Well, here's my braindump. I hope you pick up on a few of these tips and find your way to do some programming! I'd say start with something small to find your bearing, and get more involved with bigger tasks if you enjoy it. And don't be hesitant to ask for help! Age shouldn't hold you back either, there have been various younger people contributing actively to the various projects (the youngest was esteban1uy, fixing a critical Cinnamon bug at age 13).
Clem on most of his blog posts invites new people to not hesitate to join the development, so I can't stress joining the developer IRC channel enough, as also when you get stuck with using git or GitHub you'll usually find somebody friendly there that will be willing to help you.
Edit: upcoming soon, expecting within 1-2 weeks, the Linux Mint 16 release candidate will be out. Issues people have will be commented on the blog post (http://blog.linuxmint.com/
) with the announcement of the release candidate. That might also be a good opportunity to get started a bit. And I forgot to mention, but having another Linux Mint installation running as a virtual machine on VirtualBox might be a good idea. VirtualBox is easy to set up a new virtual machine with, and that way any experimenting you do will never risk you damaging your primary Linux Mint installation.