User:Yaron Koren

An overview of my MediaWiki-development career:

Sometime in the winter of 2006, I had the idea of creating a site like Rotten Tomatoes, but for political opinions - why was it so hard, I thought, to find the opinions of commentators on the important issues, when it was so easy to find aggregated opinions on any old movie, video game, consumer product etc.? The idea lay dormant for a while, but in June I suggested working on it to a friend of mine, Nick Grandy. The timing was good, since we were both between jobs (I had quit my last job the previous year, to work on a website that ended up not going anywhere, but that's a different story.) We both were fascinated by Wikipedia, and decided to set up the site as a wiki; given the controversial nature of political opinion, we thought that it was important to allow many users to edit it, to avoid charges of bias (or actual bias, for that matter). We also thought making it a wiki, and thus editable by everyone, would mean less work for us in the long run; an ironic thought, in retrospect.

We looked at a few solutions, and quickly settled on MediaWiki and the Semantic MediaWiki extension. From there, many decisions flowed: authors, sources (newspapers, magazines and the like), topics etc. would each be represented as a class, and each one would aggregate information so that a users could view opinions for each of these; and semantic information would be contained only within templates, enforcing structure throughout the site and making editing easier. In July, Nick also came up with the eventual name: "Discourse DB" (the site is still running, and you can see it here). We spent part of the summer in wi-fi cafes, creating the site. Part of that task involved making changes and additions to Semantic MediaWiki to enable our interface to look the way we wanted; that was my introduction to MediaWiki programming. In September the site was released.

For all the work we had done to make Discourse DB user-friendly, there was a problem with it, which was that it required users to enter Wikipedia-style template calls into pages to add information, a requirement that, as I discovered from talking to people, essentially made data entry impossible for the vast majority of potential users. In December I added a form on the site that prompted the user for the fields of an opinion item, turned those values into a template call and saved it to the wiki. Not a big deal, but it still took over a week of development time, mostly because the form had autocompletion of author and source names. It did make the entry of data much easier, though.

After the form was added, I had the thought that such a form-based semantic wiki site could eventually become extremely popular, since it allowed for widespread collaboration on data with an ease that had never been available before: you have the flexibility of a wiki combined with the power of a true database. Thinking about it more in January, that optimistic vision turned into a depressing one, as I envisioned one programmer and/or administrator after another having the same idea, then spending the months that it had taken me and Nick to create such a site and its forms, and making all the same mistakes, or perhaps entirely different ones, all to create what were essentially copies of the same code. Soon afterwards, while sitting in a development meeting on an unrelated topic, I had a vision of being able to automate the creation of forms; this idea eventually became the Semantic Forms extension. The initial conception looked almost nothing like what the current solution does: it was going to be a component of Semantic MediaWiki and not a separate extension; it would generate complete, autonomous PHP code for each form on one's site, instead of using scripted form-definition files; and the forms would be used only for adding data - editing data would still have to be done by hand.

I worked on the code on and off over the next four months, and discussed it with a few of the SMW developers and others, and in May 2007 Semantic Forms 0.1 was released. I've since put a great deal of work into improving it and trying to make it a truly enterprise-level application, trying to reduce the amount of time needed to create a full structured semantic wiki from several months to several hours. A large number of developers and users have also helped, making invaluable code contributions, bug fixes and suggestions.

Starting in July I gave some feedback to Matt Williamson, an SF user who wanted to create a mapping tool, whose work would be released in September as the excellent Semantic Layers.

At the beginning of August I got my first sense of the possibilities of open-source development: I had released a new version of SF in which all of the user's modifications of a form were done client-side, through Javascript. Unfortunately, due to my lack of understanding of Javascript, the new version only worked fully on Firefox browsers: every other browser had at least some problems. Two days later, I was somewhat stunned when a user sent me a sizeable patch with a fix that worked perfectly across all browsers.

In August I also took on my first consulting job implementing an SMW- and SF-based semantic wiki (at my suggestion - they did need some convincing); the experience proved very helpful in seeing the software through fresh eyes, and seeing what features are really needed by real-world users. This led to a set of changes in SF, as well as code I wrote to enable an XML export of the data, which that project required.

In November 2007 I had the thought that search by semantic properties could benefit from the same automation, and user-friendliness, that Semantic Forms attempts to do for data entry. I did some planning work on it, soliciting some feedback from the Semantic Forms users, and the next month I created and released the Semantic Drilldown extension.

In January 2008 I was commissioned to create a calendar extension; Semantic Calendar was released in February. Just as with my previous extensions, the semantic nature of the data made it very easy to create a generic, all-purpose application; much easier than if the application were querying a typical relational database.

In February I also transferred Semantic Forms from the script.aculo.us Javascript library to the Yahoo! UI library, which enabled some important improvements for autocompletion in the forms.

Later in February I packaged the XML-export code I created before, releasing it as the extension Data Transfer.

By March, I was working almost exclusively on MediaWiki-related projects in one way or another. I was hired to set up some semantic wikis, and do development work for a (non-semantic) wiki-based company. I was also commissioned to upgrade Semantic Drilldown, an upgrade that was released in April as SD 0.4. When I needed to make new business cards, I had them read "MediaWiki developer" as my job title.

In April I released the extension Replace Text, which does global text replacements, and whose main purpose was to get around SMW's limitation of semantic properties not following redirects. As with Data Transfer, I had already created most of the code well beforehand, for internal use on various projects, but hadn't gotten around to releasing it until later.

And that's the story, until now, of my MediaWiki career. You can read more about me at my homepage, at http://yaronkoren.com.