Rails on the Run

Rails experiments by Matt Aimonetti

Browsing Posts tagged plugins

My recent and certainly provocative post generated a lot of noise. Just by reading some of the comments on my blog or on reddit I could only notice that some people took offense and some people tried to push the metaphor way too far. At the same time, it generated a lot of interesting discussions even outside of our small Ruby community.

A few clarifications:

  • Rails is an awesome framework, and to be honest I really like the fact that it’s accessible to newbies while offering great tools

  • Rails Plugins that I like calling Duplo blocks are great and I use a bunch in most of my projects

  • I, myself wrote a bunch of plugins and gems never as great as the one mentioned in my post though

  • No, I don’t think you are dumb if you don’t have a clue how Rails or Rails plugins work

I also agree that the Duplo metaphor is very limited and doesn’t stretch… but who cares.. it’s funny.

What did I mean to say

  • Rails plugins are useful, use them and ABUSE them. Even though most of them are very well written I strongly believe you would become a better developer if you understand how they work.

  • A Duplo doesn’t do exactly what you want it to do, don’t bitch about it. Try submitting a patch or if you can write your own plugin.

  • If you are using a plugin on a regular basis, give it some love. Submit some documentation, write a blog post, send a thank you email.

  • A great framework and a bunch of nice plugins are awesome tools for developers but they won’t replace your brain.

So, there you go, this time around I tried to be more straight forward and I even apologize if I offended you.

Finally, I don’t believe the Rails community is a bunch of obnoxious-arrogant-wannabe-rockstars, and certainly not a ghetto. We all started as newbies and I hope a lot of newbies will join the fun and learn through Rails and later provide the community with a lot of awesome Duplos!

I’m sure, at least once in your life you played with Duplos.

Duplo bricks are eight times the size in volume, twice the length, height and width of traditional Lego bricks, and are easier to handle for younger children. Despite their size, they are still compatible with traditional Lego brick.

Duplos are great to introduce kids to the concept of Lego bricks and to get them to think about building their own creations. However you would freak out if your kid would grow up and not want to start playing with Legos and building more advanced/custom stuff.

Unfortunately, that’s exactly what’s going on in the Rails community right now. We created a generation of Duplo developers.

Rick Olson, AKA Technoweenie fathered a great majority of this Duplo generation. Rick is a Rails core member and a prolific Rails plugin developer. He has written very popular plugins and Rails apps such as:

If Rick is the father, the mother of this generation would obviously be David Heinemeier Hansson, creator of the Ruby on Rails framework. David has always wanted to make our lives easier, providing us with tools to avoid repeating ourselves and a mass-load of tools to create web apps in no time.

Rick, David and others worked hard to provide the community with tools that cut our development times by 20% to 30% and that’s just awesome. They basically took their meccano applications and extracted Duplo blocks you can play with.

from meccano to Duplo

The problem is that a generation of Rubyists has grown up being used to getting everything pre written for them. They haven’t yet passed the “Duplo stage” and basically write applications putting a few blocks together, only writing 10 to 20% and barely understand 5%.

On top of that, what really annoys me is that, these very same developers complain about the existing plugins, always ask for more and don’t give anything back to the community.

The problem is that it’s always the same people giving and helping. Relatively quickly, the community grows and people supporting it get tired. I won’t go as far as Zed and his funny rant but we need to wake up. We need to evolve, learn how Rails magic works, give up the cargo culting and start giving back.

The first thing would be to stop complaining about plugins you use on a daily basis and write your own or fork existing ones. GitHub is a good place to start forking existing projects, if you are a Rails/Ruby beginner, you can help with documentation or submit small patches. Josh Susser wrote a nice tutorial on how to commit changes (patches/documentation).

Why not blog about issues you have just faced and how you resolved them. Start writing small plugins/gems. Try helping people on the various mailing lists.

And finally, drop the Duplos and start playing with Legos – don’t use plugins just because they are available to you, make sure you fully understand what the plugins you use do! Learn more about Rails guts and start using it in a way that makes sense to you.

Why not even switch to meccano and take a look at Merb

I started moving some of my projects to GitHub.

Here is my GitHub account.

Projects moved to GitHub:

I’m planning on moving GoogleCharts, RandomWordGenerator and some not released stuff to GitHub so people can have fun forking my projects.

Git and GitHub are the new cool things. GitHub is planning on setting up a gem server while they are already offering tarball download and a post-receive hook. (they also plan on becoming myspace for geeks, but that’s another story)

Do you have to switch to git and github? Honestly, …no you don’t..
Git can act as SVN, but let’s be honest, if you switch to a new SCM it needs to do more. I’ve been using Git for a couple of months and even though I still don’t have a full understanding of this SCM, I really enjoy using it.

So, get over it, learn on your own or purchase this excellent peepcode

Email me to get a GitHub invite (Tom and Chris gave me some invites for readers) or/and try Gitorious.

The fact that some major players (Topfunky, technoweenie, Chris & PJ, jnunemaker and major projects such as capistrano, vlad the deployer and Merb use and support Git is a sign that it’s the next big thing.

Also, I believe that a lot of developers will also be motivated to move their plugins/gems to GitHub because they simply can’t always maintain their own libs and/or just hope people will fork their project and contribute back.