The Open Source Attitude and Contributing
I’m relatively new to open source, but not (cough) to internet or software development. One of the things I really love about contributing to open source is how you have to mentally shift some of the ways you approach problems. Coming from the private software world, I would usually kvetch and groan about issues. Why did Microsoft/[this software company]/Oracle build these libraries dependent on these costly other libraries…", for example. In the open source world, complaining publicly about some out-of-date extension usually means degrading someone’s weekend project they did a few years ago that was really popular and helpful at the time. Yelling about it now just shows that you’re either 1) an ingrate 2) unskilled enough to fix it and 3) insensitive. Instead, roll up your sleeves, fork and branch and try to fix it.
In a small jaunt recently in the iPhone dev world, I’ve been back to the thinking of “I wish the powers that be would fix this ImageView animation stack problem,” instead of diving in and fixing it myself. While yes, having your hands tied is hard, it’s also freeing to just yell at “the man.” The mailing list is full of invective, yelling at newbies, and general grousing about poor Apple documentation. While it is far more busy than the Radiant mailing list, I really enjoy the can-do attitude and all of the commits and forkings of Radiant folks on extension and core contributions. While looking at the issues database of another CMS tool, I was disheartened at how unresponsive the core contributors were to problems – 30 recent issues were still “unread”.
We’re approaching a new release and I’m updating as many extensions as I can get my hands on. I’m excited about the new Radiant as I far prefer it to 8, and I’m hoping all of my extensions go smoothly. I’m working on a new one—upgrading Jim’s Wordpress Migrator—as I want to move a few WP projects over to Radiant as soon as possible. Below are a few sites and resources I use to develop in Radiant, so if you’re interested in getting involved, I hope it helps you out.
- Developer Upgrade Notes
Check on this wiki post regularly to see if there are any upgrade notes.
- The main “Radiant” mailing list
- The developer mailing list
- The github repository
Basically where everything happens.
- Wiki on Radiant’s github account
The wiki holds almost all of the documentation, it’s searchable, and generally it’s just a great resource.
- Issues on Radiant’s github account
The bug-tracking database, basically, for Radiant.
Setting Up Your Development Environment
Setting up the environment is always the most time-consuming part of programming, for me. So I thought I’d share how I have mine setup. If you have time, please share your setup, in the comments area below, I’d be really interested.
- Download the source into a /dev/rad_edge directory locally (snow leopard, macbook)
I run in “application mode” for core development, not for client. For them I install Radiant via the gem. I build the 0.9 gem locally, and then create it via “radiant -d mysql [sitename]”. I make sure to uninstall 0.8 gem before that command, by the way.
- Setup the database- no mean feat, I have 64-bit mysql running.
Note: All extensions will go into /vendor/extensions along with the core extensions. My new extensions are also under there. I don’t develop in the native gem library directories but here. When I build off of the gem that’s a totally separate process.
- Run script/server – you can basically run your extensions (and core changes) from the core application.
- Make sure to check the development.rb log frequently, as it is far more detailed than the script/serve output log.
- Preferred method of contribution is to fork, branch, then commit.
Preferred editing software: TextMate, with a lot of command-line noodling around.