OPW : A beginning indeed

Time flies when you work! 🙂
It is indeed very hard to believe that three months of OPW internship have passed already, and it is actually a time to write up the Final Project Report. Well, it is satisfying in some ways.

So, here goes!  

My Project: 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, I did  on a project, which does mean something to me. 🙂
Things done: 
Bug Fixes:  

# Bug No.:  39441 
Description: Add tooltips to the icons for session and user list


  •  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. 

Gerrit Status: Merged

# Bug No.: 39424
Description: Multiple pad per page clarification
Fix: Two fields have been removed from the database, and we no longer track multiple sessions per page. 
# Bug No.: 39443
Description: Submit action in normal edit form enables collaboration. Why? No reason.
Fix: Fix for #Bug – 39424 tangentially fixes this. Had taken care of this bug in the same patch as earlier. 
# Bug No.: 39389
DescriptionSuggestion: tab “collaborative editor” OR “edit” (standard editor) tab in correspondence to the user preference setting.
Fix: Added a user preference to enable collaboration bu default. Useful for people who know they will be collaborating often.
Gerrit Status: Merged.
Bugs Reported: 
# Bug No. : 44122
Description: If a pad gets deleted on EPL, EtherEditor has no clue what to do.
Fix: Open for everyone. Yet to be fixed!

Architectural Changes – No more storing sessions :

  • 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
  •  Cleaned the database up and updated 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.)  
    • Alternative construction of the URLS: 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.   


    EtherEditor – User can enable it manually by checking the collaborate check-box
    New Feature : User Preference to enable EtherEditor by default. 

    Here’s the checkbox added in the preference section
    Client side updates :
    • Updated the Client Library in EtherEditor : Forked the etherpad-lite-client from the git-repository and cloned it to core/extensions/EtherEditor/includes/ , well more specifically updated the EtherpadLiteClient.php file with the new php file from the cloned etherpad-lite-client followed by some unit testing.
    • The issue with the Format Buttons bug was due to the client-side script in ep_ethereditor (the etherpad plugin we maintain that enables all of the formatting magic) has an incompatibility with the newest release of Etherpad Lite’s API – as we suspected. So a fix there.


    •  Meet the Functions! While working with a few bugs and features, finally after quite a bit of struggle with the code, I had kind of felt that a brief introduction to the functions that I am dealing with would be good to be documented. 

    Feedback on Project: I loved it! I would not say I never got frustrated, demotivated or blocked. In fact there was something like that from February End – March Beginning. A very unfortunate and confusing bug, did block my ways. Which is why – although two of my  patches fixes the respective bugs and a few more right now, is yet to be merged – we were solving the issues with ep_ethereditor . But, I guess, this is also one of the many lessons I got to learn – to deal with situations like this and get going.

    Feedback on OPW: It was special. 🙂 I always had my reasons to contribute to FOSS. OPW gave me the platform. It was indeed very special.
    Disclaimer : This not a bye-bye post. This ain’t an end to anything. I strongly believe, that after a few years in FOSS, I would come back to this post and look at it as how I started something meaningful – a journey, maybe 🙂

    4 thoughts on “OPW : A beginning indeed

    1. Good stuff! The disclaimer notwithstanding, I'm sure there are enough problems to keep you occupied. The post needs some screenshots – do you have any?

    2. Sankarshan da,

      Thanks! 🙂
      Added a few screenshots. The one test instance that we have in our wmflabs, does not seem to be working right now. That would help otherwise.

    Leave a Reply

    Your email address will not be published. Required fields are marked *