[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:20.51,Default,,0000,0000,0000,,{\i1}36C3 preroll music{\i0} Dialogue: 0,0:00:20.51,0:00:24.75,Default,,0000,0000,0000,,Daniel: Good morning! I'm glad you all\Nmade it here this early on the last day. I Dialogue: 0,0:00:24.75,0:00:32.44,Default,,0000,0000,0000,,know it can can't be easy wasn't easy for\Nme I have to warn you that the way I Dialogue: 0,0:00:32.44,0:00:36.16,Default,,0000,0000,0000,,prepared for this song is a bit\Nexperimental. I didn't make a slide set I Dialogue: 0,0:00:36.16,0:00:44.56,Default,,0000,0000,0000,,just made a mind map and I'll just click\Nthrough it while I talk to you. So, Dialogue: 0,0:00:44.56,0:00:51.18,Default,,0000,0000,0000,,this talk is about modernizing Wikipedia\Nas you probably have noticed visiting, Dialogue: 0,0:00:51.18,0:00:58.50,Default,,0000,0000,0000,,Wikipedia can feel a bit like visiting a\Nwebsite from 10-15 years ago but before I Dialogue: 0,0:00:58.50,0:01:05.28,Default,,0000,0000,0000,,talk about any problems or things to\Nimprove, I first want to revisit that the Dialogue: 0,0:01:05.28,0:01:11.62,Default,,0000,0000,0000,,software and the the infrastructure we\Nbuild around it has been running Wikipedia Dialogue: 0,0:01:11.62,0:01:20.16,Default,,0000,0000,0000,,and its sister sites for the last... well\Nnearly 19 years now and it's extremely Dialogue: 0,0:01:20.16,0:01:32.20,Default,,0000,0000,0000,,successful. We serve 17 billion page\Nviews a month, yes? Dialogue: 0,0:01:32.20,0:01:40.87,Default,,0000,0000,0000,,Person in the audience: Could you make it\Nlouder or speak up and also make the image Dialogue: 0,0:01:40.87,0:01:42.87,Default,,0000,0000,0000,,bigger? Dialogue: 0,0:01:42.87,0:01:43.87,Default,,0000,0000,0000,,{\i1}inaudible dialogue{\i0} Dialogue: 0,0:01:43.87,0:01:45.87,Default,,0000,0000,0000,,Daniel: Is this better? Like if I speak up\NI will loose my voice in 10 minutes it's Dialogue: 0,0:01:45.87,0:01:55.72,Default,,0000,0000,0000,,already in it, no it's fine. We have\Ntechnology for this. I can... the light Dialogue: 0,0:01:55.72,0:02:05.49,Default,,0000,0000,0000,,doesn't help, yeah the contrast could be\Nbetter. Is it better like this? Okay cool. Dialogue: 0,0:02:05.49,0:02:13.84,Default,,0000,0000,0000,,All right so yeah we are serving 17\Nbillion page views a month, which is quite Dialogue: 0,0:02:13.84,0:02:19.56,Default,,0000,0000,0000,,a lot. Wikipedia exists in about 100\Nlanguages. If you attended the talk about Dialogue: 0,0:02:19.56,0:02:24.25,Default,,0000,0000,0000,,the Wikimedia infrastructure yesterday, we\Ntalked about 300 languages. We actually Dialogue: 0,0:02:24.25,0:02:29.99,Default,,0000,0000,0000,,support 300 languages for localization but\Nwe have Wikipedia in about 100, if I'm not Dialogue: 0,0:02:29.99,0:02:38.69,Default,,0000,0000,0000,,completely off. I find this picture quite\Nfascinating. This is a visualization of Dialogue: 0,0:02:38.69,0:02:43.72,Default,,0000,0000,0000,,all the places in the world that are\Ndescribed on Wikipedia and sister projects Dialogue: 0,0:02:43.72,0:02:49.32,Default,,0000,0000,0000,,and I find this quite impressive although\Nit's also a nice display of cultural bias Dialogue: 0,0:02:49.32,0:03:00.79,Default,,0000,0000,0000,,of course. We, that is Wikimedia\NFoundation, run about 900 to a 1000 wikis Dialogue: 0,0:03:00.79,0:03:06.68,Default,,0000,0000,0000,,depending on how you count, but there are\Nmany many more media wiki installations Dialogue: 0,0:03:06.68,0:03:11.46,Default,,0000,0000,0000,,out there, some of them big and many many\Nof them small. We have actually no idea Dialogue: 0,0:03:11.46,0:03:17.15,Default,,0000,0000,0000,,how many small instances there are. So\Nit's a very powerful very flexible and Dialogue: 0,0:03:17.15,0:03:23.73,Default,,0000,0000,0000,,versatile piece of software but, you know, but\Nsometimes it can feel like... you can do a Dialogue: 0,0:03:23.73,0:03:28.33,Default,,0000,0000,0000,,lot of things with it, right, but\Nsometimes it feels like it's a bit Dialogue: 0,0:03:28.33,0:03:42.18,Default,,0000,0000,0000,,overburdened and maybe you should look at\Nimproving the foundations. So one of the Dialogue: 0,0:03:42.18,0:03:47.83,Default,,0000,0000,0000,,things that make MediaWiki great but also\Nsometimes hard to use is that kind of Dialogue: 0,0:03:47.83,0:03:52.61,Default,,0000,0000,0000,,everything is text, everything is markup,\Neverything is done with with wikitext, Dialogue: 0,0:03:52.61,0:04:02.53,Default,,0000,0000,0000,,which has grown in complexity over the\Nyears so if you look at the autonomy of a Dialogue: 0,0:04:02.53,0:04:09.16,Default,,0000,0000,0000,,wiki page it can be a bit daunting. You\Nhave different syntax for markup at Dialogue: 0,0:04:09.16,0:04:16.15,Default,,0000,0000,0000,,different kinds of transclusion or\Ntemplates and media and some things Dialogue: 0,0:04:16.15,0:04:21.74,Default,,0000,0000,0000,,actually, you know, get displayed in\Nplace, some things show up in a completely Dialogue: 0,0:04:21.74,0:04:26.34,Default,,0000,0000,0000,,different place on the page it can be\Nrather confusing and daunting for Dialogue: 0,0:04:26.34,0:04:31.72,Default,,0000,0000,0000,,newcomers. And also things like having a\Nconversation just talking to people like, Dialogue: 0,0:04:31.72,0:04:35.54,Default,,0000,0000,0000,,you know, having a conversation thread\Nlooks like this. You open the page you Dialogue: 0,0:04:35.54,0:04:40.51,Default,,0000,0000,0000,,look through the markup and you indent to\Nmake a conversation thread and then you Dialogue: 0,0:04:40.51,0:04:43.48,Default,,0000,0000,0000,,get confused about the indenting and\Nsomeone messes with the formatting and Dialogue: 0,0:04:43.48,0:04:52.12,Default,,0000,0000,0000,,it's all excellent. There have been many\Nattempts over the years to improve the Dialogue: 0,0:04:52.12,0:05:00.29,Default,,0000,0000,0000,,situation, we have things like echo which\Nnotifies you, for instance when someone Dialogue: 0,0:05:00.29,0:05:09.13,Default,,0000,0000,0000,,mentions your name or someone... It is\Nalso used to to welcome people and do this Dialogue: 0,0:05:09.13,0:05:12.40,Default,,0000,0000,0000,,kind of achievement unlocked\Nnotifications: hey, you did your first Dialogue: 0,0:05:12.40,0:05:19.90,Default,,0000,0000,0000,,edit, this is great welcome! To make\Npeople a bit more engaged with the system Dialogue: 0,0:05:19.90,0:05:24.38,Default,,0000,0000,0000,,but it's really mostly improvements around\Nthe fringes. We have had a system called Dialogue: 0,0:05:24.38,0:05:31.35,Default,,0000,0000,0000,,Flow for awhile to improve the way\Nconversations work. So you have more like Dialogue: 0,0:05:31.35,0:05:37.96,Default,,0000,0000,0000,,a thread structure that the software\Nactually knows about but then there are Dialogue: 0,0:05:37.96,0:05:42.16,Default,,0000,0000,0000,,many, well quite a few people who have\Nbeen around for a while that are very used Dialogue: 0,0:05:42.16,0:05:46.90,Default,,0000,0000,0000,,to the manual system and also there's a\Nlot of tools to support this manual system Dialogue: 0,0:05:46.90,0:05:52.78,Default,,0000,0000,0000,,which of course are incompatible with\Nmaking things more modern. So we use this Dialogue: 0,0:05:52.78,0:05:56.25,Default,,0000,0000,0000,,for instance on MediaWiki.org which is a\Nsite which is basically a self Dialogue: 0,0:05:56.25,0:06:03.00,Default,,0000,0000,0000,,documentation site of MediaWiki but on\Nmost Wikipedia this is not enabled or at Dialogue: 0,0:06:03.00,0:06:14.53,Default,,0000,0000,0000,,least not used for default everywhere. The\Nbiggest attempt to move away from the text Dialogue: 0,0:06:14.53,0:06:23.05,Default,,0000,0000,0000,,only approach is Wikidata, which we\Nstarted in 2012. The idea of Wikidata of Dialogue: 0,0:06:23.05,0:06:29.58,Default,,0000,0000,0000,,course, if you didn't attend many great\Ntalks we had about it here over of the Dialogue: 0,0:06:29.58,0:06:36.47,Default,,0000,0000,0000,,course of the Congress, is a way to\Nbasically model the world using structured Dialogue: 0,0:06:36.47,0:06:45.47,Default,,0000,0000,0000,,data, using a semantic approach instead of\Nnatural language which has its own Dialogue: 0,0:06:45.47,0:06:50.74,Default,,0000,0000,0000,,complexities but at least it's a way to\Nrepresent the knowledge of the world in a Dialogue: 0,0:06:50.74,0:06:56.79,Default,,0000,0000,0000,,way that machines can understand. So this\Nwould be an alternative to wiki text but Dialogue: 0,0:06:56.79,0:07:09.39,Default,,0000,0000,0000,,still the vast majority of things\Nespecially on Wikipedia are just markup. Dialogue: 0,0:07:09.39,0:07:13.80,Default,,0000,0000,0000,,And this markup is pretty powerful and\Nthere's lots of ways to extend it and to Dialogue: 0,0:07:13.80,0:07:21.05,Default,,0000,0000,0000,,do things with it. So a lot of things on\NMediaWiki are just DIY, just do it Dialogue: 0,0:07:21.05,0:07:29.25,Default,,0000,0000,0000,,yourself. Templates are a great example of\Nthis. Infoboxes of course, the nice blue Dialogue: 0,0:07:29.25,0:07:34.73,Default,,0000,0000,0000,,boxes here on the right side of pages, are\Ndone using templates but these templates Dialogue: 0,0:07:34.73,0:07:39.09,Default,,0000,0000,0000,,are just for formatting, there is not data\Nprocessing there's no the data base or Dialogue: 0,0:07:39.09,0:07:47.53,Default,,0000,0000,0000,,structured data backing them. It's just\Nbasically, you know, it's still just Dialogue: 0,0:07:47.53,0:07:56.63,Default,,0000,0000,0000,,markup. It's still... you have a predefined\Nlayout but you're still feeding a text not Dialogue: 0,0:07:56.63,0:08:04.52,Default,,0000,0000,0000,,data. You have parameters but the values\Nof the parameters are still again maybe Dialogue: 0,0:08:04.52,0:08:11.61,Default,,0000,0000,0000,,templates or links or you have markup in\Nthem, like you know HTML line breaks and Dialogue: 0,0:08:11.61,0:08:18.86,Default,,0000,0000,0000,,stuff. So it's kind of semi structured.\NAnd this of course is also used to do Dialogue: 0,0:08:18.86,0:08:24.10,Default,,0000,0000,0000,,things like workflow. The template... Oh\Nno, this was actually an infobox, wrong Dialogue: 0,0:08:24.10,0:08:34.23,Default,,0000,0000,0000,,picture, wrong capture. This is also used\Nto do workflows, so if a page on Wikipedia Dialogue: 0,0:08:34.23,0:08:39.79,Default,,0000,0000,0000,,gets nominated for deletion you put manual\Nput a template on the page that defines Dialogue: 0,0:08:39.79,0:08:44.87,Default,,0000,0000,0000,,why this is supposed to be deleted and\Nthen you have to go to a different page Dialogue: 0,0:08:44.87,0:08:49.39,Default,,0000,0000,0000,,and put a different template there, giving\Nmore explanation and this again is used Dialogue: 0,0:08:49.39,0:08:55.15,Default,,0000,0000,0000,,for discussion. It's a lot of structure\Ncreated by the community and maintained by Dialogue: 0,0:08:55.15,0:09:02.73,Default,,0000,0000,0000,,the community, using conventions and tools\Nbuilt on top of what is essentially just a Dialogue: 0,0:09:02.73,0:09:10.62,Default,,0000,0000,0000,,pile of markup. And because doing all this\Nmanually is kind of painful, only on there Dialogue: 0,0:09:10.62,0:09:17.36,Default,,0000,0000,0000,,we created a system to allow people to add\NJavaScript to the site, which is then Dialogue: 0,0:09:17.36,0:09:27.02,Default,,0000,0000,0000,,maintained on wiki pages by the community\Nand it can tweak and automate. But again, Dialogue: 0,0:09:27.02,0:09:30.59,Default,,0000,0000,0000,,it doesn't really have much to work with,\Nright? It basically messes with whatever Dialogue: 0,0:09:30.59,0:09:35.47,Default,,0000,0000,0000,,it can, it directly interacts with the DOM\Nof the page, whenever the layout of the Dialogue: 0,0:09:35.47,0:09:41.04,Default,,0000,0000,0000,,software changes, things break. So this is\Nnot great for for compatibility but it's Dialogue: 0,0:09:41.04,0:09:54.73,Default,,0000,0000,0000,,used a lot and it is very important for\Nthe community to have this power. Sorry, I Dialogue: 0,0:09:54.73,0:10:00.11,Default,,0000,0000,0000,,wish there was a better way to show these\Npictures. Okay, that's just to give you an Dialogue: 0,0:10:00.11,0:10:05.22,Default,,0000,0000,0000,,idea of what kind of thing is implemented\Nthat way and maintained by the community Dialogue: 0,0:10:05.22,0:10:10.19,Default,,0000,0000,0000,,on their site. One of the problems we have\Nwith that is: these are bound to a wiki Dialogue: 0,0:10:10.19,0:10:19.41,Default,,0000,0000,0000,,and I just told you that we run over 900\Nof these not over 9,000 and it would be Dialogue: 0,0:10:19.41,0:10:26.30,Default,,0000,0000,0000,,great if you could just share them between\Nwikis but we can't. And again, there have Dialogue: 0,0:10:26.30,0:10:30.79,Default,,0000,0000,0000,,been... we have been talking about it a\Nlot and it seems like it shouldn't be so Dialogue: 0,0:10:30.79,0:10:36.76,Default,,0000,0000,0000,,hard, but you kind of need to write these\Ntools differently, if you want to share Dialogue: 0,0:10:36.76,0:10:39.90,Default,,0000,0000,0000,,them across sites, because different sites\Nuse different conventions, they use Dialogue: 0,0:10:39.90,0:10:45.53,Default,,0000,0000,0000,,different templates. Then it just doesn't\Nwork and you actually have to write decent Dialogue: 0,0:10:45.53,0:10:50.97,Default,,0000,0000,0000,,software that uses internationalization if\Nyou want to use it across wikis. While Dialogue: 0,0:10:50.97,0:10:55.02,Default,,0000,0000,0000,,these are usually just you know one-off\Nhacks with everything hard-coded we would Dialogue: 0,0:10:55.02,0:10:58.45,Default,,0000,0000,0000,,have to put in place an\Ninternationalization system and it's Dialogue: 0,0:10:58.45,0:11:02.91,Default,,0000,0000,0000,,actually a lot of effort and there's a lot\Nof things that are actually unclear about Dialogue: 0,0:11:02.91,0:11:15.26,Default,,0000,0000,0000,,it. So, before I dive more deeply into the\Ndifferent things that will make it hard to Dialogue: 0,0:11:15.26,0:11:20.53,Default,,0000,0000,0000,,improve on the current situation and the\Nthings that we are doing to improve it do Dialogue: 0,0:11:20.53,0:11:27.31,Default,,0000,0000,0000,,we have any questions or do you have any\Nother - do you have any things you may Dialogue: 0,0:11:27.31,0:11:34.52,Default,,0000,0000,0000,,find particularly, well, annoying or\Nparticularly outdated, when interacting Dialogue: 0,0:11:34.52,0:11:40.92,Default,,0000,0000,0000,,with Wikipedia? Any thoughts on that?\NBeyond what I just said? Dialogue: 0,0:11:40.92,0:11:48.77,Default,,0000,0000,0000,,Microphone: The strict separation, just in\NWikipedia, between mobile layout and Dialogue: 0,0:11:48.77,0:11:54.26,Default,,0000,0000,0000,,desktop layout.\NDaniel: Yeah. So, actually having a Dialogue: 0,0:11:54.26,0:12:02.07,Default,,0000,0000,0000,,reactive layout system that would just\Nwork for mobile and desktop in the same Dialogue: 0,0:12:02.07,0:12:09.13,Default,,0000,0000,0000,,way and allowing the designers and UX\Nexperts, who work on the system to just do Dialogue: 0,0:12:09.13,0:12:15.18,Default,,0000,0000,0000,,this once and not two or maybe even three\Ntimes - because of course we also have Dialogue: 0,0:12:15.18,0:12:20.55,Default,,0000,0000,0000,,native applications for different\Nplatforms - would be great and it's Dialogue: 0,0:12:20.55,0:12:24.36,Default,,0000,0000,0000,,something that we're looking into at the\Nmoment. But it's not, you know , it's not Dialogue: 0,0:12:24.36,0:12:29.52,Default,,0000,0000,0000,,that easy we could build a completely new\Nsystem, that does this but then again you Dialogue: 0,0:12:29.52,0:12:33.25,Default,,0000,0000,0000,,would be telling people: "You can no\Nlonger use the old system", but now they Dialogue: 0,0:12:33.25,0:12:39.02,Default,,0000,0000,0000,,have build all these tools that rely on\Nhow the old system works and you have to Dialogue: 0,0:12:39.02,0:12:52.09,Default,,0000,0000,0000,,port all of this over so there's a lot of\Ninertia. Any other thoughts? Everyone is Dialogue: 0,0:12:52.09,0:13:03.72,Default,,0000,0000,0000,,still asleep that's excellent. So I can\Ncontinue. So, another thing that makes it Dialogue: 0,0:13:03.72,0:13:10.88,Default,,0000,0000,0000,,difficult to change how MediaWiki works or\Nto improve it is that we are trying to do Dialogue: 0,0:13:10.88,0:13:19.18,Default,,0000,0000,0000,,well to be at least two things at once: on\Nthe one hand we are running a top 5 Dialogue: 0,0:13:19.18,0:13:24.36,Default,,0000,0000,0000,,website and serving over 100,000 requests\Nper second using the system and you on the Dialogue: 0,0:13:24.36,0:13:30.54,Default,,0000,0000,0000,,other hand, at least until now, we have\Nalways made sure that you can just Dialogue: 0,0:13:30.54,0:13:33.80,Default,,0000,0000,0000,,download MediaWiki and install it on a\Nshared hosting platform you don't even Dialogue: 0,0:13:33.80,0:13:38.92,Default,,0000,0000,0000,,need root on the system, right? You don't\Neven need administrative privileges you Dialogue: 0,0:13:38.92,0:13:44.77,Default,,0000,0000,0000,,can just set it up and run it in your web\Nspace and it will work. And, having the Dialogue: 0,0:13:44.77,0:13:51.78,Default,,0000,0000,0000,,same piece of software do both, run in a\Nminimal environment and run at scale, is Dialogue: 0,0:13:51.78,0:13:55.04,Default,,0000,0000,0000,,rather difficult and it also means that\Nthere's a lot of things that we can't Dialogue: 0,0:13:55.04,0:14:02.11,Default,,0000,0000,0000,,easily do, right? All this modern micro\Nservice architecture separate front-end Dialogue: 0,0:14:02.11,0:14:09.31,Default,,0000,0000,0000,,and back-end systems, all of that means\Nthat it's a lot more complicated to set up Dialogue: 0,0:14:09.31,0:14:15.72,Default,,0000,0000,0000,,and needs more knowledge or more\Ninfrastructure to set up and so far that Dialogue: 0,0:14:15.72,0:14:19.50,Default,,0000,0000,0000,,meant we can't do it, because so far there\Nwas this requirement that you should Dialogue: 0,0:14:19.50,0:14:23.57,Default,,0000,0000,0000,,really be able to just run it on your\Nshared hosting. And we are currently Dialogue: 0,0:14:23.57,0:14:29.64,Default,,0000,0000,0000,,considering to what extent we can continue\Nthis, I mean, container based hosting is Dialogue: 0,0:14:29.64,0:14:34.62,Default,,0000,0000,0000,,picking up. Maybe this is an alternative\Nit's still unclear but it seems like this Dialogue: 0,0:14:34.62,0:14:45.100,Default,,0000,0000,0000,,is something that we need to reconsider.\NYeah, but if we make this harder to do Dialogue: 0,0:14:45.100,0:14:52.74,Default,,0000,0000,0000,,then a lot of current users of MediaWiki\Nwould maybe not, well, maybe no longer Dialogue: 0,0:14:52.74,0:14:57.23,Default,,0000,0000,0000,,exist or at least would not exist as they\Ndo now, right. You probably have seen Dialogue: 0,0:14:57.23,0:15:05.26,Default,,0000,0000,0000,,this nice MediaWiki instance the Congress\Nwiki. Which - with a completely customized Dialogue: 0,0:15:05.26,0:15:09.69,Default,,0000,0000,0000,,skin and a lot of extensions installed to\Nallow people to define their sessions Dialogue: 0,0:15:09.69,0:15:14.41,Default,,0000,0000,0000,,there and making sure these sessions\Nautomatically get listed and get put into Dialogue: 0,0:15:14.41,0:15:20.66,Default,,0000,0000,0000,,a calendar - this is all done using\Nextensions, like Semantic MediaWiki, that Dialogue: 0,0:15:20.66,0:15:34.28,Default,,0000,0000,0000,,allow you to basically define queries in\Nthe wiki text markup. Yeah, another thing Dialogue: 0,0:15:34.28,0:15:42.08,Default,,0000,0000,0000,,that, of course, slows down development is\Nthat Wikimedia does engineering on a, Dialogue: 0,0:15:42.08,0:15:48.13,Default,,0000,0000,0000,,well, comparatively a shoestring budget,\Nright? The budget of the Wikimedia Dialogue: 0,0:15:48.13,0:15:52.20,Default,,0000,0000,0000,,Foundation, the annual budget is something\Nlike a hundred million dollars, that Dialogue: 0,0:15:52.20,0:15:58.01,Default,,0000,0000,0000,,sounds like a lot of money, but if you\Ncompare it to other companies running a Dialogue: 0,0:15:58.01,0:16:03.21,Default,,0000,0000,0000,,top five or top ten website it's like two\Npercent of their budget or something like Dialogue: 0,0:16:03.21,0:16:10.77,Default,,0000,0000,0000,,that, right? It's really, I mean, 100\Nmillion is not peanuts but compared to Dialogue: 0,0:16:10.77,0:16:16.70,Default,,0000,0000,0000,,what other companies invest to achieve\Nthis kind of goal it kind of is, so , what Dialogue: 0,0:16:16.70,0:16:22.23,Default,,0000,0000,0000,,this budget translates into is something\Nlike 300, depending on how you count, Dialogue: 0,0:16:22.23,0:16:28.80,Default,,0000,0000,0000,,between three hundred and four hundred\Nstaff. So, this is the people who run all Dialogue: 0,0:16:28.80,0:16:32.19,Default,,0000,0000,0000,,of this, including all the community\Noutreach all the social aspects all the Dialogue: 0,0:16:32.19,0:16:40.92,Default,,0000,0000,0000,,administrative aspects. Less than half of\Nthese are the engineers who do all this. Dialogue: 0,0:16:40.92,0:16:50.99,Default,,0000,0000,0000,,And we have like, something like 2,500\Nservers, bare-metal, so, which is not a Dialogue: 0,0:16:50.99,0:16:57.62,Default,,0000,0000,0000,,lot for this kind of thing. Which also\Nmeans that we have to design the software Dialogue: 0,0:16:57.62,0:17:07.08,Default,,0000,0000,0000,,to be not just scalable but also quite\Nefficient. The modern approach to scaling Dialogue: 0,0:17:07.08,0:17:11.64,Default,,0000,0000,0000,,is usually scale horizontally make it so\Nyou can just spin up another virtual Dialogue: 0,0:17:11.64,0:17:19.28,Default,,0000,0000,0000,,machine in some cloud service, but, yeah,\Nwe run our own service, we run our own Dialogue: 0,0:17:19.28,0:17:24.44,Default,,0000,0000,0000,,servers, so we can design to scale\Nhorizontally, but it means ordering Dialogue: 0,0:17:24.44,0:17:32.07,Default,,0000,0000,0000,,hardware and setting it up and it's going\Nto take half a year or so. And we don't Dialogue: 0,0:17:32.07,0:17:38.39,Default,,0000,0000,0000,,actually have that many people who do\Nthis, so, scalability and performance are Dialogue: 0,0:17:38.39,0:17:49.00,Default,,0000,0000,0000,,also important factors when designing the\Nsoftware. Okay. Before I dive into what we Dialogue: 0,0:17:49.00,0:18:03.86,Default,,0000,0000,0000,,are actually doing - any questions? This\None in the back. Wait for the mic, please. Dialogue: 0,0:18:03.86,0:18:07.33,Default,,0000,0000,0000,,In the very...\NQ: Hi! Dialogue: 0,0:18:07.33,0:18:12.95,Default,,0000,0000,0000,,Daniel: Hello.\NQ: So, you said you don't have that many Dialogue: 0,0:18:12.95,0:18:22.99,Default,,0000,0000,0000,,people, but how many do you actually have?\NDaniel: For... it's something like 150 engineers Dialogue: 0,0:18:22.99,0:18:27.17,Default,,0000,0000,0000,,worldwide. It always depends on what you\Ncount, right? So you count the people, who Dialogue: 0,0:18:27.17,0:18:32.26,Default,,0000,0000,0000,,- do you count engineers, who work on the\Nnative apps, do you account engineers, who Dialogue: 0,0:18:32.26,0:18:36.98,Default,,0000,0000,0000,,work on the Wikimedia cloud services -\Nactually we do have cloud services, we Dialogue: 0,0:18:36.98,0:18:41.19,Default,,0000,0000,0000,,offer them to the community to run their\Nown things, but we don't run our stuff on Dialogue: 0,0:18:41.19,0:18:45.56,Default,,0000,0000,0000,,other people's cloud. Yeah, so depending\Non how you count or something and whether Dialogue: 0,0:18:45.56,0:18:50.21,Default,,0000,0000,0000,,you count the people working here in\NGermany for Wikimedia Germany, which is a Dialogue: 0,0:18:50.21,0:18:57.76,Default,,0000,0000,0000,,separate organization technically - it's\Nsomething like 150 engineers. Dialogue: 0,0:18:57.76,0:19:08.21,Default,,0000,0000,0000,,Q: Thanks!\NQ: I'm interested: What are the reasons Dialogue: 0,0:19:08.21,0:19:13.88,Default,,0000,0000,0000,,that you don't run on other people's\Nservices like on the cloud. I mean, then Dialogue: 0,0:19:13.88,0:19:17.09,Default,,0000,0000,0000,,it will be easy to scale horizontally,\Nright? Dialogue: 0,0:19:17.09,0:19:25.33,Default,,0000,0000,0000,,Daniel: There's, well, one reason is being\Nindependent, right? If we, yeah, I imagine Dialogue: 0,0:19:25.33,0:19:32.35,Default,,0000,0000,0000,,we ran all our stuff on Amazon's\Ninfrastructure and then maybe Amazon Dialogue: 0,0:19:32.35,0:19:38.06,Default,,0000,0000,0000,,doesn't like the way that the Wikipedia\Narticle about Amazon is written - what do Dialogue: 0,0:19:38.06,0:19:42.05,Default,,0000,0000,0000,,we do, right? Maybe they shut us down,\Nmaybe they make things very expensive, Dialogue: 0,0:19:42.05,0:19:47.36,Default,,0000,0000,0000,,maybe they make things very painful for\Nus, maybe there is some at least like it Dialogue: 0,0:19:47.36,0:19:54.07,Default,,0000,0000,0000,,self-censorship mechanism happening and we\Nwant to avoid that. There are there are Dialogue: 0,0:19:54.07,0:19:58.44,Default,,0000,0000,0000,,thoughts about this there are thoughts\Nlike maybe we can do this at least for Dialogue: 0,0:19:58.44,0:20:04.27,Default,,0000,0000,0000,,development infrastructure and CI, not for\Nproduction or maybe we can make it so that Dialogue: 0,0:20:04.27,0:20:12.20,Default,,0000,0000,0000,,we run stuff in the cloud services by more\Nthan one vendor, so we basically we spread Dialogue: 0,0:20:12.20,0:20:17.86,Default,,0000,0000,0000,,out so we are not reliant on a single\Ncompany. We are thinking about these Dialogue: 0,0:20:17.86,0:20:21.82,Default,,0000,0000,0000,,things but so far the way to actually stay\Nindependent has been to run our own Dialogue: 0,0:20:21.82,0:20:28.30,Default,,0000,0000,0000,,servers.\NQ: You've been talking about scalability Dialogue: 0,0:20:28.30,0:20:35.49,Default,,0000,0000,0000,,and changing the architecture, that kind\Nof seems to imply to me that there's a Dialogue: 0,0:20:35.49,0:20:42.27,Default,,0000,0000,0000,,problem with scaling at the moment or that\Nit's foreseeable that things are not gonna Dialogue: 0,0:20:42.27,0:20:46.58,Default,,0000,0000,0000,,work out if you just keep doing what\Nyou're doing at the moment. Can you maybe Dialogue: 0,0:20:46.58,0:20:52.48,Default,,0000,0000,0000,,elaborate on that.\NDaniel: So, there's, I think there's two sides Dialogue: 0,0:20:52.48,0:20:56.85,Default,,0000,0000,0000,,to this. On the one hand the reason I\Nmentioned it is just that a lot of things Dialogue: 0,0:20:56.85,0:21:01.61,Default,,0000,0000,0000,,that are really easy to do basically for\Nme, right? Works on my machine are really Dialogue: 0,0:21:01.61,0:21:08.92,Default,,0000,0000,0000,,hard to do if you want to do them at\Nscale. That's one aspect. The other aspect Dialogue: 0,0:21:08.92,0:21:16.67,Default,,0000,0000,0000,,is MediaWiki is pretty much a PHP monolith\Nand that means getting it always means Dialogue: 0,0:21:16.67,0:21:23.68,Default,,0000,0000,0000,,copying the monolith and breaking it down\Nso you have smaller units that you can Dialogue: 0,0:21:23.68,0:21:29.04,Default,,0000,0000,0000,,scale and just say, yeah, I don't know, I\Nneed more instances for authentication Dialogue: 0,0:21:29.04,0:21:33.91,Default,,0000,0000,0000,,handling or something like that. That\Nwould be more efficient, right, because Dialogue: 0,0:21:33.91,0:21:40.73,Default,,0000,0000,0000,,you have higher granularity, you can just\Nscale the things that you actually need Dialogue: 0,0:21:40.73,0:21:47.53,Default,,0000,0000,0000,,but that of course needs rearchitecting.\NIt's not like things are going to explode Dialogue: 0,0:21:47.53,0:21:52.91,Default,,0000,0000,0000,,if we don't do that very soon, it's not,\Nso there's not like an urgent problem Dialogue: 0,0:21:52.91,0:21:58.40,Default,,0000,0000,0000,,there. The reason for us to rearchitect is\Nmore, to gain more flexibility in Dialogue: 0,0:21:58.40,0:22:03.33,Default,,0000,0000,0000,,development, because if you have a\Nmonolith that is pretty entangled, code Dialogue: 0,0:22:03.33,0:22:16.13,Default,,0000,0000,0000,,changes are risky and take a long time.\NQ: How many people work on product design Dialogue: 0,0:22:16.13,0:22:25.46,Default,,0000,0000,0000,,or like user experience research to, like,\Nsit down with users and try to understand Dialogue: 0,0:22:25.46,0:22:28.44,Default,,0000,0000,0000,,what their needs are and from there\Nproceed. Dialogue: 0,0:22:28.44,0:22:33.23,Default,,0000,0000,0000,,A: Across... I don't have an exact number,\Nsomething like five. Dialogue: 0,0:22:33.23,0:22:37.93,Default,,0000,0000,0000,,Audience: Do you think that's sufficient?\NHerald: The question was, whether it's Dialogue: 0,0:22:37.93,0:22:46.80,Default,,0000,0000,0000,,sufficient. So just...\NDaniel: Probably not? But it's more than, Dialogue: 0,0:22:46.80,0:22:50.31,Default,,0000,0000,0000,,that's more people than we have for\Ndatabase administration, and that's also Dialogue: 0,0:22:50.31,0:23:06.04,Default,,0000,0000,0000,,not sufficient.\NHerald: Are the further questions? I don't Dialogue: 0,0:23:06.04,0:23:16.27,Default,,0000,0000,0000,,think.\NDaniel: Okay. So, one of the things, that Dialogue: 0,0:23:16.27,0:23:20.32,Default,,0000,0000,0000,,holds us back a bit, is that there's\Nliterally thousands of extensions for Dialogue: 0,0:23:20.32,0:23:26.87,Default,,0000,0000,0000,,MediaWiki and the extension mechanism is\Nheavily reliant on hooks, so basically on Dialogue: 0,0:23:26.87,0:23:39.60,Default,,0000,0000,0000,,callbacks. And, we have - I don't have a\Npicture, I have a link here - we have a Dialogue: 0,0:23:39.60,0:23:44.50,Default,,0000,0000,0000,,great number of these. So, you see, each\Nparagraph is basically documenting one Dialogue: 0,0:23:44.50,0:23:51.97,Default,,0000,0000,0000,,callback that you can use to modify the\Nbehavior of the software and, I mean, Dialogue: 0,0:23:51.97,0:23:59.24,Default,,0000,0000,0000,,there's, I have never counted, but\Nsomething like a thousand? And all of them Dialogue: 0,0:23:59.24,0:24:07.52,Default,,0000,0000,0000,,are of course interfaces to extra - to\Nsoftware that is maintained externally, so Dialogue: 0,0:24:07.52,0:24:12.61,Default,,0000,0000,0000,,they have to be kept stable and if you\Nhave a large chunk of software that you Dialogue: 0,0:24:12.61,0:24:16.73,Default,,0000,0000,0000,,want to restructure but you have a\Nthousand fixed points that you can't Dialogue: 0,0:24:16.73,0:24:22.96,Default,,0000,0000,0000,,change, things become rather difficult.\NIt's basi.. yeah, these hook points kind Dialogue: 0,0:24:22.96,0:24:27.64,Default,,0000,0000,0000,,of, like, they act like nails in the\Narchitecture and then you kind of have to Dialogue: 0,0:24:27.64,0:24:36.65,Default,,0000,0000,0000,,wiggle around them - it's fun. We are\Nworking to change that. We want to Dialogue: 0,0:24:36.65,0:24:43.95,Default,,0000,0000,0000,,architect it so the interface that is\Nexposed to these hooks become much more Dialogue: 0,0:24:43.95,0:24:51.36,Default,,0000,0000,0000,,narrow and the things that these hooks or\Nthese callback functions can do is much Dialogue: 0,0:24:51.36,0:24:58.69,Default,,0000,0000,0000,,more restricted. There's currently an RSC\Nopen for this, has been open for a while Dialogue: 0,0:24:58.69,0:25:04.69,Default,,0000,0000,0000,,actually. The problem is that in order to\Nassess whether the proposal is actually Dialogue: 0,0:25:04.69,0:25:11.53,Default,,0000,0000,0000,,viable you have to survey all the current\Nusers of these hooks and make sure that we Dialogue: 0,0:25:11.53,0:25:15.66,Default,,0000,0000,0000,,can, the use case is still covered in the\Nnew system and, yeah, we have like a Dialogue: 0,0:25:15.66,0:25:21.03,Default,,0000,0000,0000,,thousand hook points and we have like a\Nthousand extensions that's quite a bit of Dialogue: 0,0:25:21.03,0:25:31.06,Default,,0000,0000,0000,,work. Another thing that I'm currently\Nworking on is establishing a stable Dialogue: 0,0:25:31.06,0:25:36.99,Default,,0000,0000,0000,,interface policy. This may sound pretty\Nobvious - it has a lot of pretty obvious Dialogue: 0,0:25:36.99,0:25:42.43,Default,,0000,0000,0000,,things like, yeah, if you have a class and\Nthere's a public method then that's a Dialogue: 0,0:25:42.43,0:25:46.41,Default,,0000,0000,0000,,stable interface it will not just change\Nwithout notice, we have deprecation policy Dialogue: 0,0:25:46.41,0:25:53.02,Default,,0000,0000,0000,,and all that. But if you have worked with\Nextensible systems that rely on the Dialogue: 0,0:25:53.02,0:25:58.35,Default,,0000,0000,0000,,mechanisms of object-oriented programming,\Nyou may have come across the question Dialogue: 0,0:25:58.35,0:26:05.04,Default,,0000,0000,0000,,whether a protected method is part of this\Nstable interface of the software or not, Dialogue: 0,0:26:05.04,0:26:10.01,Default,,0000,0000,0000,,or maybe the constructor? I don't know, if\Nyou have worked in environments that use Dialogue: 0,0:26:10.01,0:26:15.86,Default,,0000,0000,0000,,dependency injection the idea is basically\Nthat the construction signature should be Dialogue: 0,0:26:15.86,0:26:21.27,Default,,0000,0000,0000,,able to change at any time but then you\Nhave extensions that you're subclassing and Dialogue: 0,0:26:21.27,0:26:25.64,Default,,0000,0000,0000,,things break. So, this is why we are\Ntrying to establish a much more Dialogue: 0,0:26:25.64,0:26:32.75,Default,,0000,0000,0000,,restrictive stable interface policy, that\Nwould would make explicit things like Dialogue: 0,0:26:32.75,0:26:36.65,Default,,0000,0000,0000,,constructor signatures actually not being\Nstable and that gives us a lot more wiggle Dialogue: 0,0:26:36.65,0:26:51.03,Default,,0000,0000,0000,,room to restructure the software.\NMediaWiki itself has grown as a software Dialogue: 0,0:26:51.03,0:26:58.75,Default,,0000,0000,0000,,for the last 18 years or so and, at least\Nin the beginning, was mostly created by Dialogue: 0,0:26:58.75,0:27:06.33,Default,,0000,0000,0000,,volunteers. And in a monolithic\Narchitecture there's a great tendency to Dialogue: 0,0:27:06.33,0:27:11.07,Default,,0000,0000,0000,,just, you know, find and grab the thing\Nthat you want to use and just use it. Dialogue: 0,0:27:11.07,0:27:19.10,Default,,0000,0000,0000,,Which leads to, well, structures like this\None: everything depends on everything. And Dialogue: 0,0:27:19.10,0:27:26.36,Default,,0000,0000,0000,,if you change one bit of code everything\Nelse may or may not break. And with, yeah. Dialogue: 0,0:27:26.36,0:27:31.35,Default,,0000,0000,0000,,And if you don't have great test coverage\Nat the same time this just makes it so Dialogue: 0,0:27:31.35,0:27:35.31,Default,,0000,0000,0000,,that any change becomes very risky and you\Nhave to do a lot of manual testing a lot Dialogue: 0,0:27:35.31,0:27:43.69,Default,,0000,0000,0000,,of manual digging around, touching a lot\Nof files and we are for the last year, Dialogue: 0,0:27:43.69,0:27:50.51,Default,,0000,0000,0000,,year and a half we have started a\Nconcerted effort to tie the worst - to cut Dialogue: 0,0:27:50.51,0:27:57.76,Default,,0000,0000,0000,,the worst ties, to decouple these things\Nthat are, basically that have most impact Dialogue: 0,0:27:57.76,0:28:03.32,Default,,0000,0000,0000,,there's a few objects in the software that\Nrep... - for instance one that represents Dialogue: 0,0:28:03.32,0:28:08.28,Default,,0000,0000,0000,,the user and one that represents a title\Nthat are used everywhere and the way Dialogue: 0,0:28:08.28,0:28:14.24,Default,,0000,0000,0000,,they're implemented currently also means\Nthat they depend on everything and that of Dialogue: 0,0:28:14.24,0:28:29.62,Default,,0000,0000,0000,,course is not a good situation. On a,\Nwell, a similar idea on a higher level is Dialogue: 0,0:28:29.62,0:28:34.40,Default,,0000,0000,0000,,decomposition of the software so the\Ndecoupling was about the software Dialogue: 0,0:28:34.40,0:28:39.99,Default,,0000,0000,0000,,architecture this is about the system\Narchitecture breaking up the Dialogue: 0,0:28:39.99,0:28:45.49,Default,,0000,0000,0000,,monolith itself into multiple services that\Nserve different purposes. The specifics of Dialogue: 0,0:28:45.49,0:28:50.28,Default,,0000,0000,0000,,this diagram are not really relevant to\Nthis talk. This is more to, you know, give Dialogue: 0,0:28:50.28,0:28:57.71,Default,,0000,0000,0000,,you an impression of the complexity and\Nthe sort of work we are doing there. The Dialogue: 0,0:28:57.71,0:29:05.58,Default,,0000,0000,0000,,idea is that perhaps we could split out\Ncertain functionality into its own service Dialogue: 0,0:29:05.58,0:29:11.16,Default,,0000,0000,0000,,into a separate application, like maybe\Nmove all the search functionality into Dialogue: 0,0:29:11.16,0:29:17.15,Default,,0000,0000,0000,,something separate and self-contained, but\Nthen the question is how do you, again, Dialogue: 0,0:29:17.15,0:29:23.28,Default,,0000,0000,0000,,compose this into the final user interface\N- at some point these things have to get Dialogue: 0,0:29:23.28,0:29:28.42,Default,,0000,0000,0000,,composed together again - and again this\Nis a very trivial trivial issue if you Dialogue: 0,0:29:28.42,0:29:32.47,Default,,0000,0000,0000,,only want to want this to work on your\Nmachine or you only need to serve a Dialogue: 0,0:29:32.47,0:29:39.68,Default,,0000,0000,0000,,hundred users or something. But doing this\Nat scale doing it at the rate of something Dialogue: 0,0:29:39.68,0:29:45.23,Default,,0000,0000,0000,,like 10,000 page views a second, I said a\Nhundred thousand requests earlier but that Dialogue: 0,0:29:45.23,0:29:51.79,Default,,0000,0000,0000,,includes resources, icons, CSS and all\Nthat. So, yeah, then you have to think Dialogue: 0,0:29:51.79,0:29:58.47,Default,,0000,0000,0000,,pretty hard about what you can cache and,\Nthank you, how you can recombine things Dialogue: 0,0:29:58.47,0:30:02.76,Default,,0000,0000,0000,,without having to recompute everything and\Nthis is something that we are currently Dialogue: 0,0:30:02.76,0:30:08.58,Default,,0000,0000,0000,,looking into - coming up with a\Narchitecture that allows us to compose and Dialogue: 0,0:30:08.58,0:30:23.22,Default,,0000,0000,0000,,recombine the output of different\Nbackground services. Okay. Before I Dialogue: 0,0:30:23.22,0:30:27.60,Default,,0000,0000,0000,,started this talk I said I would probably\Nroughly use half of my time going through Dialogue: 0,0:30:27.60,0:30:33.31,Default,,0000,0000,0000,,the presentation and I guess I just hit\Nthat spot on. So, this is all I have Dialogue: 0,0:30:33.31,0:30:41.07,Default,,0000,0000,0000,,prepared but I'm happy to talk to you more\Nabout the things I said or maybe any other Dialogue: 0,0:30:41.07,0:30:48.05,Default,,0000,0000,0000,,aspects of this that you may be interested\Nin. If any comments or questions. Oh! Dialogue: 0,0:30:48.05,0:30:56.80,Default,,0000,0000,0000,,Three already.\NQ: First of all thanks a lot for the Dialogue: 0,0:30:56.80,0:31:03.15,Default,,0000,0000,0000,,presentation, such a really interesting\Ncase of a legacy system and thanks for the Dialogue: 0,0:31:03.15,0:31:10.13,Default,,0000,0000,0000,,honesty. It was really interesting as a,\Nyou know, software engineer to see how Dialogue: 0,0:31:10.13,0:31:15.10,Default,,0000,0000,0000,,that works. I have a question about\Ndecoupling, so, I mean, I kind of, you Dialogue: 0,0:31:15.10,0:31:23.19,Default,,0000,0000,0000,,have like, probably your system is\Nenormous and how do you find, so to say, Dialogue: 0,0:31:23.19,0:31:29.10,Default,,0000,0000,0000,,the most evil, you know, parts which\Nsort of have to be decoupled. Do you use other Dialogue: 0,0:31:29.10,0:31:34.82,Default,,0000,0000,0000,,software, with, you know, this, like, what\Na metrics and stuff or do you just know, Dialogue: 0,0:31:34.82,0:31:38.37,Default,,0000,0000,0000,,kind of intuitively..\NDaniel: Yeah, it's actually, this is quite Dialogue: 0,0:31:38.37,0:31:44.97,Default,,0000,0000,0000,,interesting and maybe I can, maybe we can\Ntalk about it a bit more in depth later. Dialogue: 0,0:31:44.97,0:31:49.02,Default,,0000,0000,0000,,Very quickly: it's a combination on the\None hand you just have the anecdotal Dialogue: 0,0:31:49.02,0:31:53.28,Default,,0000,0000,0000,,experience of what is actually annoying\Nwhen you work with the software and you Dialogue: 0,0:31:53.28,0:31:59.11,Default,,0000,0000,0000,,try to fix it and on the other hand I try\Nto find good tooling for this and the Dialogue: 0,0:31:59.11,0:32:05.44,Default,,0000,0000,0000,,existing tooling tends to die when you\Njust run it against our code base. So, one Dialogue: 0,0:32:05.44,0:32:09.93,Default,,0000,0000,0000,,of the things that you are looking for are\Ncyclic dependencies but the number of Dialogue: 0,0:32:09.93,0:32:15.08,Default,,0000,0000,0000,,possible cycles in a graph grows\Nexponentially with a number of nodes. And Dialogue: 0,0:32:15.08,0:32:17.71,Default,,0000,0000,0000,,if you have a pretty tightly knit graph\Nthat number quickly goes into the Dialogue: 0,0:32:17.71,0:32:26.58,Default,,0000,0000,0000,,millions. And, yeah, the tool just goes to\N100% CPU and never returns. So, I spend Dialogue: 0,0:32:26.58,0:32:33.60,Default,,0000,0000,0000,,quite a bit of time trying to find\Nheuristics to get around that - was a lot Dialogue: 0,0:32:33.60,0:32:41.55,Default,,0000,0000,0000,,of fun. I can, yeah, we can talk about\Nthat later, if you like. Okay, thanks. Dialogue: 0,0:32:41.55,0:32:49.22,Default,,0000,0000,0000,,Q: So what exactly is this Wikidata you\Nmentioned before. Is it like an extension Dialogue: 0,0:32:49.22,0:32:55.58,Default,,0000,0000,0000,,or is it a completely different project?\NDaniel: Wiki - so there's an extension called Dialogue: 0,0:32:55.58,0:33:04.63,Default,,0000,0000,0000,,Wikibase, that implements this, well I\Nwould say, ontological modeling interface Dialogue: 0,0:33:04.63,0:33:11.98,Default,,0000,0000,0000,,for MediaWiki and that is used to run a\Nwebsite called Wikidata which has Dialogue: 0,0:33:11.98,0:33:19.50,Default,,0000,0000,0000,,something like 30 million items modeled\Nthat describe the world and serve as a Dialogue: 0,0:33:19.50,0:33:25.61,Default,,0000,0000,0000,,machine-readable data back-end to other\Nwiki project, other Wikimedia projects. Dialogue: 0,0:33:25.61,0:33:32.89,Default,,0000,0000,0000,,Yeah, I used to work on that project for\NWikimedia Germany. I moved on to do Dialogue: 0,0:33:32.89,0:33:41.15,Default,,0000,0000,0000,,different things now for a couple of\Nyears. Lukas here in front is probably the Dialogue: 0,0:33:41.15,0:33:50.19,Default,,0000,0000,0000,,person most knowledgeable about the latest\Nand greatest in the Wikidata development. Dialogue: 0,0:33:50.19,0:33:56.24,Default,,0000,0000,0000,,Q: You've shortly talked about test\Ncoverage. I will be into history.. Dialogue: 0,0:33:56.24,0:33:58.65,Default,,0000,0000,0000,,Daniel: Sorry?\NQ: You talked about test coverage. Dialogue: 0,0:33:58.65,0:34:02.01,Default,,0000,0000,0000,,Daniel: Yes.\NQ: I would be interested in if you amped Dialogue: 0,0:34:02.01,0:34:07.66,Default,,0000,0000,0000,,your efforts to help you modernize it and\Nhow your current situation is with test Dialogue: 0,0:34:07.66,0:34:11.81,Default,,0000,0000,0000,,coverage.\NDaniel: Test coverage for MediaWiki core is below Dialogue: 0,0:34:11.81,0:34:21.81,Default,,0000,0000,0000,,50%. In some parts it's below 10% which is\Nvery worrying. One thing that we started Dialogue: 0,0:34:21.81,0:34:30.05,Default,,0000,0000,0000,,to look into, like half a year ago, is\Ninstead of writing unit tests for all the Dialogue: 0,0:34:30.05,0:34:36.01,Default,,0000,0000,0000,,code that we actually want to throw away,\Nbefore we touch it, we tried to improve Dialogue: 0,0:34:36.01,0:34:40.90,Default,,0000,0000,0000,,the test coverage using integration tests\Non the API level. So we are currently in Dialogue: 0,0:34:40.90,0:34:48.24,Default,,0000,0000,0000,,the process of writing a suite of tests,\Nnot just for the API modules, but for all Dialogue: 0,0:34:48.24,0:34:54.54,Default,,0000,0000,0000,,the functionality, all the application\Nlogic behind the the API. And that will Dialogue: 0,0:34:54.54,0:35:01.07,Default,,0000,0000,0000,,hopefully cover most of the relevant code\Npaths and will give us confidence when we Dialogue: 0,0:35:01.07,0:35:12.42,Default,,0000,0000,0000,,refactor the code.\NQ: Thanks. Dialogue: 0,0:35:12.42,0:35:26.28,Default,,0000,0000,0000,,Herald: Other questions?\NQ: So you said that you have this legacy Dialogue: 0,0:35:26.28,0:35:32.24,Default,,0000,0000,0000,,system and eventually you have to move\Naway from it but are there any, like, I Dialogue: 0,0:35:32.24,0:35:39.82,Default,,0000,0000,0000,,don't know, plans for the near future to,\NI don't know. At some point you have to Dialogue: 0,0:35:39.82,0:35:47.31,Default,,0000,0000,0000,,cut the current infrastructure to your\Nextensions and so on and it's a hard cut, I Dialogue: 0,0:35:47.31,0:35:53.33,Default,,0000,0000,0000,,see. But are there any plans to build it\Nup from scratch or what are the plans? Dialogue: 0,0:35:53.33,0:35:58.06,Default,,0000,0000,0000,,Daniel: Yeah, we are not going to rewrite from\Nscratch - that's a pretty sure fire way to Dialogue: 0,0:35:58.06,0:36:05.37,Default,,0000,0000,0000,,just kill the system. We will have to make\Nsome tough decisions about backwards Dialogue: 0,0:36:05.37,0:36:11.34,Default,,0000,0000,0000,,compatibility and probably reconsider some\Nof the requirements and constraints we Dialogue: 0,0:36:11.34,0:36:17.10,Default,,0000,0000,0000,,have, well, with respect to the platforms\Nwe run on and also the platforms we serve. Dialogue: 0,0:36:17.10,0:36:21.13,Default,,0000,0000,0000,,One of the things that we have been very\Ncareful to do in the past for instance is Dialogue: 0,0:36:21.13,0:36:26.53,Default,,0000,0000,0000,,to make sure that you can do pretty much\Neverything with MediaWiki with no Dialogue: 0,0:36:26.53,0:36:32.80,Default,,0000,0000,0000,,JavaScript on the client side. And that\Nrequirement is likely to drop. You will Dialogue: 0,0:36:32.80,0:36:40.01,Default,,0000,0000,0000,,still be able to read of course, without\Nany JavaScript or anything, but the extent Dialogue: 0,0:36:40.01,0:36:45.91,Default,,0000,0000,0000,,of functionality you will have without\NJavaScript on the client side is likely to Dialogue: 0,0:36:45.91,0:36:51.14,Default,,0000,0000,0000,,be greatly reduced - that kind of thing.\NAlso we will probably end up breaking Dialogue: 0,0:36:51.14,0:36:57.66,Default,,0000,0000,0000,,compatibility to at least some of the\Nuser-created tools. Hopefully we can offer Dialogue: 0,0:36:57.66,0:37:02.39,Default,,0000,0000,0000,,good alternatives, good APIs, good\Nlibraries that people can actually port Dialogue: 0,0:37:02.39,0:37:11.07,Default,,0000,0000,0000,,to, that are less brittle. I hope that\Nwill motivate people and maybe repay them Dialogue: 0,0:37:11.07,0:37:15.95,Default,,0000,0000,0000,,a bit for the pain of having their tool\Nbroken. If we can give them something that Dialogue: 0,0:37:15.95,0:37:21.12,Default,,0000,0000,0000,,is more stable, more reliable, and\Nhopefully even nicer to use. Yeah, so, Dialogue: 0,0:37:21.12,0:37:25.93,Default,,0000,0000,0000,,it's small increments, bits, and pieces\Nall over the system there's no, you know, Dialogue: 0,0:37:25.93,0:37:32.55,Default,,0000,0000,0000,,no great master plan, no big change to\Npoint to really. Dialogue: 0,0:37:32.55,0:37:45.47,Default,,0000,0000,0000,,Herald: Okay, okay, further questions?\NDaniel: I plan to just sit outside here at Dialogue: 0,0:37:45.47,0:37:54.80,Default,,0000,0000,0000,,the table later if you just want to come\Nand chat so we can also do that there. Dialogue: 0,0:37:54.80,0:38:01.25,Default,,0000,0000,0000,,Herald: Okay, so, last call are there any\Nother questions? It does not appear so, Dialogue: 0,0:38:01.25,0:38:08.11,Default,,0000,0000,0000,,so, I'd like ask for a huge applause for\NDaniel for this talk. Dialogue: 0,0:38:08.11,0:38:12.63,Default,,0000,0000,0000,,{\i1}Applause{\i0} Dialogue: 0,0:38:12.63,0:38:14.73,Default,,0000,0000,0000,,{\i1}36C3 postroll music{\i0} Dialogue: 0,0:38:14.73,0:38:38.32,Default,,0000,0000,0000,,Subtitles created by c3subtitles.de\Nin the year 2020. Join, and help us!