 All right Good afternoon. Thank you for coming after the almost the end of the conference. You got like what two more talks So I'm here to talk to you about forking. How many of you have ever forked software before? Okay, how many of you have maybe used forked software before? Okay How many of you like forking software? Okay, so I have some experience with forking software I I forked my SQL when we founded MariaDB server But that's not the only experience I have with forking software Because open office eventually also end up having a fork called Libre office and actually that fork was kind of an easy fork Because there was something called old build for Linux users So there's a lot of experience around forking A rough quick agenda around what I will be talking about Because folks mean different things to different people. Does everybody use github? Who doesn't use github? How about that? Okay? So That's a picture of a fork So it in software engineering a fork is basically you take an existing code base it's a very weighty decision and you can definitely You know force many parties that are reliant on the software to choose between one or the other And this is very true in many things like you know today my SQL And MariaDB. It's also very true from a Libre office Open office standpoint and so forth But the github generation forking means something else completely For one when you start something people people the maintainers they sort of appreciate that you've done some good work It's kind of like a bookmark Then they also encourage you to fork software But that is not a typical software fork that I'm going to talk about Forking software is basically you making a repository making changes and then Asking is submitting a pull request. So this is more a workflow and get up. Just calls it a fork The first open-source fork that I could actually track is actually postgres It's when Michael Stonebreaker decided he wanted something after ingress and today Postgres is what is probably what you're familiar with called postgresql So the first probably known fork was in the open-source wall was a database But maybe probably one of the better known forks is Gnu emacs and xemacs anybody here use emacs Okay This one really actually split an open-source community It also touched end users. So when I went postgres forked from ingress It really wasn't a you know, very end user end usable stuff But emacs had a nice UI and stuff and it had many many code branches And this is just a snapshot of those code branches This comes from a guy called Jamie Zawinski who made a lucid emacs and It's it's so big it can't even fit on a slide and he's actually made emacs timeline So if you Google JW that emacs timeline, you get Jamie Zawinski Zawinski's emacs timeline and Generally speaking forks take a really long time to play out in the case of emacs and xemacs It played out from 1991 all the way up to 2015 Timelines here 24 years before One one over the other When it comes to copyright assignment as well as contributor license agreements many open-source projects have them the free software foundation Definitely sees this as important And necessary for them to defend the code against gpl violations Whereas the xemacs developers for a long time argued that the lack of a copyright assignment Was what allowed major companies to get involved hence the you know formation of lucid and so forth And it allowed sometimes companies to license code back and so one of the major reasons to fork had to be around copyright assignment and Maybe if you contribute to open-source projects today, you may also end up Occasionally having to sign a contributor agreement, which many people do but many corporations find it maybe hard to do So the last table release of xemacs came out January of 2009 They always thought there would be a need for compatibility at the lisp level so lisp is a language that you get inside of emacs and There are a whole bunch of third-party packages like people use emacs to read email and they just move directly back into the emacs tree Then it turns out the reason Forks sort of disappears that you end up getting feature parity So once ex once emacs had feature parity to pretty much everything xemacs had as has an Enhancement they realized they were at a crossroads and there's probably not much reason for xemacs to continue development So that sort of stopped in December of 2015 And I think if you go and try to go to the xemacs of arm today even that domain does not even resolve any longer My SQL is definitely the world's most popular open source database There's another track downstairs. I think in the on the second floor. It's where we've been it started in May 1995 It's now many many years old. It has a huge history My SQL didn't start off as GPL software. It was not really licensed. It was sort of in the public domain but you had to pay for Save binaries on Solaris And on Windows since the idea was a you already paid for the OS you might as well pay for the software but my skill then became GPL in 2000 and dual licensing was definitely popularized by my SQL because the Libraries were also made GPLs and you get a copyright assignment sent to the company So the company actually owned the code But it wasn't it was definitely not invented there because a ghost script had it before as well In a DB Friday happened in 2005 Oracle grabbed the IP of the most important storage engine for my SQL the engine that made my SQL transactional and not a toy database so the first ever Maria project started actually back in my SQL days itself in late 2005 and The reason was because in a base had already been acquired. The idea was let's make another storage engine called Maria to Basically be a transactional my ISM. Is everybody who used my SQL before who has not used my SQL before? Okay, so you're familiar with storage engines my eyes. I'm in a DB and so forth So Maria was actually started off as as a project to be an engine so we we fast forward a little bit and There were other forks inside of My SQL as well. So this is a good example of one that started while my SQL was acquired by Sun Called Drizzle Drizzle doesn't exist anymore Well, then there are many other branches as well So to give you an idea of how long it takes for a fork to get started the first beta release of a server started in October of 2009 and many of us Were already working on the Maria project. So back then we used to use we went from bitkeeper to Bazaar and launchpad and now we use git and and github. So It took a fairly long time before we could sort of make a fork just just ready Because we already had a tree a base tree that we could use so The one thing that Maria DB sort of wanted to do right afterwards was to ensure that there was a foundation formed So and this would mean that if the corporation ever got acquired probably will have to get acquired This would mean that at least the software code remains open source So you don't make the same mistakes my SQL again Sky SQL was what was a company that has totally raised nearly a hundred million in VC funding So we fully expect that the company Maria DB cooperation has to get acquired because they bought Maria DB and they renamed the company to become Maria DB If you're gonna fork you want to make sure you have a story This is the story that managed to get people to use Maria DB From my SQL we would go to trade shows and tell people hey if you've used if you've heard of my SQL You must hear about Maria DB. Hey, we're the new emin lamp Even though maybe people don't use a lamp stack anymore and this was this was the original goal for the project And of course it didn't hurt that the competitors from Maria DB the project overlords were Oracle people for some absurd reason have an aversion to Oracle they have Bad memories for some reason or perceived memories, but Oracle has been great So make sure it's community developed right participate in Google Summer of Code Take stuff from other people because smart people are everywhere, but but in one one place And that's something that my SQL has never really managed to do so much My skill used to do this before the Sun acquisition, but never after We also want to make sure it was available everywhere So our logic was look if our fork is going to be Utilized we must replace my SQL in Linux distributions So we worked really hard to replace my SQL in every links distribution possible Because we were at that point in time backwards compatible But today when Maria DB is completely a fork and they're two different competing features I guess Linux distribution sort of realized that you have to offer both my SQL and Maria DB because the two different products But when we started we would just a drop in replacement This is also you can take a page on the cloud providers when you go to Amazon RDS You actually get to install my SQL or Maria DB. You don't get to you don't get to say hey, it's Maria DB That's actually my skill We also care about usage right usage really matters and OpenStack every six months runs the survey and it tells you What kind of usage? Patterns you're getting and if you're making a fork and you're not getting users then you're then you're probably forking for the Wrong reason for forking without users is kind of useless Of course in the my SQL world There are a whole bunch of branches and forks and people want to maybe migrate between them now If you could compare this to other things like say LibreOffice It may be a bit easier because the file format at least stays the same between LibreOffice and OpenOffice But it's not necessarily true when it comes to database features So So when you come to a fork in the road, maybe you should take it Sometimes you can backboard fixes So when you when you fork something you may think I can do I can do a merge and add features or sometimes you cherry pick features The merge and add features way is way easier and way Maintainable over a long period of time compared to the whole let's cherry pick because you'll miss stuff out during a cherry pick That's guaranteed So generally speaking From an engineering standpoint, I highly recommend that you you think more of a branch Than a than a hard fork But forking is forking becomes very expensive from an engineering standpoint as well Of course This also means that you've got to get rid of the not invented here syndrome that people tend to have When they wanted to do a fork They say, you know, you shouldn't look at you shouldn't look at something and say, oh, you know They've written that feature and it looks kind of odd. I can do it, you know, five percent better Because the reality is if you even if you write infrastructure software and you can get five percent better performance How many people run the infrastructure? How many people would benefit from that if you're looking for a user base? Probably not as many as you think also When you fork something like in the case of drizzle, there are two things one could learn from them One is you know when you make a fork you don't be aggressive you make it easy for people to migrate to your fork Because if you make it such that you can't even migrate say a wordpress a fairly simple schema database schema like wordpress To run from my SQL to say drizzle You can't you don't even allow wordpress to just be ported over directly because you've decided to be standards Compliant and remove features like a medium int for example Because the standard doesn't include things like a medium int and you want to be on csql compliant That turns users away because if you're not if you're not easy to use people are like we don't want to touch you Also drizzle think we'll teach you something else about making a fork If you all work in one company and you're the only people contributing to send fork if that company changes its ideas like in the Case of drizzle they said hey, you should go work on open stack rack space is not interested in a database anymore Then but then the project dies So this is something else you need to think about when you when you decide to go out there and choose software that you're going to use so Libre office They forked in late 2010 It's it you know it started its life as staff is Sun Sun purchased that and then had an open office project around around it But the fork was actually made very possible by the fact that there was something called OO build Which started by Michael Meeks of then Zimion and novel now collaborate and the goal was to make it easy to build a Linux OO build was a way to make open office build easily across all next distributions And that's how red hat managed to contribute to it Of course the Zimion folk did and whole bunch Other Sun even made commercial agreements with people like IBM so IBM's lot of symphony was actually based on Open office. How did how did that manage to happen when you make a commercial agreement? That's because every time you contributed to open office as a community member you signed a contributor license agreement And that's probably one of those bonuses of having a CLA However open office the Lord languished while it was at Oracle So LibreOffice sort of just took over and by the time it was too late I think Oracle decided to give it to the Apache foundation and by the end of by the end of maybe third quarter of 2016 The Apache project realized that were just lack of active developers or contributors that it didn't make much more sense to continue open office And today if you start needing to use software you probably just use LibreOffice But there's so many others When it came to Nagios and Icinga Nagios decided to take a more commercial path. There's a monitoring software and it took ten years for a fork to appear called Icinga It started first off as a hobby Nagios I love as a hobby like most open-source projects Then they maybe decide to make money obviously then people say hey Maybe we should in get investor money and then investors usually say look we were happy to give you money But within ten years you got to give us like ten times back the money Very hard to do with open source Nagios was serious about trademarks Slowed very very slow development on the open source project led to the creation of Icinga both now have active communities Though Google trends of course suggest that if you use that that Icinga probably needs to work harder at marketing OpenSSL and LibreSSL Maybe a few years ago some of you may remember the Ability and that they aimed to actually start refactoring code to make a more secure implementation OpenSSL at that stage and probably even now still needs better funding But it's a critical piece of internet infrastructure and the Linux Foundation decided to found a core infrastructure initiative to make that happen The whole Node.js and IOJS fork was was very short lived Largely because it was a governance issue. They needed an open foundation to help with more development No, no one in the community wanted just one single company to actually control active development at that point in time Joint was actually pushing Node.js fairly heavily joint was then acquired by Samsung So the Node.js foundation and love being part of Linux Foundation umbrella organization Everything's good. No no reason to fork Probably today you don't even hear about IOJS any longer Hudson and Jenkins so again not to pick on Oracle, but they seem to actually generate good forks Oracle basically said there's a trademark assertion on Hudson so the community decides to vote change the name to Jenkins and Oracle basically said Jenkins is now a fork. They will continue developing Hudson and but Jenkins today I guess is probably way way way more famous There's no security patches that we see that are being pushed to Hudson Hudson eventually got donated to the Eclipse Foundation probably to rest in peace just like open office So again not to pick on Oracle they're doing an excellent job with MySQL In fact, they're probably running most of the office in the track downstairs and my skill keeps on getting better own cloud and next cloud this one just bizarre The corporation basically received investment then one day the creditors cut them Off next cloud is a new thing with the next cloud foundation There's probably a much better story that one could tell if one went out for a beverage with the people behind this Sugar CRM and sweet CRM If you decide to quit doing open source and people depend on you they will fork Sugar CRM basically said we like to make money We're gonna stop developing the open source version and I know lots of you depend on it because it's a great alternative sales force People said no, we're not going to pay you money. We're just gonna fork and we call it sweet CRM Open BSD and net BSD open BSD is a very focused fork to your direct decided He wanted to make a much more secure net BSD. So he forked From a redhead standpoint I'm sure they they love that Oracle Enterprise Linux basically rebuild sent to us Sent to us is basically rel for people without subscriptions that even Red Hat is quite happy for you to use OEL is the hostile rebuild of of sent to us. I presume there are many people here with an Android phone Maybe not everybody is using a pixel phone Or or maybe to be fair. There's a Nokia also apparently now ships Android that's pure but however most of you probably use Android that's unpeel and They're basically forked androids Your user experience is affected the upgrade cycle varies And that's fragmentation in the market And I'm sure if you're all following the whole Cambridge Analytica fiasco You're also realizing that if you're using older versions of Android the messenger app probably uploaded all your phone calls to the cloud Bitcoin how many of you came in for the cryptocurrency aspect of things? Okay, good. There's another track for that however Bitcoin and And other cryptocurrencies they can they can do a hard fork They can basically think of a permanent divergence in a blockchain and it can occur with upgraded nodes and non-upgraded nodes And then the non-upgraded nodes will not be able to validate nodes for the future And then they use a consensus mechanism to say hey, okay, we've moved to this new standard maybe and You can have a regular hard fork and also a soft fork in the cryptocurrency world and If you Google forks, it turns out it's a great way of printing money So every if you decide today to create Bitcoin for seizure you could If you decide to create like coin for seizure you could in fact The holders of the existing Bitcoin will get access to other things So Bitcoin and Bitcoin cash or something that something has something like this happened And you actually you virtually start printing money, but you don't actually print like Derek derivative money, right? You print forked money And again, it's a how do you pick a winning fork? Those who can't obviously remember the past will probably repeat it. So one thing's for sure Why are you forking? The mere existence of a fork isn't what hurts a project rather. It is the loss of developers and users So if everybody decided to switch to Bitcoin cash and stop Bitcoin Bitcoin would die This is an extract that I've taken from Carl Fogel's book producing OSS. You can get it online for free as well Your real aim really is to minimize the harmful effects of a fork So generally speaking a branch is definitely better for development to continue in both directions Whereas forks generally slow development in one side. So if you look at the e-max axiomax example Pick a good name that focuses on in values Hence the whole new admin lamps scenario Takeaways if you're going to pick a winning fork the community matters your developers matter never ever annoy your community Work with them harness them Don't irritate them No matter what you plan to do your developers are really king They're gonna they're gonna push you if you're gonna choose a cryptocurrency to back Make sure they've got good developers behind it. Otherwise It's probably one of those scams You want to limit end-user friction make it easy for people to get on board You also want to make sure you're fairly well funded because that's part of the sustainable development method Methodology right it's getting much harder for you to get say if you decide to start a foundation get tax exam status in the US Any longer Go with another organization like the links foundation or something an umbrella organization think if you need a contributor license agreement as well and Hate to tell you You only fork after all other options are exhausted. You don't fork because you think I'm going to print money That's a really bad idea to fork forking for the sake of forking is very very silly Have a clear fork focus as a user of When you're choosing a bunch you got to think about the innovation that's happening today You definitely have to think about vendor locking because it turns out that even in open source You could be vendor locked in without you really really realizing it Think about the features you need today as well as tomorrow look at the support ecosystem around it as well No point using a fork that nobody supports or just one company supports And you can be smart about these things right look at website changes if they've taken money to fork You can obviously look at the web.arca.org to see they're spending money developing software or the developing websites unless that was the purpose of the fork and Remember venture funding as pitfalls as well. Sometimes things fail so with that Never like x386 or xOg and a myriad other folks that even exist so But maybe the best takeaway is is a branch better than a fork Probably yes But if you're gonna do something make sure you have a really clear fork focus If your focus of a fork is ego ego is a really bad motivator to do anything Ego is truly an enemy for if you're gonna fork software Okay, I think I'm out of time, right? well listening and I'm open to questions at the back outside The next be curious here, okay, so