A little Background: EtherEditor is the MediaWiki extension developed by Mark Holmquist, which allows collaborative editing of wiki pages via Etherpad Lite. Now, the whole idea of Free Software movement, or any other thing, which is believed to be something so meaningful like a movement – gets a little less meaningful without the very idea of collaboration. Collaborative editing is something, which I find cool enough! So here I am, working on a project, which does mean something to me. 🙂
Mid November – Early December: Mainly the introduction task. I spent time in getting familiar with the MediaWiki environment, git-gerrit basics and obviously the particular project that I was working on – EtherEditor.
The task and the fix: As an introductory task for OPW – I had to work on an existing bug – which was to add tooltips to the icons for session and user lists.
It was some relatively easy task and what I did basically was:
- Added title attributes to the span elements that represent user and session lists in the UI.
- Didn’t add any messages because “User list” and “Session list” were already around from before, when we had text in the buttons.
The bug was fixed and the code was merged! 🙂
- First Week: There was a little trouble with installing PHPUnit in my machine. Which took a day to be solved. Once I got it working, and all the tests passed – I updated the EtherpadLiteClient.php file. It was time to start working on a new bug – which was a weird one, as it was because of that, submit action in normal edit form used to enable collaboration. So, a lot of debugging was necessary to figure out the actual cause. By the end of the first week, my mentor suggested, I should probably look at the another bug that was listed already, as it seemed to us that – fixing that would eventually fix both – and maybe a lot more.
- Second Week: Second week started with the focus on the new bug. After a bit of research, we concluded that we actually have to get rid of an existing feature. Getting rid of the feature of having multiple pad per page needed a lot of work. I started going deep into the flow of the whole structure. Spent a lot of time removing stuff from EtherEditorPad.php, ext.etherEdtior.js etc.
- Third Week: Now was the time to clean the database up and update the changes to EtherEditorHooks.php. Removed the fields admin_user and public pad from ethereditor_pads, EtherEditorHooks.php was updated accordingly. So, by the end of the third week, I was able to get rid of the two bugs that I was talking about – and a few more ( like, the preview feature was broken too. )
- Fourth Week: OK. So, we still needed to do an alternative constructions of the URLs ( shareURL and the padURL) as a lot of stuff had been altered. The shareURL did not need the padID in it anymore, as the feature of having multiple pad per page was removed. The padURL needed to be reconstructed too – Pad URLs need to be built on the server side because of the information involved. The important parts are the URL to the base of the pad directory and the group ID. We get the first from the configuration of the wiki (it’s part of the stuff you configure before you can use the extension), but the group ID is brought over from the Etherpad Lite instance. Groups are the only way we can implement any authentication, so we use them for everything. They also help us by solving the problem of special characters, since hashing the page name gets rid of anything Etherpad Lite might deem inappropriate for pad URLs. We just pass in the literal string “original” as the pad name and be done with it.
Things which made me unhappy: Now let’s have a look at the unhappy things for a bit:
- I had found one additional bug, before fixing the existing ones, moreover I don’t think I can really fix it, as it does not appear in mine. But a change that I did, did create that and Mark faced it! But you know..you fix some, you break some!
- We have this idea of creating the padURL, hashing just the page title in that, which again could give birth to some potential issues like edit conflicts. But I am kind of hoping we have a work-around for that.
My gerrit account has all the updates – code – additions – deletions in it, have a look at it to get an even better idea.
So, that’s it..
Here’s to getting things done! 🙂