Github hosts thousands of projects. But you may be surprised what projects are the most forked. Here's a look at some of the top packages.
Github is home to thousands of projects, but there are a few that stand above all others. This week, let’s look at some of the projects that have the most forks, or derivations. If you think you can guess what packages are most popular, guess again. I was surprised by what I found. (You can view the current top projects at http://github.com/popular/forked).
Where’s Mr. Hyde?
Blog software is one category where you don’t expect a lot of innovation. After all, a blog is a blog is a blog. You post entries; readers post comments; and perhaps you serve a handful of static pages. Ironically, though, Jekyll, which generates a blog from static source files, is really quite clever.
Billed as the “the hacker’s blog engine,” Jekyll consumes Markdown, plain text, Textile, HTML, and more, and generates Web pages. To perform these transformations, Jekyll provides a lot of helpers and features, including layouts, Rails-like partials, templating through ERb and Haml, and so on, and you can hack your own helpers very easily.
However, Jekyll is real killer application because it’s “blog aware.” It makes generating a blog from static files dead simple. It’s even simpler if you take a peek at the source for Jekyll’s author’s blog on Github, available at http://github.com/mojombo/mojombo.github.com/. Notice the mojombo.github.com — Github can generate a static site from a Jekyll project. If you put the source code for your Jekyll project in a repository named something like jekyllrox.github.com, Github generates and hosts your static site at http://jekyllrox.github.com!
Jekyll is a really interesting project, and it’s provided a lot entertainment, playing around with what features are there and what’s possible. You can check out the repository for Jekyll at http://github.com/mojombo/jekyll.
You dirty rat!
Webrat (http://github.com/brynary/webrat) is currently my favorite Ruby project If you do any sort of Ruby web testing, you need to use Webrat. Imagine if you could write your integration or acceptance tests like this:
click_link "Sign up"
fill_in "login", :with => "jeremy"
fill_in "password", :with => "pa$$w0Rd"
select "Free trial"
With Webrat, you can. Webrat is a wonderful, sugary API that lets you “quickly write expressive and robust acceptance tests for a Ruby web application.” It offers a full stack solution to acceptance testing: it simulates a browser (shown above), runs tests on responses (using CSS matchers, XPath, and others), and integrates directly with ll the popular Ruby testing tools (Test::Unit, RSpec, and friends).
Many people have been combining Webrat with Cucumber (also one of the most popular Github projects) to produce extremely readable tests quickly. Previously, writing the steps that make tests like the following work was arduous:
Feature: Product Search
In order to find a latex product
I fill in "search" with "latex"
I should see "Latex gloves"
But with Webrat, it’s trivial, especially since the author provides a standard set of steps (which I used in the above example), meaning you don’t have to write your own in most cases.
There are also a few of other projects in the list worth mentioning.
- Aeon. The Xbox Media Center (XBMC) project is a great way to repurpose that old XBox you’ve got lying around as a media center. Aeon is a “new interface for XBMC based on a simple premise: create an attractive, sophisticated, and, above all, personal environment for organizing and enjoying media.” It’s one of the most attractive interfaces for XBMC that I’ve seen, and you can check out the source at http://github.com/djh/aeon.
- The Emacs Starter Kit. Both emacs and vim have epic learning curves. I too was extremely frustrated trying to learn one or the other (then giving up and using nano). Imagine my joy when I spotted the “emacs-starter-kit” in the popular project list. The kit is a collection of scripts from Phil Hagelberg (also author of the Emacs Peepcode) that provides a lot of useful tools, and most important, a tutorial! Check out the code at http://github.com/technomancy/emacs-starter-kit.
- Twitter. If you’re thinking of jumping into writing your own Twitter app in Ruby, be sure to check out John Nunemaker’s Twitter gem. It provides most of what you need to get started writing Twitter apps (be sure to install the oauth gem along with it, though, so you can use OAuth). Check it out at http://github.com/jnunemaker/twitter.
As always, if you spot anything interesting or have any updates for me for previous columns, contact me on Twitter at @jm or on Github at jeremymcanally.