{"id":896,"date":"2010-07-15T00:28:46","date_gmt":"2010-07-14T23:28:46","guid":{"rendered":"https:\/\/www.entropywins.wtf\/blog\/?p=896"},"modified":"2010-07-15T00:28:46","modified_gmt":"2010-07-14T23:28:46","slug":"mediawiki-deployment","status":"publish","type":"post","link":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/15\/mediawiki-deployment\/","title":{"rendered":"MediaWiki deployment"},"content":{"rendered":"<p>A lot has happened in my <a href=\"https:\/\/secure.wikimedia.org\/wikipedia\/en\/wiki\/Google_Summer_of_Code\">Google Summer of Code<\/a> project since my <a href=\"https:\/\/www.entropywins.wtf\/blog\/2010\/06\/10\/extension-management-platform\/\">last blog post about it<\/a>, so here is another update. I did give a short presentation about it <a href=\"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/13\/wikimania-2010\/\">at Wikimania 2010<\/a>, but that did not go very well unfortunately. You can <a href=\"http:\/\/wiki.bn2vs.com\/File:2010_07_07_MediaWiki_Deployment.odp\">get the slides<\/a> though.<\/p>\n<p>I changed the goals of my project again, from building an extension management platform build onto the <a href=\"http:\/\/smwforum.ontoprise.com\/smwforum\/index.php\/Help:Deployment_Framework\">Deployment Framework<\/a> and <a href=\"http:\/\/www.mediawiki.org\/wiki\/Extension:Configure\">Configure<\/a> to creating a more general Deployment base on which the new MediaWiki installer and extension management can run. The reason for this change is that it makes a lot more sense from a technical perspective. The work done by the MediaWiki installer, and the still-to-be-created realized extension management is very similar after all. Because of this change I renamed the project from Extension Management Platform to <a href=\"http:\/\/www.mediawiki.org\/wiki\/Deployment\">Deployment<\/a>.<\/p>\n<p><strong>Goals<\/strong><\/p>\n<p>So let&#8217;s have a look at what my idea of the end product is, from an  users perspective. There would be 4 new special pages with the extension  management functionality, largely based on what you can do in  WordPress:<\/p>\n<ul>\n<li>Special:Install: On this page administrators can browse and search through extensions  that are in the connected repository. This can be very basic to start  with, but should eventually include filtering on categories and  keywords, popularity, rating, ect.<\/li>\n<li>Special:Update: Checks for updates for both core and extensions, and shows update  options for individual components, or the whole deal.<\/li>\n<li>Special:Extensions: A page listing all installed extensions, with options to uninstall,  disable and upgrade them, as well as links to documentation, ect. Once  MediaWiki has a configuration database, links to configure the  extensions can also be included here.<\/li>\n<li>Special:Dashboard: A dashboard for administrators containing update information and fancy  stuff like statistics.<\/li>\n<\/ul>\n<p>The new MediaWiki installer would also have support for installation extension on initial run, and be able to do a complete core upgrade, instead of just a database update as is now the case.<\/p>\n<p><strong>Technical <\/strong><\/p>\n<p>This is a rough draft of how I see the structure of the end product, and where  the code is coming from:<\/p>\n<p><a href=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/800px-Mwdeployment.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-897\" title=\"MediaWiki deployment\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/800px-Mwdeployment.jpg\" alt=\"MediaWiki deployment\" width=\"800\" height=\"592\" \/><\/a><\/p>\n<p>I&#8217;m in search of a quick and easy diagram tool to make a cleaner and more elaborate version \ud83d\ude42<\/p>\n<h4>Stuff we  already have<\/h4>\n<p>The underneath items have been completed, or require only a little work.<\/p>\n<ul>\n<li>Web interface for the core installer.<\/li>\n<li>Database abstraction for the installer.<\/li>\n<li>CLI interface for the core installer? (in progress)<\/li>\n<li>Core installer class with database install and upgrade capabilities.<\/li>\n<li>Filesystem abstraction (I ported this from WP (<a rel=\"nofollow\" href=\"http:\/\/svn.wikimedia.org\/viewvc\/mediawiki\/trunk\/extensions\/Deployment\/includes\/\">see code here<\/a>), mostly done,  no testing done yet though).<\/li>\n<\/ul>\n<h4>Stuff  that&#8217;s still needed<\/h4>\n<ul>\n<li>Everything related to detecting updates, fetching packages and  instructions, ect. The DF has some nice stuff that can be used here, so  does WP. It&#8217;s be nice to also have an abstraction layer here, so  multiple mechanisms can be used here. An extension repository also needs  to be set up, preferably on mediawiki.org.<\/li>\n<li>Filesystem support for the installer, so it can be used to upgrade  MW by clicking a button and then just fetching the new release and doing  all the work. This can be achieved by creating the generic installer  class and making the core installer inherit from it.<\/li>\n<li>Extension installer class and the special pages that provide an  interface to it.<\/li>\n<li>Extension support for the core installer: installation and upgrade.  This can be done by re-using the code of the special pages.<\/li>\n<li>CLI support for extension management<\/li>\n<\/ul>\n<h3>Work done<\/h3>\n<p>This is a list of the work I have so far done during this project, oldest first.<\/p>\n<ul>\n<li>I researched all involved components and created the above draft.<\/li>\n<li>I ported the WordPress filesystem abstraction classes (base class, FTP and direct  one).<\/li>\n<li>I got core commit access (yay!), so I now can make changes to the new installer.<\/li>\n<\/ul>\n<h3>Roadmap<\/h3>\n<p>A rather loose planning of what I&#8217;m planning to do next:<\/p>\n<ul>\n<li>Finish porting SSH2 filesystem abstraction class.<\/li>\n<li>Figure out how to make the whole system secure.<\/li>\n<li>Create installer class, adapt to core installer to work with this,  and also create the extension installer class.<\/li>\n<li>Take care of the fetching stuff.<\/li>\n<li>Create the interfaces.<\/li>\n<\/ul>\n<p>I&#8217;ll update <a href=\"http:\/\/www.mediawiki.org\/wiki\/Deployment\">the deployment wiki page<\/a> as I make progress, but probably won&#8217;t make a lot of blog posts about it, as I want to focus on the work itself. Suggestions are welcome on <a href=\"http:\/\/www.mediawiki.org\/wiki\/Talk:Deployment\">the discussion page<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A lot has happened in my Google Summer of Code project since my last blog post about it, so here&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[7],"tags":[68,74,92,115,116,132,156,181,195,197,285],"class_list":["post-896","post","type-post","status-publish","format-standard","hentry","category-programming","tag-crappy-diagram","tag-deployment","tag-extension-management","tag-gsoc","tag-gsoc-2010","tag-installer","tag-mediawiki","tag-open-source","tag-php","tag-planet-wikimedia","tag-wikimedia"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>MediaWiki deployment - Blog of Jeroen De Dauw<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/15\/mediawiki-deployment\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MediaWiki deployment - Blog of Jeroen De Dauw\" \/>\n<meta property=\"og:description\" content=\"A lot has happened in my Google Summer of Code project since my last blog post about it, so here&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/15\/mediawiki-deployment\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog of Jeroen De Dauw\" \/>\n<meta property=\"article:published_time\" content=\"2010-07-14T23:28:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/800px-Mwdeployment.jpg\" \/>\n<meta name=\"author\" content=\"Jeroen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/JeroenDeDauw\" \/>\n<meta name=\"twitter:site\" content=\"@JeroenDeDauw\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeroen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/07\\\/15\\\/mediawiki-deployment\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/07\\\/15\\\/mediawiki-deployment\\\/\"},\"author\":{\"name\":\"Jeroen\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"headline\":\"MediaWiki deployment\",\"datePublished\":\"2010-07-14T23:28:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/07\\\/15\\\/mediawiki-deployment\\\/\"},\"wordCount\":724,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"image\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/07\\\/15\\\/mediawiki-deployment\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/07\\\/800px-Mwdeployment.jpg\",\"keywords\":[\"Crappy diagram\",\"Deployment\",\"Extension management\",\"GSoC\",\"GSoC 2010\",\"Installer\",\"MediaWiki\",\"Open Source\",\"PHP\",\"Planet Wikimedia\",\"Wikimedia\"],\"articleSection\":[\"Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/07\\\/15\\\/mediawiki-deployment\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/07\\\/15\\\/mediawiki-deployment\\\/\",\"url\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/07\\\/15\\\/mediawiki-deployment\\\/\",\"name\":\"MediaWiki deployment - Blog of Jeroen De Dauw\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/07\\\/15\\\/mediawiki-deployment\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/07\\\/15\\\/mediawiki-deployment\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/07\\\/800px-Mwdeployment.jpg\",\"datePublished\":\"2010-07-14T23:28:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/07\\\/15\\\/mediawiki-deployment\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/07\\\/15\\\/mediawiki-deployment\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/07\\\/15\\\/mediawiki-deployment\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/07\\\/800px-Mwdeployment.jpg\",\"contentUrl\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/07\\\/800px-Mwdeployment.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2010\\\/07\\\/15\\\/mediawiki-deployment\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MediaWiki deployment\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/\",\"name\":\"Entropy Wins\",\"description\":\"A blog on Software Architecture, Design and Craftsmanship\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\",\"name\":\"Jeroen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"caption\":\"Jeroen\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/jeroendedauw\\\/\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/JeroenDeDauw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"MediaWiki deployment - Blog of Jeroen De Dauw","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/15\/mediawiki-deployment\/","og_locale":"en_US","og_type":"article","og_title":"MediaWiki deployment - Blog of Jeroen De Dauw","og_description":"A lot has happened in my Google Summer of Code project since my last blog post about it, so here&hellip;","og_url":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/15\/mediawiki-deployment\/","og_site_name":"Blog of Jeroen De Dauw","article_published_time":"2010-07-14T23:28:46+00:00","og_image":[{"url":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/800px-Mwdeployment.jpg","type":"","width":"","height":""}],"author":"Jeroen","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/JeroenDeDauw","twitter_site":"@JeroenDeDauw","twitter_misc":{"Written by":"Jeroen","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/15\/mediawiki-deployment\/#article","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/15\/mediawiki-deployment\/"},"author":{"name":"Jeroen","@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"headline":"MediaWiki deployment","datePublished":"2010-07-14T23:28:46+00:00","mainEntityOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/15\/mediawiki-deployment\/"},"wordCount":724,"commentCount":0,"publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"image":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/15\/mediawiki-deployment\/#primaryimage"},"thumbnailUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/800px-Mwdeployment.jpg","keywords":["Crappy diagram","Deployment","Extension management","GSoC","GSoC 2010","Installer","MediaWiki","Open Source","PHP","Planet Wikimedia","Wikimedia"],"articleSection":["Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.entropywins.wtf\/blog\/2010\/07\/15\/mediawiki-deployment\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/15\/mediawiki-deployment\/","url":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/15\/mediawiki-deployment\/","name":"MediaWiki deployment - Blog of Jeroen De Dauw","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/15\/mediawiki-deployment\/#primaryimage"},"image":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/15\/mediawiki-deployment\/#primaryimage"},"thumbnailUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/800px-Mwdeployment.jpg","datePublished":"2010-07-14T23:28:46+00:00","breadcrumb":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/15\/mediawiki-deployment\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.entropywins.wtf\/blog\/2010\/07\/15\/mediawiki-deployment\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/15\/mediawiki-deployment\/#primaryimage","url":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/800px-Mwdeployment.jpg","contentUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/800px-Mwdeployment.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/15\/mediawiki-deployment\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.entropywins.wtf\/blog\/"},{"@type":"ListItem","position":2,"name":"MediaWiki deployment"}]},{"@type":"WebSite","@id":"https:\/\/www.entropywins.wtf\/blog\/#website","url":"https:\/\/www.entropywins.wtf\/blog\/","name":"Entropy Wins","description":"A blog on Software Architecture, Design and Craftsmanship","publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.entropywins.wtf\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7","name":"Jeroen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","caption":"Jeroen"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g"},"sameAs":["https:\/\/www.linkedin.com\/in\/jeroendedauw\/","https:\/\/x.com\/https:\/\/twitter.com\/JeroenDeDauw"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p74TBF-es","jetpack-related-posts":[{"id":925,"url":"https:\/\/www.entropywins.wtf\/blog\/2010\/07\/22\/mediawiki-deployment-modifying-the-new-installer\/","url_meta":{"origin":896,"position":0},"title":"MediaWiki Deployment: Modifying the new installer","author":"Jeroen","date":"2010-07-22","format":false,"excerpt":"I got a new diagram!!!1!11!! It's based on my previous one, but slightly more elaborate, and a lot less messy, as I now used Dia to create it :) Legend: Striped lines: Existing components where code will be copied from, or based upon. Full lines: Components of the complete deployment\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"MediaWiki deployment diagram","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/MwDeployment-1024x389.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/MwDeployment-1024x389.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/MwDeployment-1024x389.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/07\/MwDeployment-1024x389.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":962,"url":"https:\/\/www.entropywins.wtf\/blog\/2010\/08\/20\/end-of-google-summer-of-code-2010\/","url_meta":{"origin":896,"position":1},"title":"End of Google Summer of Code 2010","author":"Jeroen","date":"2010-08-20","format":false,"excerpt":"As Google Summer of Code (GSoC) 2010 has ended, I'm writing this blog post to outline what I've done during the coding period and what the results are. Thanks go to the Wikimedia Foundation and Google for providing the opportunity to do this project, Brion Vibber, who mentored me, and\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"Google Summer of Code 2010","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/08\/2010_NoURL_300x267px.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":941,"url":"https:\/\/www.entropywins.wtf\/blog\/2010\/08\/07\/distribution-extension-for-mediawiki\/","url_meta":{"origin":896,"position":2},"title":"Distribution extension for MediaWiki","author":"Jeroen","date":"2010-08-07","format":false,"excerpt":"With only 2 days till the suggested Google Summer of Code 'pencils down' date, and a week longer until the firm one, I'm using my remaining time to get some basic functionality working for my GSoC project. I've started creating a new extension called Distribution that will provide an API\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":852,"url":"https:\/\/www.entropywins.wtf\/blog\/2010\/06\/10\/extension-management-platform\/","url_meta":{"origin":896,"position":3},"title":"Extension management platform","author":"Jeroen","date":"2010-06-10","format":false,"excerpt":"After doing a pile of research on how to best create an extension management platform for MediaWiki as my Google Summer of Code project, I realized that a lot of the work that I wanted to do was already done in some form or another, and decided to somewhat augment\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":945,"url":"https:\/\/www.entropywins.wtf\/blog\/2010\/08\/12\/visible-awesomeness-at-last\/","url_meta":{"origin":896,"position":4},"title":"Visible awesomeness at last","author":"Jeroen","date":"2010-08-12","format":false,"excerpt":"Since my last blog post about my GSoC project, which aims to bring more awesome deployment capabilities to MediaWiki, I've been putting my time into both the Distribution and Deployment extensions. I was pleased to find a bunch of stuff was easier to do then I had imagined, and now\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"Planned architecture for the initial versions of the MediaWiki deployment extensions","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/08\/MedaWiki-deployment-initial.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/08\/MedaWiki-deployment-initial.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/08\/MedaWiki-deployment-initial.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/08\/MedaWiki-deployment-initial.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":957,"url":"https:\/\/www.entropywins.wtf\/blog\/2010\/08\/14\/specialextensions-taking-form\/","url_meta":{"origin":896,"position":5},"title":"Special:Extensions taking form","author":"Jeroen","date":"2010-08-14","format":false,"excerpt":"Just a few quick screenshots of Special:Extensions, on which I've been working today. The first screenshot shows Special:Extensions page displaying a list of all the extensions I have installed on my local wiki: As you can see, you can now filter on extension type with the control right below the\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"Special:Extensions page showing all installed extensions","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/08\/mediawiki-special-extensions.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/08\/mediawiki-special-extensions.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/08\/mediawiki-special-extensions.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/08\/mediawiki-special-extensions.png?resize=700%2C400&ssl=1 2x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/896","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/comments?post=896"}],"version-history":[{"count":0,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/896\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/media?parent=896"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/categories?post=896"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/tags?post=896"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}