 OK, well, we should be on air. Good day, everybody. I'll give everybody a minute or two to get connected, and we'll start in a couple of minutes. That's where we measure the lag. Oh, somebody's got a... We should be on air. OK, well, I'm seeing it. Can everybody say hello? Why can Jason... Why can Jason not get in? Is it because we're too big? Hello. We should be on air. Give everybody a minute or two to... Yeah, Tim, I can tell you're getting in. Yes. David, can't hear you at all. Yeah, no? Yes, you can hear now. Yeah, it's not very loud. Just trying to get Jason in. I think Tim... You might need to turn down your sound or put on some headphones. Or you could just hit mute while you're not speaking, perhaps. Why that? Or not watch the video in the background, because you're in the video. OK, one problem with using this account is that my name is Tim Mitting on the video, which is odd. I'll be Tim Mitting. So, Jason, we just wanted for Jason to get in, and he... Jason, I've sent you a URL. He said he's having some trouble actually getting the Google plug-in going, which has a bit foreboded. OK. Well, he's some time later, so I suggest we start, and he can get in when he gets in. He should have all the URLs. So, well, hello, everyone. Soft start to the meeting. We're all here. Some people to talk, presenting a bunch of different things. Obviously, the main thing on the agenda is imminent 2.6 release, a few weeks away, three weeks away. And, of course, this is the end of the cycle where all of the big things have landed or sometimes not landed. So, we can talk about that. We also have a number of things still to be fixed, still being polished, sometimes in slight panic. But we should be pretty much on track, I think. Everyone agrees for a release in three weeks. So, all pretty good. So, we've got an agenda. If you look on the webpage, you can see the things coming up. We may have time at the end to talk about anything else you want to cover while we've got people here. So, thanks for getting started. So, well, starting off with the new releases, I guess you can look at the link of the new releases. I might share a screen, that'd be probably a good idea. So, hopefully that's a good size. So, we've got the agenda here and the new features. Now, the release notes is still, a bit of an awkward time. Their release notes are only still being put together. So, they're a bit rough right now. For the purposes of this meeting, I guess the main things to be looking for are down towards the bottom where it has API changes for developers. Some of those things are going to be covered by other people today, but some not. So, if you want to talk about any of those, now's a good time during this meeting to do that. Now, there is an awful lot of new features. I would say mostly smaller new features. Now, there was two really big things that we were working on that did not make it into 2.6. So, a good test of our new time-based releases. We did promise that if things weren't ready, they won't get in. And there are two big things that HQ was developing ourselves, which have not got in. So, the first one is logging. The new logging infrastructure is not fully finished. What happened in the meantime was the precursor to that was an improvement to the whole event infrastructure. And that's partially in. But the full logging stuff will not really be there until 2.7. The events later on. The other big feature that didn't land is outcomes. And this was the new feature that Moodle rooms had primarily developed. They had the spec up at the beginning of the year or even earlier for that development. They did a lot of coding on it. It came to the front-end team in Moodle HQ. Went through lots and lots and lots of reviews. But in the end, we ran out of time and there's still lots still to do. And so that's been pushed back. That'll be the first major project that front-end tackles in the 2.7 cycle. There will be a whole group team meeting. So the whole front-end team, maybe some of the back-end team. And the Moodle rooms guys who wrote the original code. They sit down together and really plan that through. The good thing about that is that outcomes will be much more fully completed for 2.7. It was pretty sort of a... It was pretty complete, but it was, I guess, missing some things that were in the spec. It was like a stage two. So hopefully that will get into the... That'll be really good when it gets to the end of the 2.7 cycle. And outcomes is all about every grading event, having a link to some outcomes which can roll up eventually into a notion of competencies. And you can say that a particular person knows a particular thing. Very huge request. So that's... We want to do it right, I think, when it hits core. Mark, mention Ato. For some, there is this alternate editor that Damian Wies had developed which is pretty cool, the editor. It was in core up until today, but made the difficult decision to remove it. Just because the introduction of a second HTML editor brings a bunch of other problems with it, probably more than it solves at the moment. So to avoid confusion, that's removed. But it will be in the plugins directory where you can still use that editor if they want. And again, in 2.7, we're going to really look at the whole issue of editors and replace TinyMC 3 completely with a better alternative. And what that is, we don't know yet. Maybe Ato, maybe something based on TinyMC 4, maybe something else, we'll have to look at the whole thing. And it will be good, I hope. So that's kind of the major developments. The many, many smaller things are listed here. Now, there's also a new features page, which is also pretty new and not optimized yet. It's got a mix of the features that are probably most exciting for users. And you can see some of them here. There are some things not on here yet. And I suspect some reordering of this page is going to occur before the end. But you can certainly get a sense of what's made it into 2.6. If you're interested, any questions you have, far away in the chat now, if you want to talk about anything in more depth there, but it wasn't intended to go through all the features here in this meeting. But we can discuss more developer-y things towards the end. I'm not seeing many comments in the chat here. Okay, I guess there's some lag. But let's ask questions later on. I'd just like to move on to, next on the list, which is Helen. Just to talk about the QA, that started yesterday. So Helen, you want to take over? Hi there. Let me share my screen if I can find it. You see my screen now? I can see it by Helen. Yeah, that's working well. Okay, so if you haven't heard, we just started our Moodle 2.6 QA cycle. This is the QA testing dashboard showing we've already up to 58 tests passed and seven bugs found so far. If you'd like to get involved, we've got a QA testing guide here. It's really easy to help out and if you even run just one test, then you get mentioned in the credits and maybe we'll organize some badges for QA testers, you never know. In the 2.6 QA cycle, we've currently got 462 tests. If you're interested in testing one of the latest features, then you have to scroll to the bottom all the new stuff is down here at the bottom. Although we're working towards more automated testing, there are some things which can't be tested automatically. So if you've developed a new feature or improvement that can't be tested automatically, then you should make sure that your issue is labeled QA test required. Then Mary and I go through all these issues and we write new QA tests. We'll probably even write new tests to be added to this cycle. And after writing a test, then in the tracker issue, we add a little comment. Has this one got a comment? Here's where Mary added that so that you and anyone watching the issue can then check out the test that covers it nicely. Just to mention for QA tests and also for documentation, it's really handy this new feature for assignment here. If you, as a developer, can write some documentation in the dev docs to help us out. So Dan wrote some nice documentation there and then we can transfer bits to the user docs and it helps us write the QA test. Anyone any questions or comments about QA testing? No? There's a one minute lag. Yeah, it's quite a big lag unfortunately. I can't wait for Hangouts to actually have some chat included in the stream but unfortunately we're stuck with this at the moment. We should have one beer after each speech waiting for the questions. Only you can take a beer in a minute, wow. I see that Eric is asking whether the user docs have been split, yes, everyone's answering. David Madrak created them yesterday. So you're welcome if you like to just write docs, use the docs yourselves, otherwise Mary and I will be going through checking that everything's documented in time for the release. Do you hear me? Yes. I think that there is also a level called acceptance test require that I'm going through on the issues level with acceptance test require and creating new behalf test for them. But really the test will be included in the new feature. I'm not quite sure I heard everything David was saying but I think he was mentioning about adding the label acceptance test required for automated testing. Is that what you were saying David? Yes. The same Mary and you are doing with QA test require is what I'm doing with acceptance test require. I'm going through the list of new issues and the ones leveled as acceptance test require and your MDL and I think we have best for it. And there's a good page in the docs, maybe someone come up with a link in the dev docs explaining how you write the automated tests. Someone should post that in the chat. I'm looking for... If you can turn up your volume David it would be good too because you're still very quiet. David you posted the link. And worth mentioning the tests will... I'm sorry maybe I missed it but the QA test list will slowly reduce as the automated tests replace them. We hope. Yes. Alright thanks Helen. Is that everything you were going to cover? Yep. Okay thanks. So now as we flow on from testing when you're testing you often need lots of test data and so Marina is going to talk about a couple of things that's been happening in the past couple of months related to generating test data. So over to you Marina. I think Tim wanted to go first I believe. Yeah thanks for being on late. No is Tim... Tim Hunt. Do you want Tim? Can you wait for Tim? You want to hop in? Alright. We can... We'll jump to Tim. So Tim is... I want to talk about quick question behaviors I think. Right. Yes. Hopefully this can be quite quick and I have just hopefully shared a browser window. If someone could let me know when that appears. Yeah it's fine. If you do quiz stuff then you need to know and particularly if you've written a question behavior plugin you need to know about this. So what you're looking at is a classic how the quiz review page used to look. You've got a chunk of information at the top about the attempt and what's new in this version if I switch to a screen grab here is that now the question behavior can supply some extra summary information about the attempt that then gets displayed. And if you're interested in certainty based marking as a user then the teacher then this is a good thing because it's an extra useful feedback to your students and if you're a developer who has created a question behavior then you might want to take make use of this mechanism to add some interesting summary information to the quiz review page about your own behavior. So the bad news about this is a nice new feature the bad news is it is a not backwards compatible change in question behaviors so you'll need to look in questionbehaviorupgrade.txt to fix your plugin if you have a question behavior plugin but it doesn't take very long you just need to move a bit of code around. That was all I wanted to say really I hope that's okay. Yeah, cool, thanks Tim. Out of interest is anybody here working on the list working on question types? We're on the wrong page. We have to wait for a minute for that question. I should have typed it. Right, I'm afraid I've got a dash now they're very annoying to have another real world meeting at the same time as this one but I'll watch the recording later and obviously if anyone has any questions they should put it in the quiz forum as usual. Hello Tim, thanks for coming along. Cheers. Alright, so to Marina. Start a generation. Hi, I'm just going to post the link in DevChat with the presentation because I have lots of links there and samples of code if anybody wants to use them anywhere. So another thing I need to figure out is how to share my screen. It's the third icon down the green one, screen share. Maybe second. It depends who you are. One looks like a screen with an arrow in it. Does it work now? Yep, yep. Alright, so first tool that is new in 2.6 that I want to talk about is tool upload course. It's not exactly developmental it's an admin tool but it's perfect for data generation for course generation. There is an original plugin by Pierce Harding. I think better as well because I saw his hop right there but I didn't see him in discussion. And Fred moved it to the core and so then it works. This is... Okay, somebody is asking about my hair color. Okay, so this is the interface where Pierce Hard looks. You just upload the CSV file and it also allows to fill all the missing fields with the default values. And you just click the button and it creates the courses. And especially nice about it is that you can specify the backup file and the course will be restored from backup file. I have several courses with the same backup file and quite quickly I can generate lots of content on the side. Well, it's repeating content but for development it's okay. I think it's extremely nice too and it also allows to update the courses. One thing it doesn't do is it doesn't create the course categories but I think we can work on it. So another tool that already existed for a long time is... Okay, it takes a while to restore the courses. I'm sorry. It's upload user. You probably all know it. It's just CSV file that... Okay, it worked great. So I have two courses created. So now I go to users. The same... Oops, sorry, it's wrong file. The same way with the CSV file I can upload users, fill the missing fields and users are created. Enroll flat file has also existed for a long time. It's a plugin that allows to... Again, with the CSV file enroll students into courses. Unfortunately, it requires that all users and courses have ID numbers. So I already included ID numbers of courses and users in the CSV files. I'm not probably not going to show how it works because it's not that interesting. So now, going back to... Oh, not back. Sorry, to the data generator. This has existed in model already, but now it's more like one APA that is used in BHAT tests, in PHP unit tests, and also can be used in scripts and tools. Class testing data generator as you see the following methods. Using those methods, you can easily create courses, users enroll them, create modules, assign roles and so forth. Well, repositories are not really... Testing for PHP unit tests because you can't really put content in the repositories using generator. Same with modules. CreateModule function creates them just a module shell. Only for some modules, we have some functions that would put content to it, but mostly it's just filling the add module form. But still, it's already a lot. Using this tool, we can create lots of data and big courses. The methods that I marked with Asterisk is actually methods that redirect to the particular plugin generator. So each block or repository or module plugin can implement its own generator inside, extending one of the abstract classes, testing block generator, testing module generator or testing repository generator and implement the function create instance inside that will create an instance of this particular plugin. So how this can be used? First, everybody knows that it is used everywhere in unit tests. This is an example of how to create course category, course user, enroll user, create block, create module. There are two ways of creating modules. If you can see from this example, I don't know if the font is big enough. So the page module I create by calling the function create module but the forum module I create by first retrieving the instance of the forum generator and then calling create instance method inside forum generator. This can be useful for those modules that implemented some content generation as well. For example, forum has additional function there to create discussions and posts. I can't read unfortunately, they have chat at the same time. David implemented the step definitions in BeHat features that use the same generation to create all the same instances, users, enrollments, courses and so forth. There is a link on this page for the feature that tests all these generators. Also, any developer can just write his own script that generates as many users or courses or modules inside this course as they want and use that as they want later. This is an example of script that I can run. I hope I spelled it correct. It created 10 users and a course, enrolled the users in the courses students and created one instance of each module that has a generator. I really hope that before 2.6 release there will be generators for all modules because I'm working on it at the moment. At the moment, there are only 8. There are actually more. There is all the assignment and feedback as well, so there are 10, but they are hidden. As you can see, there are 10 users with different names. Random names are enrolled in this course. Something good and bad about generators. Generator doesn't guarantee that it checks the capabilities or settings because we use the core API functions and sometimes if there is a separate function for checking the capabilities, we ignore it and don't use any generator, but sometimes the capability checks are inside the functions that actually create data, so it's better than you said the user that has all the capabilities to perform the actions. Events can be triggered or cannot be triggered during the generator work. This is also not guaranteed. Also, the bad thing about the generator is that there are still a lot of... not bad thing, but something that generators can't do. There are still a lot of PHP code that's not in the libraries, but inside the PHP files that are accessible from the web. For example, you edit something and fileEdit.php has half of the code for entering into database. And it's impossible. Well, we try to move it into the libraries, but it's a slow process. So generator doesn't generate everything. Other tools that can be used for generation of student data, especially student data for web services and BeHUD features. I particularly like BeHUD features. For example, I had a test once when I had to test the quiz grading form that had at least 100 of students attempted it. The only way it could generate 100 students taking a quiz is to create a BeHUD feature, which was obviously 400 lines long or something like that. Emulated 100 users login, click the button, log out. After the test is finished, I can use the website with the results of the feature or I can make a backup and use it on another site. Also, there is a tool generator make test course script, but it generates the course. You can't really control what's inside this course, so it generates you hundreds of major resources. It's useful if you need to test backup, but I haven't found any other purposes for myself yet for this tool. David just mentioned that I'm working on using the API, but I'm working on using the API for generating modules. It's not going to change very much. It still can't generate student data and everything that's not in libraries. Okay, that's all from me. Thank you. I think you did mention everything there. We got some questions in the chat, though. Well, a bit of discussion going on about should it be triggering events when we generate data? We do trigger sometimes, sometimes not. At the moment, model generation doesn't trigger events, but hopefully after a couple of weeks it will be. Personally, it should definitely be optional. We probably just slow things down. We're generating data to do other testing with, if we're testing events, triggering that's another thing entirely. Anyway, okay, thanks. Let's get off to bed and I'll cut off to the next person. I've shuffled it around a bit because it seemed to go on naturally on to David after what you've just talked about, Marina. Over to David. I'll put you next after that. Can you hear me now? You have to talk quite loud. Can you hear me now? That's actually better. We'll raise it a bit more. Now, what about now? In the day? Well, as Martin said, following the testing and data generator thing, I'm going to talk about a new tool that we have been working on about its performance testing. We needed the big data sets to run that performance test. And when Sam Marshall wrote that course generation tool, from there we added a site generation tool to create a bunch of courses and users. And from there, we created a tool to generate a gmeter test plan. So this tool, I will share the screen. Can you see it? Yeah, that's fine though. Okay. This is the project. It's back to you. Sorry? It's back to you again, your face. Okay, okay. To my face? Yeah. Okay, now. This is the main... It's okay, I know. Yes, no? This is the main page of the project. And I guess that everybody is interested in that because we discussed with Martin and Tim Hahn, the lawyer, a lot of people. And there are different proposals of what we want to test and what kind of performance of comparisons we want to do. We can be interested in, as a developer, test a patch that we just wrote and ensure that we are not creating a performance regression. Or if we are looking for a performance benefit, check that there is a real performance benefit. To compare every weekly release against the latest integration release, try different configurations of model settings, how they affect the performance of the site, try different infrastructures, databases and genes, how they affect everything. So we have a lot of scenarios where this kind of test can be useful. So, from there, we begin to generate the tool. We thought that GMeter is a tool specialized on that, could be probably a good tool for that. So, from model, we are generating that test plan. And having this, we have a lot of information about the model site we are testing. And we split all the process in three parts. We begin checking out from a base commit that it's usually hardcoded. Everything is configurable. You can look at the project and whatever you want. But usually this hardcoded is the last version where the tool had a change in the data generators. So, from there, we upgrade to before branch and then we restore the same first point and we restore, we upgrade to the after branch. So we are comparing a before and after branch. We begin generating the site, adding courses, adding users, generating the test plan and from them, we do what upgrades. Right now, we are working on adding all that to our CI server because we are using another tool right now. Well, with this, we are not for sure that we restore a database. We restore a database on the other route. So, we begin with a clean environment and we are able to reproduce the same exact scenario, so the same dataset. It's a fixed dataset and the same users, the same test plan. G-meter can it's not exactly always the same the way G-meter sends the request and the users maybe the first user logs in the second one is logging but in another run, it will be the first one that is logging while the second step is that the same user of course, so it's not always exactly the same. But, we are a little we we saw that with 5 looks I don't know if somebody is used to to use G-meter but if you have a test plan, a number of threads that is the number of users and then you have the number of looks to repeat all the plan. So, with 5 looks and about 30 users we have reached a consistent results and to simplify it more than anything else we created a script where you just have to run it and it's very useful as a developer because you just need to set the database I will show you I will show you an example you just need to send the database data like where is the database typical things that you set in a config file and the branch which one is the before branch and the after branch because probably before branch this is in a developer scenario so you are working on the issue usually before branch will be the last weekly and after branch will be in this case is the example master but in here we can add mdl457 with your issues or what a normal developer should change in fact it's a lag the data from the database where is the database all the other config settings are more or less clear then the currentest plan includes tries to follow what a normal user does in a real site so he loves students to mention that he is a student he logs into the system sees the front page, goes to a course checks a couple of resources then goes to a forum, posts in a forum and logs out we will be increasing the number of steps of the plan so we will cover more things all this all this site has a config file a config file in it where is it setting the ascript to enable all the advanced features and showing in front page as you can see old course list and enrolled course list this is to attack the more regressions possible as we can so if we have the normal default site probably we will not attack as much as we will do setting everything at the IS level then we will the same tool is the one that we will be using in Jenkins to run every day against to compare last weekly release with the integration version I am working right now on this integration in there in the Jenkins because we also want to receive notifications directly to integration chat so we don't know to check manually every day or every week what's the difference between one and the other one we set a threshold where we can accept that one or two percent is acceptable and from there we compare the results if it's inside the threshold ok otherwise we will send notifications we can send notifications looking at each bar that we have like database database reads these are the bars we have so for each one we will compare it and also for each step of the plan ah yes also you may be interested in using your own SQL backup for example if you are a university and you want to to test what will be the performance using the new version of model or if it's worth to operate on or it's all worth work I can say you know just in case you have any doubts you can check using this tool your restored database there are instructions in the with me to explain all the possible scenarios that you may be interested in trying so gmeter and the web server are in the same computer and probably will be a developer computer because most of the time if you want to do serious testing performance testing you will have a virtual machine or a server dedicated to the performance testing to not have any interference with external application services or whatever in here web and gmeter servers are in different computers then is the steps to run the test are more complex because you have to send couple of files to the other node so it knows the data from the site you are testing otherwise for the gmeter it's all blind you have to explain with the users to log in with the data to log in the site and this one using your own secure dump so this is more complex but anyway it's a more manual process but we can't do it and actually we can do it if it's before the fight because I forgot the nation this will be in the fight in the 6 we will use them in fact to check the differences between the fight in the 6 we have those results and I don't know if I'm using something is compatible with OS X since to alloy and we expect that we can share the results to check what kind of combinations of settings or whatever can affect the performance of similar sites we can do it now just sharing the runs at our PSP fights but we can look into a more evolved solution looking for a tool to import the files export all sorts of things that happens in the time we have and everything and I think that it's all I'm going to check in the chat because probably the next you know you are hitting my house mate sorry about that well yes, the more people that tries it the more people we will have at the moment I try it in OS X I think working in Ubuntu and introducing our virtual machines with Jenkins splitting the the Xeometer server and the web server and no problem at the moment but I'm sure that if you tested in Solaris you will have problems with Solaris if someone works with Solaris no, no, no it's more easy than it had because the components are more simple Xeometer is based on Java but it's just in the command it's not like in Selenium that you never know well, you never know you have problems to really understand where it finishes the scope of one component and the other one in here all the steps are in my opinion, I don't know probably we will get feedback about it that are clearly defined and separated so very good to have that I think that you are the first person to chase it about those tests if you run as a developer and you just want to avoid regression and look how good you are with running compare.sh you have enough but if you are an administration and an illustrator and you want to do more evolved complex things you have following what some Marshall wrote we have the size of the site the one in the compare.sh is an S which is 30 users sometimes loops here we go to 100 users and if I remember correctly I'd never run them but this is 1000 here 1000 maybe 5000 the number of loops and everything is growing so it can be a really really big dataset there is any question or anything something David do you have the output yes this is when you finish you will have the output of what recognitions have you found what improvements do you have and also with this it is a simple tool that just which that generated PHP files with a big, big arise of all the data you can filter everything compare places things and places things I mean because you can try to compare a small run with a big run I don't know if this one would work I don't know if it would work well this is all default names because I'm using the compare script oh now it finishes when it finishes it opens a browser window imagine this is the future with the small test it shows all the info about it right now is comparing model to 6 to 6 beta with the last release of model to 5 this is using google charts to show the info so we have the totals and the raw data of each thread and from here this is all part of those tool of this tool we can add more charts change them group by this is currently group by step and we can add whatever we need no in this we can compare everything we can see how it's evolving depending on the step also in here we have group by we'll have it all together as an overview of what is going back going good and also there is a link to the tool that's some hermetic work also it's more numeric so in here you can see a numeric data the other one is more you see how cool the charts are and don't worry about doing number and David I'm not sure if your screenscast is working because we're just stuck looking at the top of the new tool can you scroll down and show the graphs can you see it now yeah you still see it I'm going down to other so we're just looking at two runs here but yes we can compare more of them but do you have maybe you don't have them on that local laptop but do you have any more to show or that's it no right now I have this but we can select three of them and what happens is that probably the results of two of them will be the same but anyway in here you can prepare your parts and say the first alternative with changing just a bit the second alternative changing a right K exists for is set well probably other profiling tools will be better for that but anyway you can see with this so this starts getting really useful to look for one anomalous if there's something that's anomalous among a whole lot of runs it really starts standing out I think I don't know if you still can see if you work in your patch you can change configuration of the site test again and see how it evolves and you will know what you're doing with your patch but probably this will help you cool I don't know this would be nice to see this tool developing as people use it and then find what else they want to add to it or extend it to cool thanks David I think unless anyone else has got any questions yes probably I don't know how they understood my English but I would be happy to apply writing in English probably better I think the code will speak for itself thanks David okay so I'll move on so next one upper up talking about the plugins database and all news related hello okay let me try to share why is it not popping up hang on this just popped up previously somehow can't share my screen is it what's happening nothing's popping up when I click the screen share maybe you did it before and it's in the background somewhere I've had that before try to move all your windows away if you were sharing your screen it wouldn't show your face to the thing out no but the sharing dialogue can sometimes be in the background and you can click away from it then you can't find it again that makes sense you might need to go out of the call and come back in maybe we can go to the next item yep it was in somewhere else is that screen being shown yep that's looking good okay I was going to start off with recent changes to the directory well first off categories two new categories have been added you have the categories this is from 2.6 where we have what do you call them calendar types I think there's one in there right now it's a Japanese calendar type I'm not logged in am I oh that's right it's for 2.6 so once that comes through we'll show up there the other thing was Ato in under editors in 2.6 it's not going to include Ato so we're going to have the Ato editor once that goes through testing and approval then that will show up by itself and it will also support plugins that I'm sure Damon will be happy to see the other thing I think might be useful to everyone is that there's now these two new RSS feeds that sort of split up the recently released plugins RSS below it splits it up into because that old RSS feed below includes version changes to all sub plugin entries including new ones and updates so now we have the new plugins feed so this includes only a first time newly approved plugins into the directory versus the updated plugins feed where these are only version updates to plugins so there's stark difference there and you might want to monitor them separately or both in line the old RSS feed will still remain there in case you also left this one yeah finally yeah I'm also still pondering which should go in the front page but this will work in line with the new theme that we're working on as well let's see so yeah that's the RSS feed notifications I'm sure most of the developers here would have noticed by now that I didn't get to cover this before but we've got notifications so if you go in let me log in here if you go into a plugin you can developers will get notified of comment approvals and say I go to simple clock that should be simple so these are the comments section previously this was a mess now you have the subscribe to comments this allows anyone to follow or stop following comments and you get notified of comments in this section the developers always get notified these can of course be managed in your messaging settings as well sorry getting distracted with dev chat can you guys hear me still yeah yeah can hear you fine yeah okay cool it was just very quiet notifications so further to notifications I'm thinking of adding more notifications like say new versions to a specific plugin notifications to like the RSS feeds going to build notifications from that so you get notified whether it's updates or new plugins or new plugins to a specific plugin you want to be notified about thanks for all the tweets um okay so okay yeah recently I just put this in as well so you might notice that this has popped up here translations I've been seeing a few comments in I'll get to that yeah a few comments where the translations are given in the comment I thought I'd like to sort of expose the fact that Amos and plugins directory are working together the plugins that you register here the lang file gets parsed and sent or sent and parsed at Amos and you always have a translation pack there for your plugin so if you'd like to encourage more translations of your plugin or find that they're used elsewhere but limited in language point them to that link point them to the latest translation version that is hosted at Amos I'm sure David Mudrak will can elaborate on that some more so I did also work on a little search of my own a few guys at HQ have been always asking about if this is used in plugins or if we change this will it break backward compatibility and usually of course it will you know people want to be assured so I've got this little search that is very limited at the moment too because it's a github preview API for github searching so what you see what I just did here was I searched code so this picked up at the moment it only supports github repositories all the github repositories for those code matches if I open this up here you can see that the filters and the links all show up for this plugin the same for say code checker so you can go into code checker and you know that the search query is there you can add on to it or play with it further or once the github API is out of preview stage I might look at open this up of course this is at the moment limited to github but definitely it will be better if we can search through everything so aside from trying to support different repositories we're gonna I'm gonna look at searching the actual zip files that we have hosting ourselves okay yeah so along with is the lag all right or should I slow down it seems to be up to two minutes for some people it's okay you don't have to wait for two minutes just keep going yep there was a translation ah okay so recently we've got a plugin that was taken out of core I have that open just search for if I can type okay so my mobile was used to be I think it got into core in 2.2 it's been taken out now obviously the bootstrap and its framework is going to be much more useful but this is still back in the directory because you know obviously it has worked for some people and there are people who like it and who might depend on it but the problem is we don't know who's gonna maintain it so we have a nobody user username is maintainer wanted I think I had this setup a while ago but now I'm getting to use it because of my mobile uh Jerome kindly put up the zip and things worked out so I think yeah it's approved now the thing about nobody maintainer wanted is you can if you're having problems with a plugin you want to share a plugin but you don't really have time to maintain it well feel free to add the nobody maintainer wanted user it's like kind of like a way to say ask for more maintainers I suppose we could rename the wording there to more maintainers wanted this is the first time I'm using this so just putting this out there yeah looking to using this for so we've got unapproved plugins and these end up sometimes dead in the water but it'll be nice to you know not get rid of code but have it re-energized or what's the word resurrected yeah so again looking at using this user so that we can advertise this page and trying to get things resurrected there okay that's pretty much covering all the new things future stuff before we get into future work lots of stuff yep so as you all know we've got beta I've added the model 2.6 as a version now to the plugins database directory so confusing the thing here though is that it requires the beta release this will be updated after release day so just to point out that at this point we can accept like we did the last round but I'm not sure if there are many registrations at that point but you can send in your plugins to require model 2.6 this beta version the thing though is that on release day that version number will be pumped up to release version number yep that's it about that that's it about that version number so on future work I have the model hat here I wanted to talk about lots of stuff do we have time the model hat is basically, well Martin created this he said this is a award given by me for my favorite plugins well turns out my favorite plugins have evolved into plugins that cater towards making it easier, fun to learn I recently approved put this up freehand drawing so that's a question type that matches a drawing with the teacher's drawing and it tries to gauge how much the drawing overlaps I think and gives you a grade based on that so the green parts are overlapping between the blue and the red these are interesting concepts, I mean this can be useful or fun for kids so this is sort of like things I've been putting up the award for of course the award I think people like the award so maybe you could come up with more awards to specify different things different areas which leads me to future stuff I'm trying to work on reviews where is the screen are you seeing the review screen no no looking at the my mobile thing yep yep oh gosh I think you're on the wrong window yep okay let me change that about the awards thing I guess the idea there was some sort of editors award but we also need writings and reviews from various other people as well to surface things in other words screen share sorry so I completely missed this I was going through the is that screen shared now so is the drawing shared now like this is the plugin I was talking about the hand drawing where we're still we're still looking at the my mobile you're on a window it's a different window maybe it has because I can see your mouse moving occasionally you've got something like 10 stats tabs a start screen share and it doesn't know that okay it's I'll just drag my tab onto this shared window yeah because it's actually sharing the window screen still nothing just sorry copying URLs are easier than a small screen my mobile so I came to this plugin on the plugin awards page which is just popped it up later so just mention sorry we're running a bit short on time so don't just keep moving sorry hit alright so future work I had in mind was can just copying stuff over from my other window too so annoying was the plugin reviews like to keep that up and watch and open that as you can see the UI at the moment the reviews are linked and tied down to per version that's not per version but per model version supported that was a bit too restrictive I think and especially when reviews still applied to the later versions it was not very fair so I'm going to work on that a bit and try to open that up as well as try to push for more people reviewing it actually there's a few people here from moodle partners and moodle partners do a lot of reviewing already so we're going to remind them again to I guess submit their reviews of things here so they can share them more widely and anyone else who might reviews if you're with a moodle site out there and you have reviewed a plugin then you should be able to get it here so I guess you need to make it clearer how to get them to you or to this page yeah well Helen has been helping out on that front when people were interested but there's always there's always a plugins at moodle.org which is also an alias to currently me but I'm sure everyone if you're going to review a plugin pretty much involved in the community and can contact me or Helen or anyone actually because we're all so close so the problem at the moment is only approved people can do reviews even general reviews currently yes yes so the plan is to open that up I'll have at the moment it's managed in cohorts so I'll have a more generic review opened up to a wider cohort of regulars so after that almost anyone who's actively involved posting regularly will be able to put up a review and you know further to that would have other criteria like security related reviews which of course would narrow the number of reviewers who could do that but the generic one will always be easily available for reviewing to regulars to the general community um yeah so that's one front for reviews my screening is being shared right yep the other front is notifications sorry I just screwed along notifications, subscriptions, I'm trying to add based on the RSS feeds and I think I might have mentioned it already the other thing is I have all these stats open um I hope the tabs are showing I notice that these stats are kind of skewed in the sense that you have all the plugins in that category say activities but they don't necessarily reflect a popular plugin across you know basically so these are one of the filters I'm trying to build into the statistics so that you can get a better cross-sectional view of what's going on also other things like movers and you can't really tell from the last two months what's gone up and what's gone down so I might highlight that better and the other thing lastly is tags so we've got categories here we've got these fixed categories mainly based on model structure but things have been brought up where we have all these video related plugins or we have conferencing plugins or we have various ways of categorizing users so I will be working on building tags into the plugin strategy that's about it okay thanks we should move on because time is moving on we're only half way through the list actually and we're well over half on time so thanks for that anyone has any questions or suggestions obviously talk straight to our group or on the tracker there is a project for it right there's a component under movable sites yes model.org slash plugins component right over to Panthe to talk about some session changes and then plugin management and sub plugins all important stuff so listen up Panthe hello everybody I'll continue first talking about sub plugins and general plugin management and after that after that about sessions in the backend team we looked at issues with plugin uninstallation performance on administration tree and all these areas and the end result is that the plugin management was significantly cleaned up it should be faster now there are some new features and finally all plugin types and sub plugins should support clean uninstallation all the plugins should be listed in the plugins overview all the information all the plugin management pages should be more consistent all the tables should be a bit more similar so if you are managing lots of plugins or if you are implementing your own plugins you should see some changes in this area everything is using the new automatic caseloader so all the plugins for classes are now stored in a new namespace and well all plugins for classes should be working there might be some small issues so I would strongly recommend to test your sub plugins and plugins in the beta version there are some release candidates and it would be great if everybody could update their plugin info in sub plugins you can see a lot of examples in the standard codebase I went through all the sub plugin types and all the plugin types and everything should be updated and hopefully most of the bugs we had there for years should be now fixed you can copy it from TinyMCE workshop or any other plugin type that is using sub plugins I guess there is one remaining issue I might be working and it's the installation of plugin dependencies there is some heated discussion at the moment in the tracker and in using Moodle so I guess we should resolve it somehow I guess if we have questions we could discuss it through the using Moodle or tracker and there is no significant changes it's just a cleanup but in all areas that are related to plugin management, sub plugins installation, uninstallation and all these tasks should I wait for any questions I've also updated the documentation for sub plugins I'm pasting it to the developer chat and we have activity modules for ages since 2.4 we have HTML editors can have sub plugins and now starting in 2.6 you can have sub plugins in local plugins and admin tools the only potential problem there is that the names must be unique throughout all the plugins so take good care to find a good sub plugin name which is short and it's not going to collide with anything else in case of activities I would recommend some activity plugin name for example workshop is using workshop graphics for everything but for some activities or plugins you might have some problems if the names is already long any other question oh and the performance in 2.5 it was quite expensive to use the plugin manager abstraction because it was curing database it was curing the file system looking for the versions now everything should be cached well most of the things should be cached in MUC so if you need to find out a list of active plugins you of given type you may use the plugin manager now it should be relatively cheap so that's also major improvement it was like I guess 20% of memory page and some database curies so of course only when you are logged in as administrator but it was quite significant when creating new plugin always try to find as short name as possible because it will save you a lot of typing and at the same time you will not have problems with database tables so something like atto, book or whatever else things like workshop they are too long oh oracle databases good question I went a bit ahead and tried to summarize current state of oracle support on the release nodes so far nobody was screaming yet so let's see where it goes okay any more questions about sub plugins, plugin management we still have a few weeks so I hope I will spend some time fixing issues in this area there are still some issues submitted for integration such as file permissions better compatibility with custom zip packages when installing add-ons and so on okay so sessions well there was a long long discussion about inclusion of memcache and also I had to explain multiple times what is the difference between legacy and well database driver for sessions we had since moodle 2.0 and one day I just told to myself enough it's not going anywhere and I tried to implement a fresh new sessions abstraction so I took all the bits from the database design from the memcache driver and I tried to find a subset of features that we really need and the performance that was present in the native memcache driver and we ended up with a new session infrastructure which also includes three new completely new session drivers one is for file storage second is for database and the third one is for memcached drive for memcached server what's the difference compared to the old drivers the performance is dependent on the underlying PHP session driver so instead of creating a completely new session driver like we had in 2.0 this new design is based around native PHP session driver and it's just maintaining the list of active sessions and their properties in the original session stable so if we compare the performance of the database driver it's a bit lower the performance of the file is also a bit lower and memcached session driver is also a bit lower but we are talking only about one query reading per page and zero point something right to database on page so the performance decrease was not significant but on the other hand now all the three database all the three sessions drivers are behaving exactly the same they have similar locking they update the same database table for example they lead the user the session is terminated in all three of them so we don't have the distinction between the legacy and the new session drivers anymore we just have three session drivers which are pretty much equivalent the memcached is strongly recommended for everybody with large installations because it has the best performance and it should be relatively reliable because it was tested live by multiple partners already so there shouldn't be any huge technical problems but you need to configure your service properly then the database one it should be as reliable as before and the file based session driver which is now the default one should be working mostly for everybody with decent file system that means it needs to support file blocking so so far we have just one report where sessions didn't work during installation but I'm not sure it's where is the problem coming from I suspect that's some file system or PHP problem on that one specific server nobody else was reporting any problems with the session driver yet so it would be great if all the large installation tried it with some jmeter or whatever and tried to measure the performance especially when using memcached server do we have any questions yes I could also talk a bit about clusters in the meantime and about muc improvements and performance improvements in general and in the meantime hopefully people might ask questions so we have the new local cache there directory which can be used on shared clusters and it's used primarily for the files which are used from themes so it's theme caching and also for local muc stores the changes were in themes javascript strings plugin manager and one or two more yes it's the course related caching and some more areas so if you compare 2.6 or m2.5 it should be easier to get better performance on shared clusters we have much faster automatic loading of classes and also all the stuff that's included for administrators should be much faster that actually improve the login times to for normal users well I hope it will be visible on the release nodes it's usually some features hiding improvements in other areas but database table problems no idea what the question is about yeah well the stuff that can be cached locally the only place which has up to date documentation is the definition of caches itself I was trying to add comments there when I was working on those improvements I always stated whether it has to be shared or if it can be local in case of the database well it's a problem because it should be shared cached okay well I'm not sure there's going to be any questions about it it all sounds good so thanks a lot good stuff I know we'll move on to Jason is stepping in to talk a bit about some html guidelines and some stuff that was triggered by a question from Tim in the notes so Jason are you still there yes I'm still here it's frozen yeah okay this whole project was started off by the front-end team primarily Barbara and Rosie in response to the discussion that occurred at the HackFest with Amy myself Barbara and I think she was also part of the discussion as well but it came out of the point that we wanted to avoid over complicating the DOM in particular headings where we had divs acting as h2's we had spans acting as h3's we had all sorts of crazy stuff happening and they were using CSS classes or class attributes and then targeting it with CSS in order to make it look like the element that it was impersonating so we've based on the discussion from the HackFest we've written up this html guideline the purpose of which is to provide the groundwork for clearer and more consistent document object model throughout Moodle you can see there in the purpose there what we're all trying to achieve we've started work on this I've posted links to the matter of the issues that include the issues that we've done to get this started and get this finished so far there's also a lot of discussion going on in the forum about it whether or not we're doing it the right way whether our goals are justified and all that sort of thing but the end objective is to improve Moodle both for sighted and non sighted users by improving the DOM in a semantic way and should have the side effect of allowing things in Moodle to be more consistently handled to more consistently handle edits this will then go on to be this will be extended to handle other elements paragraphs whatever that was the original goal whether that will continue is something that Barbara and Rosie will need to decide they were the ones that did all the speaking on this and basically wrote up the objectives for this issue that's about all there is to say about it does anyone have any questions I guess Tim Hunt would have been the one to have the most questions but he's unfortunately unavailable to be here doesn't look like there's any questions sorry I was talking to without my microphone I was just saying that Tim's obviously spoken elsewhere you haven't showed it that I can see that I just saw the one screen there but the headings look pretty good in my opinion of 2.6 on the places where they weren't before generally so I think it's a win especially on mobile so maybe before we move on maybe Jason could just mention what is expected of developers in relation to the particular activity modules basically what we're trying to do is get all of the headings into a semantic level I don't know if it's going to show up on Hangout but can you guys see that pop-up that's appeared on my page in Chrome there no we can only see the it's Windows specific that's really unfortunate because I've got this plug-in called html semantic headings and what it does is it gives you an outline of the entire page based on the headings in the page so for example this docs page it starts off with html guidelines as the top level then it goes to the next one which is purpose then header then underneath that it's a new level of block then back to the previous and keeps on going through like that and that's what we're trying to achieve with this heading thing we're trying to make it semantic so it steps down there are no skip levels and as you can see here in the docs there's an example with the book what we really want to achieve and we're trying but we haven't quite mastered yet all of the different areas all the different modules for example quiz, school, LTI where this should also be applied but if other module authors and developers could have a look at this page discuss what they think is wrong with it or right with it on the forum give us some feedback and try and implement it within your modules so that we can get a consistent looking moodle for all themes so that themas don't have to worry about this page looking different to that page because this heading is missing or they need to target a H3 and make it look like a H2 because there is no H2 on the page and that sort of thing as for the duplication of headings that's something that we really need to get sorted there has been a few duplicate headings but from what I saw of Tim's comments his biggest complaint was not so much the duplication of headings but the duplication of the content of the headings on the page so we would have a the break crumbs would mention something and then we put a H2 on the page instead of the exact same thing now that's not a problem because if you don't want to show the H2 you can access hide it right off the page so it's there for the screen reader but it doesn't show up visually for the regular user to see things yeah so that is one solution to it that's the idea David we do hope to have the themes controlling over it because we're hoping to put everything we're trying to put everything through renderers so that if the theme wants to overwrite the renderer they can and we are trying to put sensible non-vague non-plain boring class names when needed on elements so that if they need to be targeted they can David Scottson has raised a very good point that we need a way of discerning between user entered headers and theme rendered headers so that they can be rendered differently within the page so if a user inputs a H1 in its content in a page content we can make it look like something other than a H1 or we can wrap it and make it look different while that is not great for semantics it is good for theming this is probably very good we should keep moving that yeah well I'm done if nobody else has any more questions I'm happy to move on thanks Jason actually while we're talking a bit about accessibility there I should mention that in case people weren't aware we have a new policy about policies there is a component in the tracker that has major policies that get discussed and decided and so they're then recorded and I'll just post the link here it's probably not the best link but there you can see recent policies that were closed or decided and one of them which is the relevant one that I wanted to just mention is that we've decided that from now on new features can land in Moodle without having a non-javascript fallback which is a change from what we had before we always said that if javascript is off all features should fall back to something that still works the policies now we will allow things to have to not have a non-javascript fallback however they do have to meet WCAG WCAG guidelines double A so the exact link for that I just lost one second so from now on basically your work has to be super accessible if you're going to be relying on javascript and that is MDL 41535 which I'm not sharing the screen it's that one so read that and if you haven't seen this before maybe you want to check out the other issues and the policy thing and get involved we try and HQ on our weekly meetings we try and look at some every week to get through them so we've got quite a few other ones decided so moving on the next thing here on the list was Sam to talk about the backup and restore of large courses now being much more reliable which is a cool little thing that actually I only discovered today because it all hit while I was away recently so over to you Sam are you here? he's not here how are you going to get in Sam? well if Sam's not going to get in quickly then I'm going to jump straight to Sam who's next are you able to link to him? I just did in the dev chat there okay sorry no no Sam actually did message me before and I missed it he said he's having trouble getting on to the hangout and isn't going to bother so okay so well the two things that he was going to talk about was the backup and restore of large courses is about it now supports tar and gzip instead of zip if you wanted to which is a pretty cool thing and the restore is backward compatible and will handle both types of formats so it should be transparent to users they just shouldn't know but the reason the nice thing about that is you can have over four gig files so from very large backups that's good the last bit I have no idea can I make it so activities can own sections well go and look at the bug and tell him if you think he should I don't know what that means I'm not going to read it now on video so is there anything else that anybody wants to cover we've got nothing else on the agenda so I'll just wait for a minute or so in case anybody comes up with anything on the dev chat looks like we're winding down going off topic so I think I'll end it here and obviously we have the dev chat all the time 24 hours so you can always talk in there keep in touch we'd like to see you in there even though it's obviously we're all on different time zones but that's how it is thank you all thanks to everyone who has helped all of you with Moodle as usual it's vastly appreciated by everyone who uses it and thank you very much for coming online for the meeting and we'll see you next time so ciao thanks everyone see you later