User:Devayon

Although this profile is done, expect notes on this project to end up here, if I'm selected for GSoC 2011, or if I do this anyway for fun.

Identity
Name:Devayon Das Email:shyan.s@gmail.com Project title:Improving Semantic Search/Semantic Query usability issues in SMW

Contact/working info
Timezone:+0530 GMT (IST) Typical working hours:11:00hrs to 1700hrs (flexible) IRC or IM networks/handle(s): shyan.s (Gtalk)

Project summary
This project is based on the idea by Markus Krötzsch with inputs from him and others over at the SMW development mailing list.

The Semantic MediaWiki (SMW) holds promise in one day being implemented successfully in large projects such as Wikipedia. The two major issues which need to have elegant solutions before this happens are:
 * Performance improvements for massively large scale wikis
 * Usability improvements.

On the second point, many improvements have been made, many growing into extensions, such as the Halo Project extensions and Ask the Wiki. However, as usable as these interfaces are, they have not been able to eliminate the need of the Special:Ask. This, even though Special:Ask is "cluttered and unwieldy, yet cannot represent all features of SMW queries".

My proposal is to improve the user experience in constructing Semantic Queries in SMW.

Present approaches could be categorized as: But they have disjoint starting points, although (as I've been pointed out) common aspects.
 * form-based/query centred (current Special:Ask)
 * form-based/data centred (like Semantic Forms for queries)
 * browsing based (like Drilldown or Exhibit)
 * structured query builder (like in Halo)
 * graphical query builder

So, what we need is a clean underlying framework/architecture, over which these UI's could be built. My proposal is to rework Special:Ask and separate it into two modules (performance obviously kept in mind): This will go a long way in helping people conduct semantic searches, and should have a long-term future as a base on which other query/data explorer modules could be 'plugged in'.
 * A better version of the query-centred UI, Special:Ask, attempting to make as many underlying features of SMW queries available to the user.
 * A module over which the new Special:Ask will run on. (future alternate UI modules should be able to be plugged into this)

If the future on MediaWiki meshes in with the Semantic Web (which I think everyone in the SMW community believes), this project should be an important step.

About me
I'm am a student of CS in Assam, India. When using any new software, I try to approach as the most clueless customer which usually seems to point out any UI design issues. As a programmer, when I try designing an architecture, or coding a file, I like it to be simple to understand. Which makes maintenance easier.

This minor obsession with wondering what makes us get the system design drew me to MediaWiki(because it stores useful information in one place) and SMW (because the Semantic Web is a godsend for clueless people).

I had come across Semantic Queries in SMW a while ago, discussing Semantic Web in class. It bothered me that I needed to go through the documentation to get usable results. Months later, when I came across the same issue posted as a GSoC idea, that too by a core member of SMW, it was good to know I wasn't imagining the problem. Whew!

Getting this right is very important simply because Semantic Queries, if not improved, could soon become a bottleneck for SMW's future. Or maybe I'm just imagining it. I'm currently doing research for a project related to data privacy in my department. My other hobbies, include working on Processing and visualization of datasets. When I scrape out extra free time, I also try to do some reading and gardening, which stems from appreciating good design.

Deliverables
I wanted the deliverables list to be a little flexible, because I expect the number of different classes I create to vary depending on how much cohesion there is in the existing code + my work. Also, I want to pester my mentor(s) to add to this list (so we can have a better product)

Required deliverables

 * Seperate JavaScript auto-complete for every token type(category, properties, etc.)
 * Server pages to provide data to each of the above scripts.
 * A UI interface for Special:Ask. Should have (at least the same or) better usability than current version.
 * Salenium Test cases for created components.
 * Documentation for all components created.
 * Documentation for existing code for the class SMWAskPage

If time permits

 * A graphical UI for browsing categories, using interface created above.
 * OR, alternative deliverables based on further work assigned by mentor(s).

Pre coding period

 * Set up the development environment (already done)
 * Read documentation (already started)
 * Bother people on the mailing list (started, and continuing)
 * Document existing code
 * Set up local testing environment (Selenium)
 * Get some dummy data to fill my test server.

From 24th May, 2011
Although Officially I'm supposed to start from this date, I expect to begin earlier, just to get a heads-up start. Also, I'll have departmental presentations and in Week 1 (Semester ends at the end of Week 1) so I'll start work early to cover up for this.
 * Milestone 1 Expected time: Week 1 and 2
 * Separate SMW_SpecialAsk.php into UI and non-UI components.
 * Non UI components to be forked into separate class.
 * Test.
 * Will also end up expanding documentation currently available.


 * Milestone 2 Expected time: Week 3 and 4
 * Simplify UI layout.
 * Add/remove page elements to simplify look for the newbie user.
 * Test.
 * Will take so much time because I want to make multiple mock-ups of the UI.


 * Milestone 3 Expected time: Week 5
 * Javascript Autocomplete.
 * Separate the existing auto-complete into specialized one for different query tokens.
 * Create PHP code to feed the JavaScript.
 * Tests for php are expected to fail.


 * Milestone 4 Expected time: Week 6
 * PHP feeds to JavaScript
 * Fix PHP code from previous milestone to return list of categories ranked in custom order(alphabetic, best match or height in category tree.
 * Useful for building other UI.
 * This should take less time if I can leverage existing query printers to return json. If not not, may spill into next week. Trouble expected for ranking according to height in the category tree/graph.


 * Milestone 5 Expected time: Week 7
 * Other Stuff.
 * Code Clean-up.
 * Add more documentation.
 * Improve the UI (add keyboard short-cuts)


 * Milestone 6 Expected time: Week 8
 * More JavaScript
 * Create more PHP code to return data for JavaScripts for other tokens.
 * Code from Milestone 6 can be modified to achieve this. Therefore, work should proceed fast on this.


 * Milestone 7 Expected time: Week 9 and 10
 * Tests!
 * Write Selenium Test cases for Special:Ask.
 * Although pages by now are expected to work for valid queries, invalid queries are expected to cause trouble. Code. Rinse. Repeat.


 * Milestone 8 Expected time: Week 11 and 12
 * Example UI
 * Hopefully, I should be done by now. Therefore, will build a sample category selector based on the above work with JS InfoVis Toolkit.
 * The code is expected to be a bit hacky but will serve as a good example on how to build on from my GSoC work.
 * Alternatively, mentor(s) may (they have suggested this) put me to work on UI improvements elsewhere on SMW.


 * Of course, this time may also be spent fixing code in case I'm running behind.

Participation
I code in long stretches, usually at night, but also sometimes during the day. I tend to document my code as I write, although I come back and re-factor variables/class names later during code clean-up. Progress on my code can be viewed as bi-weekly SVN commits. Rather than blog about my work (I'd rather code than blog), I'll put up small updates on my profile page on mediawiki.org about my progress. I expect that to be more useful for future GSoC aspirants.

SMW related queries will be emailed to the SMW development mailing list, and to Markus Krötzsch, Neill Mitchell and Jeroen De Dauw since they have shown interest to (co)mentor. General media-wiki questions (although they seem unlikely) will be forwarded to the medawiki mailing list. I also expect to view code and have questions on other open-source projects such as Exhibit. Questions will be posted to them if necessary and any insights will be summarised on this page.

Quick questions will end up on IRC channels of mediwiki and SMW.

Past open source experience
I confess to being a FOSS newbie (everyone is a newbie sometime, right?) but am passionate enough about getting this right. Just to clarify, I've been working with PHP, MySQL and Javascript for quite sometime, but if selected of GSoC, this would be the first time I'd be contributing.

I've been informally helping a friend with the iCub Simulator and YARP, but have not committed any code.

And but of course, I just like everyone else, use a lot of FOSS software/libraries in my work.

UI ideas

 * Search at GitHub. A simple clean search page, good for the novice but alos great for people who want to build complex queries
 * More GitHub. Graphics intensive UIs should have keyboard shortcuts for the PowerUser
 * Gephi If we ever wanted to 'surf' the semantic data as a graph, Gephi sure knows how to draw them!
 * A tree drawing javascript with JavaScript InfoVis Toolkit

Other SMW UI browsers
These are listed here, to show that each has their strength but hasn't eradicated the need for a better Special:Ask
 * Semantic Drilldown
 * Ask the Wiki
 * Exhibit
 * The Halo Project