About Giving Back

So, in my last post, I wrote about trying to figure out the WebKit source. Now, unlike other open source projects that I played with or contributed to, WebKit isn’t exactly the most obvious one to hack on. The main things that make it difficult to grep and figure out was the the fact that there’s no obvious point of entry for new hackers.

Now, when it comes to other pieces of software with similar complexity, they approach this problem in numerous ways. For example, the Linux Kernel, (which I occasionally try to test and write modules for, none of which are any good to make it past my desktop) has a really good site called kernelnewbies.org, that I would recommend anyone who is new to Operating Systems read. It goes through how the Linux Kernel actually executes, the coding conventions, and how to code, test and patch a kernel. Sites like this are very important to overcome the whole “Einstein” complex that comes with Open Source software.

Now, with WebKit, there’s not as much for new developers to grab onto, so I went back to something that I was more familiar with, which was Mozilla. Now, I admit that in the past I’ve attended some MozCamps, and I’m friends with a few people there, but I’ve never touched the actual Firefox Source.

Until now.

Admittedly, this was a VERY easy bug to fix, of minor importance, and it was flagged as “Good First Bug”. I was looking for something that I could write quickly while working on other projects during the day. I’ve never used Mercurial until I fixed this bug, and I’m nowhere near being a XUL ninja, but I managed to get a bug fixed, which is awesome.

I feel that these social hooks are what’s needed in making a successful open source project, and that the people who put the time into flagging the bugs as [good first bug] in Bugzilla, or maintain things like Kernel Newbies are awesome. I hope that more people make sites that give people who have a passing interest in Open Source development the ability to contribute back, and it’s something that we try to keep in mind here when we make our stuff. For example, If you think that there’s something in PhoneGap that needs to be clarified from a contributor standpoint, please let us know and we’ll try to figure out how we can make it easier, (within reason, we’re sticking with git, because git and hg are awesome).

WebKit and a call for Sanity

Recently, someone was talking to me about Apple, and was telling me about how it’s next to impossible to make sure that WebKit was secure and that it was a lost cause. Now, given that WebKit is basically the web experience of most mobile devices, this claim seemed like it required more looking into, and that it’d be a good idea to once again attempt to take a look into the WebKit Internals.

The thing is that there’s literally no documentation for the WebKit project beyond some mentions of events in the iPhone SDK docs. WebKit in general is a very ambiguous piece of software, and each version of webkit is different depending on what platform it’s compiled for and which features were built. The downside of this is that this is all based on conversations over beer, and a broken Bugzilla.

Given that I’m generally new to browser internals, I would have to say that looking at the WebKit source without any idea of how WebKit works is next to impossible. I’ve played with builds of Mozilla in the past, and I think that I’ll probably keep looking at Mozilla code simply because:

  • The edge version compiles under Ubuntu
  • Mozilla’s Bugzilla isn’t some secret thing where you have to be working for Apple, Google or some other company to read the bugs
  • Mozilla seems to want people to look at the code

Open Source is great, but there seriously needs to be a “Hitchhikers Guide” to WebKit, and unfortunately WebKit is just not there. I admit that WebKit is a better browser when it comes to embedding it into various devices, but the clear lack of transparency when it comes to WebKit seems to make me think that the person who told me that it was a lost cause might actually be right. Developers need documentation, and the current lack of documentation is rather frustrating to say the least, that and the fact that you seem to have to have a Mac to develop for it, is another reason why I find myself going back to looking at Gecko.

Because documentation and a friendly community actually does matter.