Evolution Hackfest at Bangalore

On Wednesday, six interns under the NOSIP programme joined us for an Evolution hackfest at office and walked out as
proud Evolution hackers by the end of the day. Working on what we have heard from the folks who have participated in NOSIP (it is just over an year old now), the hackfest was designed to show the newbies and the wannabes – what open source hacking is all about – fun and learning. The idea was to let them get a feel of ‘Open source development’ by watching me and chen working on some live bugs – so they can have a crack at it in the second half.

(Left to Right – Harish, Sharath, Archana, Chen, Darshini, Shashidhar, Vivek, Praveen)

After exchanging names and introductions, we got down to business. None of them had used Evolution before (for all but two – it was the first encounter with GNOME/Evolution, the other two were a week old). So, Chen began by showing off Evolution. Then it was build time. Contrary to the approach of building 46 modules to get evolution up and running, we piloted a new approach, (hope this helps the students who are on low-bandwidth, unreliable internet connections) – Install the Novell Linux Desktop (evaluation copy) with the development packages for most of the basic libraries and build just 5 core modules.. so you can start looking at the source and get hacking, rather than spending too much of time on trying to get myriad version of autotools and libtools to work with each other and finish off with 46/46 on jhbuild.

While jhbuild bootstrapped, I briefed them about the project, the evolution hackers and the individual modules they work on, the blogs, bounties, planet.gnome.org, mailing lists, the bugzilla, bug days, the irc channels and some popular nicks. Also shared some of the useful environment settings, scripts and nifties to make work light while hacking.

We had started off with the source (a few months old as found on the cds that we distribute) and updated it to the HEAD (that had just seen a release a couple of days and hence had version bumps). Then began a wave of errors and we got the ‘now you know what we went through’ looks from those who had attempted this before.
The guys watched me and chen solve them ‘live’ and thinking aloud – probing for causes, discussing and arguing on what is the best way to get rid of the block – pull it from rug, change the aclocal flags, uninstall the autoconf that seems to interfere, make clean to get rid of er, some stray binaries that had made their way into the source cds.

After about an hour, the guys got into the groove and started cracking the issues on their own. We were joined by the rest of our evolution team in bangalore – setting off another round of intros and a mini debate on open source Vs free source. By lunch, we were still building. As we were joined by the evo and oo team over the lunch table, chen chose to be a lone warrior ignoring my calls over his mobile to grab some food.

Post lunch, while the machines churned out the binaries for the 5 modules, we walked them through a complete bug fixing cycle – picking up the bug from bugzilla (how to select, choose and query), understanding the problem, checking if hte bug still exists, locating the right module and grepping your way to the source of the problem. understanding the context, sticking to the code conventions while making the changes, and the fix->compile->test cycles till the bug was solved to satisfaction. Then of course, writing a Changelog and generating the unified patch. This was followed by a second demo – solving a crash to demonstrate the use of gdb – attaching to a process, analyzing the stack traces, breaking at the right spot etc.

Then it was show time – we tossed some of the bugs we had handpicked for them and the guys split into teams of two and kicked off. By then, just two machines had all the 5 modules built while the rest were ambling their way towards the mark. So chen graciously shared his source tree and i had to follow suit.

[A short digression… me and chen then discovered that we had mistakenly ‘used’ one of the bugs we had earmarked for the day during the demo. Evolution to the rescue.. as one of the teams ran evo they had just compiled and tried to create an account – they ran to a crash. they decided to fix that. cool.. some luck]

The next hour, they spent glued to their monitors – trying out stuff, occasionally asking a question or two.
Neeti dropped in to say hi – and a few exchanges on why each had chosen to do opensource and how they can benefit from the programme followed. Neeti, then handed over a prized gift – a gnomebangalore T shirt to each of them.

Team one had a false start, thought they had just cracked it only to find that they had fixed the crash but introduced a different problem. They were back at it again after realizing why their fix would not work.

The other bug, 58786 that had proved quite popular was being attempted by both the other teams. – a sheer coincidence, it had been filed by another NOSIP intern (hpnadig). This was the problem of the ‘Mark completed’ menu item not being disabled even when invoked on a completed task item. We dropped in a few hints and some nudges, careful not to give the solution away – for eg. the need to search for a particular function in evolution-data-server and not under evolution – or where to look for the callbacks – areas where brute find and grep would not help.

We overshot the planned time but our young hackers would not leave until they have seen the end of it. Then came the first fix, the second and the third. On pointing a possible optimization, Team 3 had a go at it again.
With the joy on their faces seeing their fix working, we knew the Open source bug had bitten them. They are looped in for life. It was pure ecstacy as they composed the Changelog and generated the patches and posted them on the mailing list. Fun, relief and pride written all over their faces.

At the end of a long, tired but a day well spent – more feedback on what they would like us to do while i stressed on the need for them to contribute not just by submitting patches, but also by filing bugs, triaging, adding documentation to the wiki sites as well as helping other newbies in gnomebangalore – a number that seems to be rising everyday.

Just a request to fellow gnome hackers who stopped by to read this – an increasing number of such hacker newbies work during the nights – (the connectivity is better in off-peak hours and also cheaper for the students who do make sacrifices to afford the luxury of being online) – while most of us here do try to lurk around during midnights – you can make a big difference to these people and GNOME in India.

It would be a great opportunity for these guys to interact with the gnome community all over the world over the irc – getting some answers and guidance, participating in bug days, learning the ropes and sharing thoughts..
Drop in to #nosip on irc.gimp.org, do spend some time with these students and welcome these guys into our wonderful community.