 Hi, everybody. Thanks for coming. My name is Vicentiu and I work for the MariaDB Foundation. I am a software engineer. Today I'm going to talk to you about MariaDB and why this is important for Debian given the recent announcement of Stretch. First of all, have any of you heard of MariaDB before? Yeah. Okay. So, have any of you heard of MariaDB before? Okay. Quite a few people actually. Well, for those of you who haven't, MariaDB is a fork of my skill and I assume people have heard of my skill. Now, why does MariaDB exist? So, our first release happened in around 2009 and MariaDB was created as a response to Oracle acquiring my skill. It was uncertain back then what would be the future of my skill and thus MariaDB was born. MariaDB was started by the original authors of my skill, including Michael Montevidenius and now has its development guided by the MariaDB Foundation. The MariaDB Foundation owns the copyright for the MariaDB server and this is made to ensure that there will always be a MariaDB server. As I've said, our first release was in October 2009 with MariaDB 5.1 and this is when MariaDB has introduced quite a few extra features which were not available in my skill at the time and throughout the years we've finally managed to get ourselves as the default MariaDB variant, my skill variant in Debian. So, this is an important step and if some of you haven't read the release notes, this will probably come as a surprise and maybe there are questions about compatibility, how is this going to affect me? I am able to answer most of these questions so if you have any, feel free to interrupt me. There is plenty of time for questions as well. So, first of all, I'm just going to go through a brief history and a rundown of everything that's happened. So, the MariaDB Foundation was created to ensure that MariaDB server always exists as open source software. Our goal is to foster collaboration to be the point where people want, go through in order to collaborate on the MariaDB server. We also aim to increase adoption and basically promote MariaDB wherever possible. Currently, we are a staff of eight people, so not a lot of manpower. We mainly deal with porting and packaging MariaDB for various Linux distributions. We do do some code review and write some patches, but most of the development resources come from the MariaDB Corporation. The MariaDB Corporation is one of the sponsors for the MariaDB Foundation, but it is not the main one. So, most of the development actually comes through the eyes of the community. So, whatever the community thinks that it is correct, this is what the MariaDB Foundation analyzes and this is how we decide where to take the server. Most of the sponsors are corporations. So, the biggest one, the biggest user for us is actually booking.com. They're using MariaDB in production. Basically, their whole backend runs on MariaDB. There are MySQL instances as well, but it's a very good example of a use case that works in a very profitable organization. Other recent sponsors include Alibaba, which is basically the Amazon of China, and also Tencent Cloud, which is again a Chinese company. So, where does MariaDB stand right now compared to MySQL? Well, everybody knows MySQL. It's probably been around for quite some time. If we compare the popularity of MySQL compared to MariaDB, you can see that MySQL is way up here. While MariaDB is slowly growing, but it is actually the fastest growing database in popularity as of, I think, April 2017. We are used and supported officially in multiple platforms, such as WordPress, Wikipedia uses my MariaDB as a backend. So, these are some of the companies which make use of the MariaDB server. Let's look at how we actually interact with the community. So, a lot of our development comes from contributions from the outside world. So, looking at 2016, we had about 140 pull requests, which we reviewed, and about 80% of them got merged into the server. If we look at this year, it's only been half the time, but we've gotten the same number of pull requests. So, we're basically doubling our contributions year over year, which is one of our main goals, and I think we are succeeding in that regard. What I hope to also leave you from this presentation is with a few ideas on how to contribute to MariaDB as a project, but also to other open source projects, and perhaps how you can make use of our ideas in your open source project. If we look at the graph, we can see that MariaDB has had, so the first two lines are MariaDB, the other two are Oracle. One is for 2016, one is for 2017. We can see that the number of contributions from the community are increasing way faster than the way Oracle does things. And here's what we achieved through these contributions. So, first, we've managed to get MariaDB 10.1 in Debian. We actually aimed to get 10.2 instead of 10.1 being more feature-rich, but unfortunately, we just didn't have enough manpower to fix all the bugs which we had in 10.2 by the time we had to freeze. However, we did release a stable version of 10.2, which includes a lot of important features. So, we have advanced querying features. Half of these were contributed by a student working for about three months. Then we managed to get MyRocks, a highly-performance storage engine developed by Facebook that aims to reduce the space use on hard drives. This is mostly aimed for SSDs, while still maintaining performance comparable to the main storage engine, which is InnoDB. And we've had a contribution from Alibaba, a flashback plugin which allows you to return your database to a point in time previous to when disaster happened and you deleted all the rows in the database. And we also managed to get 10.3 as a first alpha release. 10.3 focuses on compatibility. I have a talk about all of the 10.3 features which are planned. So, if you're interested, tomorrow I'm going to present everything that 10.3 has. I'm trying not to get this talk to be too technical. This is mainly about contributions from the community. So, how do we interact with the community? Well, from the start, when MySQL was initially created, our goal was to be as responsive to any question from the outside to give as much help as possible. And we've tried to maintain this in the MariaDB approach to things. So, we are very responsive on mailing lists. If you ask any question on MariaDB developers, you will get an answer. If not in hours, at most of the day, you will get an answer. You can find us on IRC on MariaDB at FreeNode. And if you do submit a pull request for us, even if it's a poor one, we are more than happy to give you feedback on it and give you time, even teach you how to write a correct patch so that it does get accepted into the server. So, the main thing here to take is that whenever you try to interact with us, you get an interaction from a human being, not just a canned response, which unfortunately is part of the way Oracle does things right now. So, we've tried to steer away from such an approach. Here's an example of a pull request. This is actually reviewed by me. So, Groover Dan is one of our main community contributors. He, I think, submits about 40 percent of the pull requests each year. They're not necessarily big contributions, but he does use MariaDB where he works, and he provides fixes here and there whenever he finds a problem. And here's an example. I think for his contribution, I also had a chance to review it before giving him the reply, and I gave him the reply immediately. Unfortunately, this particular pull request is not yet merged. We've had a long discussion around it, but discussions do happen, and we take all the input. So, I think this is one of the main reasons why people do send us pull requests. Now, if you want to contribute, we do take pull requests obviously through GitHub, but you can also contribute on our documentation. Our documentation is in the form of a wiki. It's called a knowledge base, and you can edit it. It's free for everyone. We have not had problems with vandalizing, so the documentation is pretty much correct, but we do still curate all contributions to make sure that they are not wrong or missing elements. Now, if you want to contribute from a technical standpoint, say a code patch, for new time contributors, you need to be patient. The code is very old. It's been inherited from MySQL, but any questions you have, we are more than happy to answer them. We actually take a lot of first-time contributors, which are students, so people who have had no software development experience outside university, and we managed to work with them to get important features out the door. I, for one, actually started working for MariaDB as a student. I did one of the key features way back in 2013. If you've heard of roles in the SQL standard, this is what MariaDB supports, and MySQL still does not support as a stable feature. They've managed to now almost implement it. We do have open bugs, but most of the open bugs are not really trivial, so if you find interesting, do ask us. You may bite off more than you can chew for the first contribution. One of the projects which we proposed for Google Summer of Code, we tried to make them as self-contained as possible so that you can actually get to work and be productive. Here are a few examples, such as extending the authentication backend. This was something which we tried to do this summer, however, we did not get a chance to finish it, so it's still available. The other ones are also pretty good as starter projects, so if you know anyone or if you are interested in contributing, do ask us about these. Ask me right now if you want. I know a few details about them. One thing to note, and this may be something that some may have questions about, we require all our contributions to be submitted under the MariaDB contributor agreement or the BSD-free license. The key thing here is that the MariaDB foundation needs to have copyright over the code. One of the main reasons for this is that we need to be able to maintain a GPL-compatible license and do not want to fall into the trap that OpenSSL has with the licensing problems. I can go into more details on this if you are interested. If you want to contribute from a non-technical standpoint, you are more than welcome to help us. We have a lot of knowledge-based pages which are only in English. Translating them would be a real help. I don't think we have any French documentation right now, so French is more than welcome. The way Maya SQL used to work in development before was that all its features would be tested by the community. The more people we have testing our upcoming features, the faster we can get our stable release out, because that's where you find bugs earlier and can fix them faster. Please try out any alpha or beta release. Don't do it in production. That's obviously not a good idea. But please try out any releases and let us know of any bugs you find. I guarantee you that any bug that you report will be looked at and investigated. We do not shove bugs away. It's just that since we are not too many people, it may take a while for it to be fixed. We also hold biannual conferences. These are developer conferences, much like DevCon. They are free to attend. During these developer conferences, we actually plan our next steps, our next features. If anyone wants to get involved into this, you can come. You are more than welcome to. We do announce it. This one has been announced a week ago. Our next developer meeting is in China. It's in Shenzhen city. If you want to come over there, come meet with us. Now, that's all for the slides that I have. I hope that you actually have more questions for me, because I kind of prepared for a debate, especially about how MariaDB is now the default in Debian and basically replaces MySQL implicitly. Thank you. Any questions? Sure. I can repeat the question. The question is, what is the status of MariaDB in other distributions, not just Debian, for example in Ubuntu? We have had one email from a Ubuntu developer in about 2014, which seemed quite promising that they are considering MariaDB. We are strongly focusing on getting MariaDB default in Ubuntu as well. This is one of our next steps. We are aiming to get into Ubuntu. Other distributions such as Arch Linux actually adopted MariaDB quite a while ago, and if you were to install MySQL, then you would get MariaDB. I am not certain about Fedora status right now. I know we produce packages for Fedora, and I'm actually one of the persons involved in making sure that there are no bugs in all the architectures that all the distribution supports, so the 10 main ones in Debian, and I think there's power eight on Fedora still. We try to be as friendly as possible with distributions. One of the things that does come up, especially in database-related conferences, is the compatibility between MySQL and MariaDB. Say you had an application which was using MySQL. Let's say WordPress, for example. Until recently, they did not mention MariaDB as supported. Previously, we claimed that MariaDB was a drop-in replacement. Obviously, as time went on, starting with version 5.5, we have actually changed the version numbering to differ from Oracle's MySQL, so 5.5 was the same for both MariaDB and MySQL, but then my MariaDB had 10.0, Oracle continued with 10.5.6, then 10.1, 5.7, etc. Most of the features which a regular application would use will probably work both for MariaDB and MySQL, no problem. The problem comes when you're trying to use advanced features, such as replication, and not regular replication, but replication that chooses global transaction IDs. This is a feature that started in 10.0. It's the first feature which differs entirely in implementation from MySQL. We have tried to make MariaDB behave as nicely as possible with Oracle's MySQL. If you give MariaDB the data directory from MySQL, it will load it. It will do its best to behave as if it were MySQL. There are obviously differences which we did not agree with Oracle, and we changed those, but most of the features should work, and we're trying our best, given how little information Oracle gives us to maintain as much compatibility as possible. I can repeat the question if it's... You said that MariaDB tries to respect the SQL standards. Yes. For example, SQL 9.9 standards, you cannot have unsigned integers. What will happen with bad compatibility for software that needs unsigned integers? Okay. The usual way that we treat this is we have switches which enable or disable such behavior. For example, 10.3 actually starts implementing Oracle style syntax, which is not something that's always 100% compatible with MySQL syntax. There's a switch which enables or disables this sort of behavior. If there is such a concern, for example, with integers, there will probably be a switch for this case as well. Thank you for your presentation. You said there is no French documentations. I think that's what you said. So, to the best of my knowledge, I do not know of any pages written in French. If there are, then I know there are not a lot of them. Okay. So, maybe I can help you with that. If I want to help you to translate or how can I help you with that? The best way to do it is to just create an article, maybe add the same title as the one in English, but in French. And just ping us on IRC, the MariaDB discuss, MariaDB developers, mailing list. Generally, if you add it to the knowledge base since it's a wiki, it's just going to be there and you'll get all the credit for it. Okay. Thank you. One thing to note is that I'm not very knowledgeable about how the licensing works for the knowledge base. It should be creative comments, but to not take my word for it, you should read the license agreement beforehand to make sure that you agree with it. So, I have one question. You mentioned licenses. So, what is the situation with the licenses of MariaDB versus MySQL and so on? Because as far as I remember, for MySQL times, there was this dual licensing commercial for company and GPL. Now, after fork, I assumed this was GPL, but you mentioned this MariaDB contributor agreement and BSD license. So, what's there right now? Okay. So, historically, there was this dual licensing thing. This was, obviously, basically to enable the MySQL to continue development. It was for profit. This cannot happen with MariaDB because MariaDB does not own the copyright on the part of the server which existed before the fork happened. So, all that code belongs to Oracle right now. That code is now GPL version 2 licensed. The problem is that Oracle can change at any time the license for the code that they own to anything they want. And what we do is we try to maintain compatibility by fetching patches from Oracle, porting them into MariaDB. It's not the one-to-one match, but we take their patches and merge them into MariaDB. So, this is all fine. They remain under the GPL version 2 license. However, if a contributor comes in and submits their work under GPL version 2, it's still fine. All the code is still free. But if Oracle then decides to change it to something incompatible with GPL version 2, for example, GPL version 3, we would be unable to fetch any more patches from them if we are not able to change the license to GPL version 3 ourselves. So, we would be stuck with the GPL version 2 version of the code and are unable to merge GPL version 3 patches from Oracle anymore in order to change the license if we need to ask permission to all the contributors who have contributed their code to be able to change it to GPL version 3. And in this case, it just creates a potential extra barrier, which is why we are accepting contributions either BSD version 3 or under the MCA agreement. So, if I understand correctly, BSD allows you to relicense to GPL? So, BSD is free enough to not have this potential problem. So, either to have MCA to allow for relicensing by MariaDB Foundation or have BSD which is free so it can be merged with GPL or any other license. Okay. This is the general idea. I'm not a lawyer. I cannot tell you the fine points, but this is the main idea. Okay, good enough. So, can you elaborate a little bit on the relationship between MariaDB Foundation and company because those are they completely separate? Yes. So, there was the slide with sponsors here. So, there is the MariaDB Corporation logo here. Right there. So, that's MariaDB Corporation logo. So, the main financial sponsors for the Foundation are booking.com, Alibaba, and Tencent. I think around April, there was an announcement that the corporation provides at most one sixth of the funding for the MariaDB Foundation. So, in the sense of financial incentives, the corporation does not control the foundation. What the corporation does, however, is provide us with a lot of development resources. About 30 plus something developers, you can look at the commit log to see who is actually committing. They are resources from the corporation and with the foundation, they help us build the MariaDB Server. However, the foundation has the final say in what goes into the server because the MariaDB Foundation owns copyright to the MariaDB Server. I think this mostly answers your questions. I saw on the website that MariaDB is developing C++. Is that true? Are there any other languages involved? Is it true again? Sorry. Is it true in? Are there any other languages that? Oh, yes. So, the main logic in the server is in C++. But we have the testing framework, which is written in Perl. There are a few Python scripts, but we try to not introduce another language. And there is also just regular C. So, we have certain parts of the server, which are basic C. Others are C++. There aren't any other languages. This is mainly due to historical reasons. And right now for practical reasons, it's already hard to deal with these two. I think another one is just not worth it. Although I have personally tried to get Python in and have received a lot of pushback from other developers. I have another question. Why is that called MariaDB? Oh, so MariaDB comes... First of all, let's start off how MySQL got its name. MySQL got its name from Monty's, the creator of MySQL along with David Axmark. They named MySQL after my, his daughter. And MariaDB was named after his youngest daughter, which was Maria. So, it just keeps the trend. And the seal... And the seal was chosen by Maria. Okay. So, tomorrow I have a more technical talk as to what 10.3 has, feature-wise. And I know this is not a database conference, but I also have another talk about 10.2, advanced querying features, which can speed up performance on certain queries from ones that last two hours to execute to about two minutes. So, if you would be interested in such a talk, I'm more than happy to give it. I will try and schedule it for a Birds of a Feather session. And if you want to, feel free to attend. Okay. And if you have any more questions, I'm around here. Thank you.