User:Jeroen De Dauw

This page is no longer maintained. You can find out more about me and my projects on my website.

Jeroen De Dauw

Software craftsmanship advocate

To debug and correct in all your development work is not supreme excellence. Supreme excellence consists out of solving the problem without any debugging --Sun Tzu and Robert C. Martin

About me

I am working for WMDE as Software Architect on Wikidata. In 2009 I got involved with MediaWiki development and have written and contributed to dozens of extensions since. I'm passionate about software craftsmanship and clean code. A lot of my focus goes into making components maintainable, understandable, reusable and extendable. This means most of my work is in libraries or applications that support MediaWiki extensions, though do themselves not depend on MediaWiki.

My work

Disclaimer: Although I work for Wikimedia Germany, contributions under this account do not necessarily represent the actions or views of WMDE unless expressly stated otherwise. For example, edits to articles or uploads of other media are done in my individual, personal capacity unless otherwise stated.

This is a general overview of my career as MediaWiki developer. (And yes, I stole this awesome idea from Yaron.) For specific things I developed, and when, you might want to have a look at the version history (change log) page of the relevant extension.

In February 2009, I attended FOSDEM 2009, where I followed, amongst various others, a presentation by Brion Vibber about MediaWiki, that I found quite interesting. I was also present at the closing session of FOSDEM, which was about Google Summer of Code (GSoC) 2009. At this time I did not plan to do anything with what I've learned then. After a few weeks though, I came to the conclusion I could just as well give participating in GSoC a try, and went over the list of mentoring organizations. Since Wikimedia Foundation had a couple of nice PHP projects, and I was interested in it anyway, I had a good look at the proposed project list. A proposal to fix up Semantic Layers, a mapping extension using OpenLayers with Semantic Capabilities, caught my attention. I contacted the person who posted this idea (which was Yaron), and got some enthusiastic feedback. I got accepted for this project [1], which was the start of my first developer involvement in MediaWiki.

In May and June, the first 2 'coding period' months of GSoC, I familiarized myself with the involved technologies, including MediaWiki, Semantic MediaWiki (SMW), Semantic Layers (SL) and Semantic Google Maps (SGM). After starting off trying to modify and fix up SL, me and Yaron decided it was better to start from scratch, and build a general mapping extension that supported both Google Maps and OpenLayers. The name for this new extension would be Semantic Maps (SM), which I developed further during that period.

In July and August, the second half of GSoC, I decided to create a separate 'Maps' extension, on top of Semantic Maps, instead of only SM, after an awesome suggestion by Sergey Chernyshev. In this period, I completed the geocoding functionality and the display_point, result format and form input support for Google Maps, Yahoo! Maps and OpenLayers. This allowed people to easily display maps with both coordinates and addresses, then aggregate and filter this information semantically, and be able to insert new coordinates or edit them easily via form interfaces. In this period I released the first version of both Maps and Semantic Maps, making the SGM, Google Geocoder and SL extensions obsolete. Some other versions also followed. Version 0.3 was released just before the code submission deadline of GSoC, and was the last version included in the submission.

September and October where pretty occupied for me, so I had little time to do MW work. I got aware of an effort to get mapping onto Wikipedia, by using OpenLayers and OpenStreetMap, and proposed Maps for this purpose, since it would offer many advantages over extensions orientated to specific mapping services. I was only able to release version 0.3.4 of Maps and Semantic Maps, which nevertheless included a lot of important refactoring with as goal to make a real general mapping platform of Maps. Soon after this release, I gave a presentation titled Semantic Mapping with MediaWiki in Gent, demonstrating the usage of both Maps and SM. I also create and committed an aliasing system for semantic result formats in SMW, which is now used by Semantic Maps.

In November I released version 0.4 of Maps and SM, a very important milestone. Some big new features such as a function to display maps without any markers, smart geocoding and an OSM service, where added. The 'under the hood' changes where even more important, since they where the last steps in making Maps and Semantic Maps completely modular, for both mapping services and functionality. For a complete list of changes to Maps in 0.4, see the log. On 7 and 8 November I attended Semantic MediaWiki Camp (SMWC) 2009 in Germany [2], where I gave a presentation about the usage of Maps and Semantic Maps. I attended most talks, including several by Yaron (who I finally got to meet), Markus and Denny, the organizes of the event. In the middle of the month I released 2 minor updates to Maps and Semantic Maps with as main goal to increase stability and address some important issues. I also released a screencast demonstrating how to use the display_map parser function of Maps.

In December I released a new extension, Validator[3], which facilitates different aspects of parameters handling for other extensions. On the same day I also released Maps and Semantic Maps 0.5, both using Validator to do part of their parameter validation, defaulting and error reporting. These releases also included a lot of important refactoring and some important new features, such as static map support and support for Yarons new Special:Ask page's parameter handling to the query printers. Together with writing Maps 0.5, I also did a much needed update of the developer docs, and created a new screencast covering the usage of the display_point parser function. Later in the month, I released Validator 0.2, which mainly focused on list types and output formats. Again, Maps and SM has a release using this new version on the same day. These 0.5.1 releases included several minor new features and 2 small bug fixes, as well as some code clean-up of the static map support.

In January I released a minor new version of Maps and Semantic Maps, with version number 0.5.2. This update mainly focuses on bug fixes and stability, but introduce some new features and code improvements.

In the beginning of February I gave a talk titled "Semantic Mapping with Mediawiki" at the Zebrastraat in Gent, Belgium, introducing the audience to Mediawiki and Semantic Mediawiki, followed by a walk through of how Maps and Semantic Maps can be used. I also released Maps and Semantic Maps 0.5.3, which like the previous update mainly focuses on bug fixes and stability. Later this month I started working for Wikimedia Foundation on the Storyboard extension and on Semantic MediaWiki for the Karlsruhe Institute of Technology.

In March, I released Maps and Semantic Maps 0.5.4 and 0.5.5, as well as Validator 0.2.2. I also created a small extension to Maps titled "UK geocoding for Maps" for Neill Mitchell at Prescient Software Ltd. Furthermore I created two command line scripts to import and parse all pages from a super category on a remote wiki as my first project for WikiWorks, which I later upgraded to an extension with GUI.

In May I released Maps and Semantic Maps 0.6 together with Validator 0.3. I also helped with the Semantic MediaWiki 1.5.1 release and entered the top 5 all time SMW comitters. And even more awesome, I released a new extension, awesomeness, making your wiki more awesome, seriously! Near the end of the month I started working on my GSoC project.

In June I entered the top 20 all time MediaWiki comitters and became an official WikiWorks consultant. I released Maps and Semantic Maps 0.6.1, 0.6.2 and 0.6.3, as well as Validator 0.3.1, 0.3.2 and 0.3.3. I then focused on increasing the stability of the 0.6.x branch of the mapping extensions and my Google Summer of Code project.

In July I released Maps and Semantic Maps 0.6.4 and 0.6.5 as well as Validator 0.3.4 and 0.3.5[4][5]. I also attended Wikimania 2010, where I gave 2 talks. In this month I spend most of my time working on MediaWiki deployment.

In August I successfully finished my GSoC project [6] and released Maps and Semantic Maps 0.6.6[7]. I also helped releasing SMW 1.5.2.

In September I attended SMWCon fall 2010 in Amsterdam where I gave a presentation about the mapping extensions.

In October I released Validator 0.4, rewritten from ground up to be more extendible and provide the features needed for Maps and Semantic Maps. This went together with the 0.7 release of these extensions [8], which added tag extension support to all the parser hooks of Maps and better validation and error handling via the new Validator. I released Maps and Semantic Maps 0.7.1 [9] and 0.7.2 [10], which as big new feature the long awaited images-as-layers functionality for OpenLayers a week later. I also added strict comparators to SMW and rewrote the comparator handling. Not to forget, I entered the top 10 of all time MediaWiki comitters :)

In November I released Semantic MediaWiki 1.5.3[11] as well as a new version of Maps and Semantic Maps (0.7.3) featuring KML export [12].

In December I created two new extensions for Texas Instruments as WikiWorks consultant [13]. The first one, Push, allows pushing page content to other wikis. This is particular useful for combinations between private and public wikis. The second one, Live Translate uses the Google Translate API to live translate wiki pages, and also allows for defining a dictionary of special words for which you provide translations, which will then be ignored by Google Translate. I also released Semantic MediaWiki 1.5.4 [14], which fixes a number of issues caused by changes earlier in the 1.5.x series. At the end of the month I created the SubPageList extension and added "describe", a parser hook to auto-document parser hooks, to Validator while being at 27c3 in Berlin.

In January I released important updates for Push and Live Translate, and created new releases for Maps, Semantic Maps, Validator and SubPageList. I also made several bugfixes to Semantic MediaWiki and other extensions. During the second part of the month I mainly focused on setting up some wikis to get a better grip on actual usage of MediaWiki and extensions. Most notable here was using External Data and Semantic Internal Objects to aggregate data from other wikis onto hackerspaces.be.

In February I found a one-line fix to a year old query-refresh issue in SMW and released SMW 1.5.6. I also released SRF 1.5.3 [15] with a new tagcloud format written by me, some improvements I made to the gallery format and other changes by Yaron. I released a small new extension titled IncludeWP [16] that enables you to include cleaned-up content from other MediaWiki wikis into articles on your wiki.

In March I did most of the work for Maps and Semantic Maps 0.8, including a full rewrite of all JavaScript and some important refactoring of PHP as well. I also wrote up the basis for the PAMELA extension.

In June I did work on Semantic MediaWiki 1.6 [19] and made various improvements and additions to Semantic Result Formats. I added support for multiple translation services to Live Translate, with an implementation of Microsoft Translate, and released version 1.1 of the extension [20].

In July I resumed doing work for the WMF, starting with modifying the UploadWizard to make it more suitable for the WikiLovesMonuments project. I also implemented generic KML/KMZ support for Google Maps v3 in the Maps extension and created a mapsdoc parser hook to auto-generate mapping service specific parameter documentation (making use of Validator). Near the end of July I released Semantic MediaWiki 1.6, Maps and Semantic Maps 1.0, Semantic Watchlist 0.1, Semantic result Formats 1.6, Validator 0.4.9, SubPageList and created a new version of Semantic Bundle.

In August I improved the Live Translate extension by adding local caching capabilities to it [21] and made Semantic Signup work with recent versions of MediaWiki and Semantic MediaWiki. I also started work in Survey, a new MediaWiki extension that allows administrators to create simple surveys that wiki users then get. Through the month I continued to support the WikiLovesMonuments modifications for the Upload Wizard [22].

In September I released the first version of Survey [23] and also released Maps version 1.0.3 [24]. And I attended SMWCon 2011 Fall, which was in Berlin, at which I gave several presentations, one together with Yaron Koren and one with Markus Krötzsch.

In November I created the Semantic Image Input extension and added an image preview to the Semantic Forms upload field. I also did work on Semantic Result Formats And Semantic MediaWiki to have general aggregateable result printers [26]. Near the end of the month I started work on the Reviews extension.

In January I attended the San Francisco hackaton where I did some hacking on the mobile Wikipedia application and visited the Wikimedia office to discuss my ongoing work on the Education Program extension with the people from the Global Education Program.

In February I mainly worked on the Education Program extension but also made the DBDataObject class ready for core usage. On FOSDEM I gave a lightning talk about Semantic MediaWiki (video, slides).

In March I moved to Berlin for at least a year to work on the awesomeWikiData project for Wikimedia Germany.

In April I attended SMWCon Spring 2012 in Carlsbad, California where I gave some talks, including one on Wikidata.

During 2013 and 2014 I switched my focus away from MediaWiki, in part due to the Wikidata project, and in part due to the realization that complete focus on a particular framework is not good. Very little code I write nowadays depends on, or knows about, MediaWiki, even though a lot of it is used in conjunction with MediaWiki.