Getting the first PR into .NET and other tales from an OSS contributor
CC Attribution - NonCommercial - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Ralph, Adam
The world of open source software has never been more exciting than it is right now. Communities spanning all platforms are thriving and more inclusive than ever, with like minded individuals and organisations, small and large, working together to produce great software for everyone. In particular, Microsoft are making huge strides into OSS with frameworks, runtimes, compilers and more being publicized on GitHub at unprecedented rate. In November last year I unexpectedly became the first community member to have a PR accepted for the .NET core framework. With my 15 minutes of fame now over, I'd like to reflect on the journey that took 'that Czechoslovakian guy' from a curious OSS onlooker to a passionate OSS addict and share my views on the future of OSS. We'll discover what OSS is, why it works and just how easy it is to get involved, perhaps even with a contribution or two. OSS is not just about coding and there are plenty of other ways to contribute, so even if you're not a coder, this talk is still for you.
 started. My name is Adam, I'm from the UK, I now live in Switzerland and just to get an idea who I'm talking to, who uses open source software here? Pretty much everyone. Does anyone contribute? Cool. Does anyone own a project? Awesome. Cool. All right, so before I get into the main body of the presentation, I'm going to talk about something which happened last November. This is quite a funny occasion. I don't know how many of you remember the Microsoft Connect event last November and one of the interesting things that happened there was they announced the open sourcing of the core framework, the core.NET framework. I was actually at work when this happened and I was keeping one eye on this. I had my personal laptop here telling it to my phone and I was watching this out of one eye. Someone mentioned that they'd open sourced the.NET core framework. I thought, well, that's cool. That's going to have a look. I went out to GitHub and hey, presto, there it was, the core framework in all its glory, open source. What a wonderful thing. I thought, okay, well, this is just like any other open source project now. I can go and clone this, I can build it, I can make changes to it. I did exactly that. I cloned it, I forked it and I cloned it and I found in the root directory a build CMD. I thought, okay, that's probably likely to do something interesting. I ran it and this happened, which is a bit odd. Fresh cloned with brand new open source projects and we've got red text. What has happened here? We've actually got to build two test failures. We've got vector two and the vector three failing. So this is a little bit odd. Let's have a look at what's going on here. This is what happened. So two tests, we've got dollars expected, we've got CHF actual. Now, that's a bit suspicious. Probably something regional, right? This obviously had only been built and run by developers in Redmond, I would say, before this went out open source. All of a sudden, you've got the whole world being able to pull this down and clone it and you've got people like me sitting in Switzerland with a Swiss German regional machine and obviously this test is going to fail. Here is the culprit. So we can see here, it's quite obvious what happened. These lines here are specifying the US culture. So obviously that's going to work. This line here specifies no culture. So that's going to pick out the default culture of my machine and it's not going to be dollars, right? Exactly the same thing for vector three and vector four is interesting because that didn't fail. Can anyone see why? Exactly, V1 stirrer formatted instead of V2 stirrer format. So floor test, which happened to pass by virtue of its floor. So anyway, I fixed it. I fixed vector two and the fix is very simple. All I'm doing is taking the numbers two and three and actually explicitly specifying the currency format for my machine for the expected string. The vector three test is almost exactly the same. To my horror, people who know me know that I obsess about white space and actually whilst I was presenting, I was preparing this slide, these slides. I noticed that I left this extra line in and yeah, that's just going to be there forever in history but oh well. And then of course, what did I do? Did I go and fix vector four? Nah, not this time. Kind of out of scope for this. I just wanted to get it green because after I've made those two tests, I ran the build command again and it was all green and I thought, oh, this might be the first PR. So I just wanted to get it up there and get it out. So what I did then was I sent the pull request and I put it on Twitter and I said, well, I think it's probably the first one. I'm not really too sure. And this got retweeted a few times, about 20 times. But people then click the link and they went into this PR and that's where the comments really started flooding in. And this went quite viral quite quickly and I can actually show you, sorry, I can actually show you the PR as it looks now. It's very easy to find. If you just search for core effects and go to the pull requests, search for me as the author, closed. I actually sent two, the second one didn't get accepted but the first one did. And I sent this pull request and then these comments started flooding in and as I say, this went quite viral and all kinds of people started chiming in here. And this was really exciting and I was kind of running around telling people about this at this time. And all kinds of people chiming in here and I think the memes started coming in sooner or later. And my phone was set to notify me every time that one of these came in and yeah, feel there, all kinds of things, all kinds of people chiming in here. And this really did get quite viral fairly quickly. But this was really, really cool. I got nominated for MVP. And my phone was sitting on my desk buzzing continuously and Twitter as well. And I thought this was all really, really cool but my workmates hated it so I switched off my phone. And this went on and on and on. I mean, we're sort of two weeks later here. I thought there's going to be no stop to this. But in the end it did end on the 1st of December. Yeah, it's about three weeks later. So anyway, that was a lot of fun. And later on Scott talked about this in his interview with this other guy and he actually talked about it a couple of times and he told a story of how this unfolded because actually they had a plan. And the plan was that Miguel de Caza from Xamarin was going to get up on stage with Scott and send the first PR. And I kind of ruined that plan. And yeah, you can see that when they actually got the repub on screen, the resolution is very bad here. So it's the best quality I could get hold of. But that actually says Adam Ralph authored an hour ago. And I don't think Miguel looks too pleased about this. So guys, if you haven't ever listened to this talk, I apologize formally. I'm really sorry about ruining your plan. But Scott did get his own back. When he was talking about this, he said, yeah, we had this great plan. We're going to get up on stage and Miguel's going to send the first PR. And then this guy, Adam Ralph from the community stepped up a few minutes after the announcement and sent the first PR and kind of ruined that a little bit. But what I did was this is what I wrote in the PR comments. So I wrote, this fixes this on my DECH machine. DECH means Swiss German, D for German, CH for Switzerland. And Scott interpreted that somehow as me being from Czechoslovakia. And he said, oh, I think he's from Czechoslovakia. And from that point on, I became that Czechoslovakian guy. And this was a name that stuck for a while. And some people still call me that Czechoslovakian guy. So anyway, that was a fun day. So now into the main body of the talk. I'm going to attack this from three angles. I'm going to talk about the open source community because there are great things happening there. I'm going to talk about Microsoft. Oops. I'm going to talk about Microsoft. And this is, if you're not a Microsoft developer, you know, don't run away. I'm not going to go into detail in, into Microsoft technologies. But I think that the journey that Microsoft have taken with the relation to open source is very interesting. And I think it demonstrates the power and the relevance of open source. And lastly, I'm going to talk about me. And this is not a platform for me to show off. This is, this is an opportunity for me to show you what open source has done for me and tell you about my journey through open source and, and why I think it's a great thing. So to understand open source, I think it's important to look at the history, to understand what it is and where it came from. And we can trace the history all about the 60s. In the 60s, around MIT, this, this hacker culture started to appear. And these were guys who were using computers for one reason or another in their research, academic research. But they decided to play with them, basically, and just see what they could make do with them. And this revolved around a couple of things. One of them was the TechnoModel Railroad Club, and other one was the AI Lab at MIT. And it wasn't just MIT. It was also places like Carnegie Mellon and Stanford. And they mainly played around with these things, the PDB-10. At MIT, they actually wrote their own operating system for it. They actually, they got this thing into their AI lab. It came with an operating system and they thought, well, no, we think we can do better. And they just wrote their own one. And this, this is what hackers did. They did, they did special things. They did cool things, things that they thought were better and fun. And in 1975, the word hacker actually got its first definition. And hacker in these days didn't mean what it means now in the popular press. It doesn't mean computer criminal. It never meant that. That's unfortunately the connotation that's given to it now. But it actually meant that the, the, the reason it got its, its official definition in this year was that there was a thing called the jargon file, which is a well-known file maintained by the hacker community. And it was really a glossary of terms that they come up with. And this was the year that hacker actually got its entry in the jargon file. And it was described as a person who, who, who explores programmable systems and makes them do something, makes them do something unusual. And as opposed to the, to the average user who only, who only uses it for its intended purpose. Incidentally, this was the year that Microsoft performed. It's just an incidental thing. 1981. I was at school in 1981. And I'd never seen a computer. In our school, we had a school assembly hall. And I imagine most of you had this. A big hall in the middle of school where you gathered, gathered for events. And we were occasionally invited for special events into this assembly hall. The first special event of 1981 was this. This was the first ever space shuttle launch in Columbia. I remember being bitterly disappointed it wasn't going to the moon. And my dad had to explain to me why. And just as a, another little bit of trivia, does anyone know when you, when you look at a picture like this of a space shuttle launch, do you know how to tell if it's the first one? There's a really, really easy way to tell. Yes, well done. See, anyone's going to get that. It is the white fuel tank, the main fuel tank. Every other one was painted, well, actually not painted. The original color was brown, but they decided white paint was too heavy. So, only the first one was painted. Anyway, the second time we were invited to the school hall for a special event was because of this. This was, this was the first ever computer that our school bought. Don, that rocks have just started, obviously. And this is the first computer that I had ever seen. We were called into the school hall. And this, these were in the days where you didn't get, you didn't get disks and things and, or even cassette tapes. You basically got a listing in a book or a magazine and you typed it out. So the teacher that was in charge of the computer typed out some kind of simple calc program or something like that. He showed us this thing and I remember being amazed. And I remember coming to the school next day and there were, there were signs all over the school hall saying silence, big letters. And we thought, oh, what's happened? And then it said computer programming in progress. So these were, these were different days. But I never thought I'd be able to use one until 1983 when computer prices started to crash and my dad bought me one of these things, an acorn electron. Does anyone recognize this? Right? Couldn't afford one. Did you have a spectrum? Spectrum, yeah. Well, fond memories of that too. Yeah. The spectrum, C64 and electron with a, and BBC of course. This was a, this was a small cousin of the BBC. But it had a great beat, it had a great basic. And by this time cassette tapes, games and cassette tapes were available. But still this, this thing about typing out programs and listings was very, very popular. And that's what I did. And I played with these things and changed them around a bit and made them my own games. And I came up with things like this. And I spent hours recreating this for this presentation. Believe me, this took so long. My party trick at school was being able to sit down at a computer and type this in about three minutes. And that's what we used to do at lunchtime for me and my friends. And, because we weren't allowed to load games on our computers. So, that's what we did. And I can actually run this for you now. If I get a BBC emulator. Can anyone tell what type of game this is? You want to guess? Very well names might give it away. Driving game. Yeah. Pretty easy really. Well it's got a car there. So, it's pretty easy. And, yeah, you got me there. Yeah. I am cheap. This is the modern version of BBC hacking. And there we go, right? Magnificent. And so this is what we did for most of our lunch times. And I tell you what, even though this looks silly, it's quite addictive. I spent hours wasting time playing this when I was preparing this presentation. And, yeah, I still, unfortunately, I still haven't got to a thousand. And I'm convinced that I'm never, that's really poor. Anyway, so lots of fun there. This was not the only thing happening in the computer world in 1983, believe it or not. Does anyone know who this guy is? Richard Stolman. I heard Richard Stolman. Yes, it is Richard Stolman. He had this vision of a free UNIX. Okay, UNIX have been around already for 14 years. And his idea was, I want to create a free version of this. So he came up with this thing, GNU. GNU stands for GNU's not UNIX. It's a recursive algorithm. But the idea was a completely UNIX compatible system built for free. And in 1991, well, by 1991, this still hadn't happened in eight years. And really, if you talk to people who aren't in computing, who aren't developers, if you talk to them about things like GNU and some of the things that hack the community did, none of it's really mainstream. No one really knows about these things. But that did change in 1991. Anyone know who this is? Linus Todewaltz, I believe, is something like that. Yes, he came along and he started something called Linux. And this is when this kind of free UNIX landscape changed. A year later, 386BSD was released. And this was, this is considered by many to be the first free UNIX distribution. Or it's certainly one that works on cheap hardware, i.e. the 386, which is what Linux developed Linux for initially. The history of UNIX is very complicated. I'm not going to go into it. And there were religious wars going on there. But some people do regard this as a first free version. And what's interesting is that Linus said, if this was available in 1991, he wouldn't have developed Linux. So just an accident of timing changed the landscape for us considerably. Now why didn't it change? Why wasn't that available till 1992? Richard Stormer came up with the idea in 1983. It's quite a long time. Why wasn't there a free UNIX until 1992? And why did Linus get the opportunity to start Linux? Well, in 1997, this guy offered an explanation. Anyone know who that is? Yes, Eric S. Raymond. He wrote an essay called The Cathedral and the Bazaar, which eventually became a book. And here it is. And in this, he describes two models of development. The first one is Cathedral. The Cathedral is where only an exclusive set of developers have access to the source code between major releases. And this is how GNU and most other projects are being developed during the 80s and the early 90s. That's how 3S, 6BSD came to light too. And the Bazaar is one where the project is developed on the internet in view of everyone. And really what he was doing there was describing what Linus came up with for Linux. And in that book, Eric actually attributes Linus' main innovation not to Linus kernel itself, which does happen to be a great piece of work. But to the actual development process, this was the thing that he really invented was this model of doing everything in the open from the very start. And there's a really interesting tweet, sorry, not a tweet. I tweeted it, I retweeted it a couple of days ago. Someone put the link to the original bulletin board post or whatever that he put out in 1991, saying, look, this is a little hobby, I think it's cool, take a look. And that was the philosophy that he used throughout the development of Linux. And that's really what's special about Linux. That's really what's different about Linux to the other competitors, purely the development model. And I think that's why it's got so much, why it's so influential today. What else happened in 1997? Well, I got a job. I finished university and I got out and got a job. And I was working in a very boring job, ticking and bashing financial statements, basically. And I used to use Excel for this quite a lot. And then I saw this button called record macro. I hadn't actually done any programming since the late 80s. So I clicked this button, did a few things, and then this window popped up with this stuff inside it. And I thought, oh, I know this. And of course it was VBA. And what did I do? I explored the capabilities and I made it do something different. I did a little bit more with it than the average user might. That sounds familiar. I started hacking. I started hacking VBA. And that's how I got back into programming. And this is a graph. This is a chart of users of my code, cumulative people, number of people who execute my code. And from 1983, this stayed rather static. This is sort of me and three or four friends, whatever. And when I rediscovered programming in 1997, three people used my code. I actually ended up automating my job and moved into another job. And I actually ended up, well, someone actually ended up getting fired, but not because of my automation. They wanted to get rid of them anyway. And just gave them the excuse to. I can say that now. It's 20 years ago, pretty much. In 1998, this was a really interesting year in open source. First of all, Netscape navigator went open source. And actually, this was in direct reaction to Eric's Cathedral in the Bazaar book. Someone at Netscape read this book. And this was about the time that IE4 came to market. And IE4, I remember thinking IE4 is a lot better and I just switched to it. And I don't know if they thought, well, this isn't really going to go anywhere. So let's try this model, open source navigator. And it's a first instance of something like that, which was traditionally closed source being just thrown out and changed to open source. In direct reaction to that, the term open source was actually coined. And it was coined to describe what Netscape had done with navigator. And this was done by a huge group of people, including Eric S. Raymond. And they said, well, this is open source. And it's very much the model of development that Linus invented. Indirect reaction to that later on, Eric S. Raymond and another group, Bruce Perens, formed the open source initiative. And they actually came up with an open source definition. And they actually described what is open source. And it's very, very long. I'm not going to repeat it, but it really is a formal definition of, again, what Linus invented. And then we've come to the Halloween documents. All right. Ooh. The Halloween documents. Did anyone wonder what these are? Anyone heard of these before? It's not the antitrust stuff, but it was about the same time. This was actually a set of internal Microsoft memos that were leaked by, again, our friend Eric S. Raymond. And he just did it on Halloween. That's why they're called Halloween documents. But they are quite scary. I was going to read you an extract verbatim, but I forgot to bring my notes with me. But one of the things it says is, I'm trying to remember this, it says, Linus can win so long as protocols are simple and commoditized. By extending these protocols and introducing new protocols, we can deny OSS projects entry to the market. I mean, that's quite incredible. I mean, it's a direct attack. It's a direct attack saying, we do not want Linus to exist. We want to kill it. And think about what they did with IE6. They did extend the protocols. I mean, they said, Linus can win if they're simple and commoditized. So let's invent complex and specialized ones instead. And I think that's, you can see that in some of the things they did. And I'm probably going to get my MVP revoked now for dragging these skeletons out of the cupboard. 98 continued, I became a software developer. I wasn't just hacking around anymore. And I developed some, well, actually I was. I was hacking around still. I was still recording macros and things. Well, I was actually employed to do it. And there was a department of about 20 people that started using this code. In 99, I became a real software developer. Luckily, an IT department recognized that I could do something. And I joined the IT department. And I started using it because I had VB6 and ASP, classic ASP, this is, and Sybase. And this had quite an effect on this interesting but unimportant graph, I'll say. And all of a sudden, I was trusted with the code for an application that was used by a few hundred users worldwide. And there we go. So it's quite a change from what I did before. 2002, back to Microsoft. What did Microsoft do in 2002? What did they release?.NET, exactly. It's quite easy. There was an open source project. There was a.NET open source project which had its first commit in 2002. Any guesses? Sorry? No, not Wix. Not Jason.NET. Was Jason around then? No, it's N-unit. Yeah. I was really surprised actually. But very cool. First year of.NET and the first open source project. I mean, it's a port. It's a port of J-unit. Or at least initially was. So it's a very obvious thing to do. 2004, there was another one. Port. Hibernate. It might have been. It might have been. But log for net. So port of log for J. 2005, leaving Microsoft alone for a while. There was something very important released in 2005 which I'm sure you all use if you contribute to open source every time you do it. Git. Yes, Git. Yeah. Our friend Linus again. 2006, has anyone heard of Sam Ramji? Now, this is really interesting. This, think back to the Halloween documents. Okay. Microsoft wanted to kill open source. They did not want it to exist. In 2006, Sam Ramji was appointed the head of Microsoft open source strategy. So obviously they've done a lot of thinking between 98 and 2006. In 98, there may have been an unofficial head of open source strategy which is, and his mission may have been to kill it or something. But this was a public appointment. They made a lot of press about it. And one of the first things he did was he created Codeplex. Now, Codeplex, okay. Much maligned these days. It's kind of, you could say it's in its death throes. But I think that's a really good move. I mean, they not only said that we appreciate and want open source to live. We're going to give a place for it to live on the Internet. 2007, by this time, we kind of, Microsoft had kind of realized the horror as the rest of us had of web forms. And it decided to adopt another model which has been around for a long time before this. And that was ASP.Net. It was MVC. And they delivered it in the form of ASP.Net MVC. And they did it as open source from the start. So they're getting into the swing of this now. And just to mention End Service Bus, I worked for particular software and this was the end service bus. It started as well. 2008, GitHub. I find that quite amazing. And this is so central to everything I do these days. Just six years, seven years ago, it didn't exist. And this was a year that Adam uses OSS. This is a year that I first, I consciously remember, use it going out to the, going out to the Internet and finding an open source product to use for myself. Now, why did this happen this year? Well, I was out of work for a year. Before this, I'd worked for a bank. I spent a long time working for a bank. There was a change in management, they off being the other job. I said no. And I said, I'm going to take a year around. And that year around, I tinkered. I played around. I hacked in the original meaning of the word hacker. And I started using open source software. In 2010, you get, I heard someone shout that earlier, but that's fairly recent. This was a really, another really good move, Microsoft. You can see they're really getting into the flow of things now. They're actually giving a place for open source projects to publish their work. 2011, Microsoft does OSS. This is the first year that Microsoft actually contributed to an open source project as a company. You would never have thought that that's something they would do back in the days of Halloween documents, but it did happen. Sorry. And they contributed to SAMBA, which is the Unix technology for Windows clients. Yeah, they did that as a company. So giving something back now. 2012, Adam does OSS. This is the year that I actually started contributing back to. And I started this with a little project called xbehavior.net. This is a BDD project built on XUnit. There was a project called Subspec already out there, which I think Phil Hack and Brad Wilson worked on a few years earlier. And I picked this thing up and I started just to play with it. I started to tinker with it and extend it a little bit. And again, I was hacking. I was getting back to my roots. This is what I did on my e-commerce back in 1983. I took listings from computer magazines and I hacked them and added color and all that kind of thing. Then I was lucky enough to join faketeasy. This was really interesting. Patrick Hain, who was the owner of faketeasy, didn't really have time to work on it anymore. So he put out a call on Twitter and he said, look, faketeasy, I still love it, but I just don't have time anymore. Can anyone take it over? And I just said, well, okay, I'll just put my hand up and said, fine, I'll take it over. We'd interacted a little bit on GitHub issues. I think I might have sent a PR or so. And he just said, okay, you look like a cool guy. You're an hour owner of faketeasy. Yeah, much to my surprise. And this is quite an effect. We haven't looked at this graph for a while. There's quite an effect on this because in 1998, you can see that's when I got my IT job. And a few hundred users. And I kind of stayed in the whole same company. I moved around a little bit and gained a few more users. And I think this is a sort of pattern. This is a corporate company. I was working on intranet apps. And I think this is a kind of pattern that a lot of people find themselves in. And this is not to say that this code that I wrote here wasn't important. This is an unimportant but potentially interesting metric. There's a lot of important stuff that goes on within corporates and within intranets. But when I started working on Open Source, that happened. And that was, oh, sorry. Yes, this happened. This is a number of downloads of faketeasy on Nugget. We're about 70,000. I know it's a very unreliable figure. But it gives you a kind of general idea of how many people are running my code. So it's gone from, you know, hugging the zero line up to tens of thousands. 2013, I contributed to Nugget. Does anyone know the development dependency feature in Nugget? Yeah. So this is just when you install the package you can put in packages.config, development dependency equals true. And then when you package your package, that package will not be a dependency. Very useful for source code packages and code analysis packages and that kind of thing. So fairly simple feature. I sent the PR, got accepted. And this is quite an effect. Where did I come up with this dubious figure? Well, there are 10 million users of, there are 10 million.NET developers in the world approximately. That's about how many Visual Studio users there are. And I figured, well, if 10, if one or two percent of them are using, are creating packages and potentially one or two percent are running my code. So, anyway, the point is it's gone from like tens of thousands to hundreds of thousands. 2014, this was announced. Microsoft.NET, on Mac and Linux. There's the new core CLR and core framework..NET core went open source only for someone to ruin their announcement. Roslin went open source. The compiler is open source. They're basically just putting it all out there. You can become an MVP via open source. Again, think back to the Halloween documents. Think about what they want to do open source and want to get out and want to kill it. Now, what they're saying is, if you contribute to Microsoft to dot on that open source or any kind of open source to Microsoft, you are now one of our most valuable members. And we're going to reward you for it. ScriptCS. I was invited to join ScriptCS. This was purely, this really came out of the blue. All I'd done was submit a few PRs, chat with the guys, suggested a few features and Glenn chatted me one day, Glenn Block, and just said, look, do you want to join the team? And I was delighted to. This was definitely a step up for me. ScriptCS is a very, very, very visible project in the open source community and the.NET community anyway. And, yeah, that was very exciting. And then I did more new get. So, you can now specify in the new spec of your new get package that when this package gets installed, it will be installed as a development dependency by default. And I suggested this on Codeplex and I got invited to an online meeting with the new get team in Redmond. So one evening I found myself dialed into a Skype call with 20 people sitting in a conference room in Redmond and I pitched this idea to them and they said, okay, great, will you do it? And I said, well, okay, fine. So I did it. And that had quite a profound effect on this potentially interesting but unimportant graph. I'm going to say, well, what have I said here? I said that, okay, modestly, 50% of people install new get packages via Visual Studio and probably quite an underestimation. But the point is it's gone from the hundreds of thousands to the millions. 2015, so let's take stock of where we are. Linux, right? The Linux kernel has been estimated to cost more than $1 billion to rewrite. I find that quite incredible, a billion, a billion dollars. This actually came out of a study done in 2001, 2002. There have been some follow-up studies done which suggest it could be as high as $3 billion. And this is just the kernel. If you look at some of the distributions like Debian, for instance, the figure has been quoted as being as high as $8 billion. These are astounding figures. Linux comes pre-installed on 50% of devices and this is taking phones, laptops, all kinds of devices all together. It's 50%. And this has grown over the last few years. I think last year it was close to 40%. Next year it's going to surpass 50%. Where is that going to end? If you look at GitHub, we've got 24 million GitHub repos. Think about that for a moment. Try to picture a million of something. It's quite difficult. There are 24 of those on GitHub. Microsoft have been open sourcing even more. The core CLR is now open source. They've been open sourcing some of our old friends. MS Build and WCF love them or hate them. It's cool that they're throwing out these legacy things as open source. Why not? Earlier this year there was even a suggestion from a Microsoft employee. I don't know if he got scolded for saying this afterwards or not. A guy called Mark Rusanovich said, one day there may even be an open source windows. Now it may never happen but the fact that this is even in the heads of people at Microsoft is quite incredible. I'm not sure it will ever happen but it's really interesting that someone officially said it may happen. What was going with me? I spoke at my first conferences. I spoke at.NET Fringe two months ago and here I am at NSE Oslo. At.NET Fringe I spoke about Nancy. I got invited to speak about that purely because I was recognized as being involved in that project as a contributor. I'm here at NSE Oslo speaking about open source. It's open source which has led me to this. There's absolutely no doubt about that. I was lucky enough to be interviewed on Channel 9 about Nancy effects whilst at.NET Fringe. I got made an MVP eventually. There's no way this would have happened if it wasn't for Microsoft's decision to recognize open source contributions. I haven't done that much. I blog a little bit. I do a few user group presentations and things but 99% of what I have done in the open source community, in the.NET community, is open source contribution. I'm 100% sure that the MVP is a direct result of that. This year I was lucky enough to be invited to work for a company called Particular Software. Particular Software are an open source company. Everything we do, all the products that we ship are open source. Every day has begun an open source day. It's no longer something which I have to fight for my own time. I can actually do it every day. I'm obviously very happy about that. We have this stand just downstairs. I'm sure you've already seen it. If you haven't been, do pop along and say hi. There's lots of very friendly people there. One last look at this dubious graph. Given the increase adoption of NuGet and other projects which I've contributed to, I've said, well, of the 10 million or so.NET developers, going by the 80-20 rule, I've probably got to about the 80% mark now. If you're a.NET developer and you haven't run some of my code at some stage, it's probably unusual. I'm going to say that four out of five people have probably run my code. This graph is not really very useful. This is basically all flat. They've just got this big spike at the end. It's more interesting if you look at it on a logarithmic scale, which just means that each line is 10 times the line below it. You can see that when I started my IT career, I hit the ceiling here. Again, I want to stress this is not an important metric. I think that a lot of people in my position who have worked on internet apps and corporates have got this sort of situation where you get a few hundred users and a few thousand, and it doesn't really go much higher than that. This isn't really important. It doesn't want to say that if you're writing code, it's not used by that many people that isn't important. If you're writing code and it's used by a few hundred doctors in a few hundred hospitals and you've saved the baby's life, it's more important than anything I'll ever write. I just find this an interesting metric rather than an important one. When I started an open source, I jumped up two levels of magnitude in the first year, another level of magnitude, another level of magnitude, and now it's hitting the global limit. As long as I stay in.NET, I can't really get much higher than that. That's okay. It's okay to hit the global limit. As I say, not important, just interesting. A demo. Let's have a look at actually making a PR. I found some stuff a little bit earlier on. Let's have a look in OmniSharp. Whilst browsing this code earlier, I found to my horror that there was an if statement somewhere not space after it. No style cop. I am known for my style cop OCD. Philip loves that. It's inconsistent because you've got up here, you've got the space, and down here you haven't. This is a trivial example. I just want to show you how easy it is to contribute. You don't really have to leave the GitHub UI. I can go in here, I can edit, and I can just edit the file directly here. Oops. Add the line break, and then just say, added line break. I'm going to assume, given the inconsistency, that I'm probably following the contribution guidelines, I'm going to take a punt on that. You guys. I propose a file change. This actually now creates a PR. It actually forks it. I think I had it forked already, but it actually forks it, creates a branch, and I've sent a PR. Easy as that. That was an open source contribution. It's easier than ever. What's the future for open source? Personally, I want to make more impact. That silly graph I've been showing, as I've said, it isn't important. Yes, there may be 8 million developers running my code when they install a new get package, but I haven't really made a lot of impact. Most people don't even know it's there. Most people don't even know about the development dependency feature. I want to make more impact. I want to help developers in a broader sense through my open source coding. My hope for Microsoft is more OSS, and that is definitely their trend. They are open sourcing more and more stuff all the time. My hope for the community is more adoption. As I've said, I now work for particular software. We are an open source company. This is a model that more and more companies are adopting now. Companies are realizing that it makes sense to develop stuff out on the open. They've looked at things like Linux and how successful they are. I'm hoping that that model is going to be adopted more and more in business. Some people have said to me at this conference that open source has in some ways lost its romantic appeal. It's not just about people hacking and doing cool things in their spare time. It's being used by companies and corporations to a great extent. I actually think that's a really good thing. If you think about, if you're using something produced by a company and it can be closed source or open source, what would you choose? I choose open source every time. I can look through the code. I can reason about it. I can actually contribute back to it. That's my hope there. The other thing that I want to introduce at this stage is you. I think you are the future or us, let's say, or anyone watching this presentation. How can you get involved? Well, contribute. I've just shown you how easy this can contribute. There's no reason not to. If you spot, if you're looking at a file and you spot that missing line break, make it right there and then that took me a few seconds. This is another thing. No contribution is too small. Is this something in the projects that I look after? I stress this. No contribution is too small. If you come along and add a line break, you've made that file better. Thank you. I'm really happy about that. Answer a call. Just like I answered that call on Twitter for someone to take out a fake easy. Put your hand up. Why not? If you think it's going to be interesting, give it a go. Throw it out there. I bet there are people listening to this who have got that little project of theirs, which I think ought to be open source but isn't ready. Just throw it out there. Because there's one thing I can guarantee. When you throw it out there, what will happen initially is no one will look at it. Guaranteed, no one will look at it until you start publicizing it or you give it time. Those are the ingredients. Eventually, someone will look at it. People are afraid because I think the code isn't good enough. However, I also look at open sources as a learning exercise. I've learned so much through open sourcing. I've learned so much through people coming on looking at my code. It does require a degree of humility. You have to be able to accept criticism. It is valuable. Before I wrap up, are there any other questions anyone wants to fire at me? Is that? It's merged. No way. Really? Let's have a look. Philip said ship it. Awesome. Yeah, I agree. It was awesome. There you go. Open source and action. Just to wrap up. The reason I'm giving this talk is because you may have noticed quite a gap between Adam Users OSS and Adam Does OSS in 2008-2012. I think that if I had heard this talk back in 2008, that gap could have been closed. I also think that if I had heard this talk before 2008, I may have started using open source a lot earlier as well. I think that's a good point. I think that's a good point. I think that's a good point. I think that's a good point. I think that's a good point. Maybe we should have had some idea. Welcome you have announced last of all the Bangladesh business teams to be open source EMB. That might be good. That with xbehave.net. I was just another developer. I was just another follower on Twitter who answered a call for someone asking to help out with their project. Last year in Connect, I was just another member of the virtual audience listening online who just spotted a really easy fix and just submitted a PR. Now, in any of those situations, you could have substituted anyone listening to this talk. Really, really easy. So, if you're sitting on the sidelines and you think open source is cool, you want to get involved but you don't know how, well, I hope I've just showed you how easy it is. And this is my effort to try and come over and pull you in and say, you know, get involved and give it a try. Why not? And like me, you know, you might not get that little car down to a thousand, but who knows, you might just end up on stage at the NDC. Thanks very much. I've got some stickers down here if anyone wants to decorate their laptop. And I'll be hanging around, so just come and talk to me and come and say hello at the particular booth as well.
 started. My name is Adam, I'm from the UK, I now live in Switzerland and just to get  an idea who I'm talking to, who uses open source software here? Pretty much everyone.  Does anyone contribute? Cool. Does anyone own a project? Awesome. Cool. All right, so  before I get into the main body of the presentation, I'm going to talk about something which happened  last November. This is quite a funny occasion. I don't know how many of you remember the  Microsoft Connect event last November and one of the interesting things that happened  there was they announced the open sourcing of the core framework, the core.NET framework.  I was actually at work when this happened and I was keeping one eye on this. I had my  personal laptop here telling it to my phone and I was watching this out of one eye. Someone  mentioned that they'd open sourced the.NET core framework. I thought, well, that's cool.  That's going to have a look. I went out to GitHub and hey, presto, there it was, the  core framework in all its glory, open source. What a wonderful thing. I thought, okay, well,  this is just like any other open source project now. I can go and clone this, I can build  it, I can make changes to it. I did exactly that. I cloned it, I forked it and I cloned  it and I found in the root directory a build CMD. I thought, okay, that's probably likely  to do something interesting. I ran it and this happened, which is a bit odd. Fresh cloned  with brand new open source projects and we've got red text. What has happened here? We've  actually got to build two test failures. We've got vector two and the vector three failing.  So this is a little bit odd. Let's have a look at what's going on here. This is what  happened. So two tests, we've got dollars expected, we've got CHF actual. Now, that's  a bit suspicious. Probably something regional, right? This obviously had only been built  and run by developers in Redmond, I would say, before this went out open source. All of  a sudden, you've got the whole world being able to pull this down and clone it and you've  got people like me sitting in Switzerland with a Swiss German regional machine and obviously  this test is going to fail. Here is the culprit. So we can see here, it's quite obvious what  happened. These lines here are specifying the US culture. So obviously that's going  to work. This line here specifies no culture. So that's going to pick out the default culture  of my machine and it's not going to be dollars, right? Exactly the same thing for vector three  and vector four is interesting because that didn't fail. Can anyone see why? Exactly,  V1 stirrer formatted instead of V2 stirrer format. So floor test, which happened to pass by  virtue of its floor. So anyway, I fixed it. I fixed vector two and the fix is very simple.  All I'm doing is taking the numbers two and three and actually explicitly specifying the  currency format for my machine for the expected string. The vector three test is almost exactly  the same. To my horror, people who know me know that I obsess about white space and actually  whilst I was presenting, I was preparing this slide, these slides. I noticed that I left  this extra line in and yeah, that's just going to be there forever in history but oh well.  And then of course, what did I do? Did I go and fix vector four? Nah, not this time.  Kind of out of scope for this. I just wanted to get it green because after I've made those  two tests, I ran the build command again and it was all green and I thought, oh, this might  be the first PR. So I just wanted to get it up there and get it out. So what I did then  was I sent the pull request and I put it on Twitter and I said, well, I think it's probably  the first one. I'm not really too sure. And this got retweeted a few times, about 20 times.  But people then click the link and they went into this PR and that's where the comments  really started flooding in. And this went quite viral quite quickly and I can actually  show you, sorry, I can actually show you the PR as it looks now. It's very easy to find.  If you just search for core effects and go to the pull requests, search for me as the  author, closed. I actually sent two, the second one didn't get accepted but the first one  did. And I sent this pull request and then these comments started flooding in and as  I say, this went quite viral and all kinds of people started chiming in here. And this  was really exciting and I was kind of running around telling people about this at this time.  And all kinds of people chiming in here and I think the memes started coming in sooner  or later. And my phone was set to notify me every time that one of these came in and  yeah, feel there, all kinds of things, all kinds of people chiming in here. And this  really did get quite viral fairly quickly. But this was really, really cool. I got nominated  for MVP. And my phone was sitting on my desk buzzing continuously and Twitter as well.  And I thought this was all really, really cool but my workmates hated it so I switched  off my phone. And this went on and on and on. I mean, we're sort of two weeks later  here. I thought there's going to be no stop to this. But in the end it did end on the  1st of December. Yeah, it's about three weeks later. So anyway, that was a lot of fun. And  later on Scott talked about this in his interview with this other guy and he actually talked  about it a couple of times and he told a story of how this unfolded because actually they  had a plan. And the plan was that Miguel de Caza from Xamarin was going to get up on  stage with Scott and send the first PR. And I kind of ruined that plan. And yeah, you  can see that when they actually got the repub on screen, the resolution is very bad here.  So it's the best quality I could get hold of. But that actually says Adam Ralph authored  an hour ago. And I don't think Miguel looks too pleased about this. So guys, if you haven't  ever listened to this talk, I apologize formally. I'm really sorry about ruining your plan.  But Scott did get his own back. When he was talking about this, he said, yeah, we had  this great plan. We're going to get up on stage and Miguel's going to send the first  PR. And then this guy, Adam Ralph from the community stepped up a few minutes after the  announcement and sent the first PR and kind of ruined that a little bit. But what I did  was this is what I wrote in the PR comments. So I wrote, this fixes this on my DECH machine.  DECH means Swiss German, D for German, CH for Switzerland. And Scott interpreted that  somehow as me being from Czechoslovakia. And he said, oh, I think he's from Czechoslovakia.  And from that point on, I became that Czechoslovakian guy. And this was a name that stuck for a while.  And some people still call me that Czechoslovakian guy. So anyway, that was a fun day. So now  into the main body of the talk. I'm going to attack this from three angles. I'm going  to talk about the open source community because there are great things happening there. I'm  going to talk about Microsoft. Oops. I'm going to talk about Microsoft. And this is, if you're  not a Microsoft developer, you know, don't run away. I'm not going to go into detail  in, into Microsoft technologies. But I think that the journey that Microsoft have taken  with the relation to open source is very interesting. And I think it demonstrates the power and  the relevance of open source. And lastly, I'm going to talk about me. And this is not  a platform for me to show off. This is, this is an opportunity for me to show you what  open source has done for me and tell you about my journey through open source and, and why  I think it's a great thing. So to understand open source, I think it's important to look  at the history, to understand what it is and where it came from. And we can trace the history  all about the 60s. In the 60s, around MIT, this, this hacker culture started to appear.  And these were guys who were using computers for one reason or another in their research,  academic research. But they decided to play with them, basically, and just see what they  could make do with them. And this revolved around a couple of things. One of them was  the TechnoModel Railroad Club, and other one was the AI Lab at MIT. And it wasn't just  MIT. It was also places like Carnegie Mellon and Stanford. And they mainly played around  with these things, the PDB-10. At MIT, they actually wrote their own operating system  for it. They actually, they got this thing into their AI lab. It came with an operating  system and they thought, well, no, we think we can do better. And they just wrote their  own one. And this, this is what hackers did. They did, they did special things. They did  cool things, things that they thought were better and fun. And in 1975, the word hacker  actually got its first definition. And hacker in these days didn't mean what it means now  in the popular press. It doesn't mean computer criminal. It never meant that. That's unfortunately  the connotation that's given to it now. But it actually meant that the, the, the reason  it got its, its official definition in this year was that there was a thing called the  jargon file, which is a well-known file maintained by the hacker community. And it was really  a glossary of terms that they come up with. And this was the year that hacker actually  got its entry in the jargon file. And it was described as a person who, who, who explores  programmable systems and makes them do something, makes them do something unusual. And as opposed  to the, to the average user who only, who only uses it for its intended purpose. Incidentally,  this was the year that Microsoft performed. It's just an incidental thing. 1981. I was  at school in 1981. And I'd never seen a computer. In our school, we had a school assembly hall.  And I imagine most of you had this. A big hall in the middle of school where you gathered,  gathered for events. And we were occasionally invited for special events into this assembly  hall. The first special event of 1981 was this. This was the first ever space shuttle  launch in Columbia. I remember being bitterly disappointed it wasn't going to the moon.  And my dad had to explain to me why. And just as a, another little bit of trivia, does anyone  know when you, when you look at a picture like this of a space shuttle launch, do you  know how to tell if it's the first one? There's a really, really easy way to tell. Yes, well  done. See, anyone's going to get that. It is the white fuel tank, the main fuel tank.  Every other one was painted, well, actually not painted. The original color was brown,  but they decided white paint was too heavy. So, only the first one was painted. Anyway,  the second time we were invited to the school hall for a special event was because of this.  This was, this was the first ever computer that our school bought. Don, that rocks have  just started, obviously. And this is the first computer that I had ever seen. We were called  into the school hall. And this, these were in the days where you didn't get, you didn't  get disks and things and, or even cassette tapes. You basically got a listing in a book  or a magazine and you typed it out. So the teacher that was in charge of the computer  typed out some kind of simple calc program or something like that. He showed us this  thing and I remember being amazed. And I remember coming to the school next day and there were,  there were signs all over the school hall saying silence, big letters. And we thought,  oh, what's happened? And then it said computer programming in progress. So these were, these  were different days. But I never thought I'd be able to use one until 1983 when computer  prices started to crash and my dad bought me one of these things, an acorn electron. Does  anyone recognize this? Right? Couldn't afford one. Did you have a spectrum? Spectrum, yeah.  Well, fond memories of that too. Yeah. The spectrum, C64 and electron with a, and BBC  of course. This was a, this was a small cousin of the BBC. But it had a great beat, it had  a great basic. And by this time cassette tapes, games and cassette tapes were available.  But still this, this thing about typing out programs and listings was very, very popular.  And that's what I did. And I played with these things and changed them around a bit and made  them my own games. And I came up with things like this. And I spent hours recreating this  for this presentation. Believe me, this took so long. My party trick at school was being  able to sit down at a computer and type this in about three minutes. And that's what we  used to do at lunchtime for me and my friends. And, because we weren't allowed to load games  on our computers. So, that's what we did. And I can actually run this for you now. If  I get a BBC emulator. Can anyone tell what type of game this is? You want to guess? Very  well names might give it away. Driving game. Yeah. Pretty easy really. Well it's got a  car there. So, it's pretty easy. And, yeah, you got me there. Yeah. I am cheap. This is  the modern version of BBC hacking. And there we go, right? Magnificent. And so this is  what we did for most of our lunch times. And I tell you what, even though this looks silly,  it's quite addictive. I spent hours wasting time playing this when I was preparing this  presentation. And, yeah, I still, unfortunately, I still haven't got to a thousand. And I'm  convinced that I'm never, that's really poor. Anyway, so lots of fun there. This was not  the only thing happening in the computer world in 1983, believe it or not. Does anyone know  who this guy is? Richard Stolman. I heard Richard Stolman. Yes, it is Richard Stolman.  He had this vision of a free UNIX. Okay, UNIX have been around already for 14 years. And  his idea was, I want to create a free version of this. So he came up with this thing, GNU.  GNU stands for GNU's not UNIX. It's a recursive algorithm. But the idea was a completely UNIX  compatible system built for free. And in 1991, well, by 1991, this still hadn't happened  in eight years. And really, if you talk to people who aren't in computing, who aren't  developers, if you talk to them about things like GNU and some of the things that hack  the community did, none of it's really mainstream. No one really knows about these things. But  that did change in 1991. Anyone know who this is? Linus Todewaltz, I believe, is something  like that. Yes, he came along and he started something called Linux. And this is when this  kind of free UNIX landscape changed. A year later, 386BSD was released. And this was,  this is considered by many to be the first free UNIX distribution. Or it's certainly  one that works on cheap hardware, i.e. the 386, which is what Linux developed Linux for  initially. The history of UNIX is very complicated. I'm not going to go into it. And there were  religious wars going on there. But some people do regard this as a first free version. And  what's interesting is that Linus said, if this was available in 1991, he wouldn't have  developed Linux. So just an accident of timing changed the landscape for us considerably.  Now why didn't it change? Why wasn't that available till 1992? Richard Stormer came  up with the idea in 1983. It's quite a long time. Why wasn't there a free UNIX until 1992?  And why did Linus get the opportunity to start Linux? Well, in 1997, this guy offered an  explanation. Anyone know who that is? Yes, Eric S. Raymond. He wrote an essay called  The Cathedral and the Bazaar, which eventually became a book. And here it is. And in this,  he describes two models of development. The first one is Cathedral. The Cathedral is where  only an exclusive set of developers have access to the source code between major releases.  And this is how GNU and most other projects are being developed during the 80s and the  early 90s. That's how 3S, 6BSD came to light too. And the Bazaar is one where the project  is developed on the internet in view of everyone. And really what he was doing there was describing  what Linus came up with for Linux. And in that book, Eric actually attributes Linus'  main innovation not to Linus kernel itself, which does happen to be a great piece of work.  But to the actual development process, this was the thing that he really invented was  this model of doing everything in the open from the very start. And there's a really  interesting tweet, sorry, not a tweet. I tweeted it, I retweeted it a couple of days ago.  Someone put the link to the original bulletin board post or whatever that he put out in  1991, saying, look, this is a little hobby, I think it's cool, take a look. And that was  the philosophy that he used throughout the development of Linux. And that's really what's  special about Linux. That's really what's different about Linux to the other competitors,  purely the development model. And I think that's why it's got so much, why it's so  influential today. What else happened in 1997? Well, I got a job. I finished university  and I got out and got a job. And I was working in a very boring job, ticking and bashing  financial statements, basically. And I used to use Excel for this quite a lot. And then  I saw this button called record macro. I hadn't actually done any programming since the late  80s. So I clicked this button, did a few things, and then this window popped up with  this stuff inside it. And I thought, oh, I know this. And of course it was VBA. And  what did I do? I explored the capabilities and I made it do something different. I did  a little bit more with it than the average user might. That sounds familiar. I started  hacking. I started hacking VBA. And that's how I got back into programming. And this  is a graph. This is a chart of users of my code, cumulative people, number of people  who execute my code. And from 1983, this stayed rather static. This is sort of me and three  or four friends, whatever. And when I rediscovered programming in 1997, three people used my code.  I actually ended up automating my job and moved into another job. And I actually ended  up, well, someone actually ended up getting fired, but not because of my automation. They  wanted to get rid of them anyway. And just gave them the excuse to. I can say that now.  It's 20 years ago, pretty much. In 1998, this was a really interesting year in open source.  First of all, Netscape navigator went open source. And actually, this was in direct reaction  to Eric's Cathedral in the Bazaar book. Someone at Netscape read this book. And this was about  the time that IE4 came to market. And IE4, I remember thinking IE4 is a lot better and  I just switched to it. And I don't know if they thought, well, this isn't really going  to go anywhere. So let's try this model, open source navigator. And it's a first instance  of something like that, which was traditionally closed source being just thrown out and changed  to open source. In direct reaction to that, the term open source was actually coined.  And it was coined to describe what Netscape had done with navigator. And this was done  by a huge group of people, including Eric S. Raymond. And they said, well, this is open  source. And it's very much the model of development that Linus invented. Indirect reaction to  that later on, Eric S. Raymond and another group, Bruce Perens, formed the open source  initiative. And they actually came up with an open source definition. And they actually  described what is open source. And it's very, very long. I'm not going to repeat it, but  it really is a formal definition of, again, what Linus invented.  And then we've come to the Halloween documents. All right. Ooh. The Halloween documents.  Did anyone wonder what these are? Anyone heard of these before? It's not the antitrust stuff,  but it was about the same time. This was actually a set of internal Microsoft memos that were  leaked by, again, our friend Eric S. Raymond. And he just did it on Halloween. That's why  they're called Halloween documents. But they are quite scary. I was going to read you an  extract verbatim, but I forgot to bring my notes with me. But one of the things it says  is, I'm trying to remember this, it says, Linus can win so long as protocols are simple  and commoditized. By extending these protocols and introducing new protocols, we can deny  OSS projects entry to the market. I mean, that's quite incredible. I mean, it's a direct  attack. It's a direct attack saying, we do not want Linus to exist. We want to kill it.  And think about what they did with IE6. They did extend the protocols. I mean, they said,  Linus can win if they're simple and commoditized. So let's invent complex and specialized ones  instead. And I think that's, you can see that in some of the things they did. And I'm probably  going to get my MVP revoked now for dragging these skeletons out of the cupboard. 98 continued,  I became a software developer. I wasn't just hacking around anymore. And I developed some,  well, actually I was. I was hacking around still. I was still recording macros and things.  Well, I was actually employed to do it. And there was a department of about 20 people that  started using this code. In 99, I became a real software developer. Luckily, an IT department  recognized that I could do something. And I joined the IT department. And I started using  it because I had VB6 and ASP, classic ASP, this is, and Sybase. And this had quite an  effect on this interesting but unimportant graph, I'll say. And all of a sudden, I was  trusted with the code for an application that was used by a few hundred users worldwide.  And there we go. So it's quite a change from what I did before. 2002, back to Microsoft.  What did Microsoft do in 2002? What did they release?.NET, exactly. It's quite easy. There  was an open source project. There was a.NET open source project which had its first commit  in 2002. Any guesses? Sorry? No, not Wix. Not Jason.NET. Was Jason around then? No, it's  N-unit. Yeah. I was really surprised actually. But very cool. First year of.NET and the  first open source project. I mean, it's a port. It's a port of J-unit. Or at least initially  was. So it's a very obvious thing to do. 2004, there was another one. Port. Hibernate. It  might have been. It might have been. But log for net. So port of log for J. 2005, leaving  Microsoft alone for a while. There was something very important released in 2005 which I'm  sure you all use if you contribute to open source every time you do it. Git. Yes, Git.  Yeah. Our friend Linus again. 2006, has anyone heard of Sam Ramji? Now, this is really interesting.  This, think back to the Halloween documents. Okay. Microsoft wanted to kill open source.  They did not want it to exist. In 2006, Sam Ramji was appointed the head of Microsoft open  source strategy. So obviously they've done a lot of thinking between 98 and 2006. In  98, there may have been an unofficial head of open source strategy which is, and his  mission may have been to kill it or something. But this was a public appointment. They made  a lot of press about it. And one of the first things he did was he created Codeplex. Now,  Codeplex, okay. Much maligned these days. It's kind of, you could say it's in its death  throes. But I think that's a really good move. I mean, they not only said that we appreciate  and want open source to live. We're going to give a place for it to live on the Internet.  2007, by this time, we kind of, Microsoft had kind of realized the horror as the rest  of us had of web forms. And it decided to adopt another model which has been around  for a long time before this. And that was ASP.Net. It was MVC. And they delivered it  in the form of ASP.Net MVC. And they did it as open source from the start. So they're  getting into the swing of this now. And just to mention End Service Bus, I worked for particular  software and this was the end service bus. It started as well. 2008, GitHub. I find that  quite amazing. And this is so central to everything I do these days. Just six years, seven years  ago, it didn't exist. And this was a year that Adam uses OSS. This is a year that I  first, I consciously remember, use it going out to the, going out to the Internet and  finding an open source product to use for myself. Now, why did this happen this year?  Well, I was out of work for a year. Before this, I'd worked for a bank. I spent a long  time working for a bank. There was a change in management, they off being the other job.  I said no. And I said, I'm going to take a year around. And that year around, I tinkered.  I played around. I hacked in the original meaning of the word hacker. And I started using open  source software. In 2010, you get, I heard someone shout that earlier, but that's fairly  recent. This was a really, another really good move, Microsoft. You can see they're  really getting into the flow of things now. They're actually giving a place for open source  projects to publish their work. 2011, Microsoft does OSS. This is the first year that Microsoft  actually contributed to an open source project as a company. You would never have thought  that that's something they would do back in the days of Halloween documents, but it did  happen. Sorry. And they contributed to SAMBA, which is the Unix technology for Windows clients.  Yeah, they did that as a company. So giving something back now. 2012, Adam does OSS. This  is the year that I actually started contributing back to. And I started this with a little  project called xbehavior.net. This is a BDD project built on XUnit. There was a project  called Subspec already out there, which I think Phil Hack and Brad Wilson worked on  a few years earlier. And I picked this thing up and I started just to play with it. I started  to tinker with it and extend it a little bit. And again, I was hacking. I was getting back  to my roots. This is what I did on my e-commerce back in 1983. I took listings from computer  magazines and I hacked them and added color and all that kind of thing. Then I was lucky  enough to join faketeasy. This was really interesting. Patrick Hain, who was the owner  of faketeasy, didn't really have time to work on it anymore. So he put out a call on Twitter  and he said, look, faketeasy, I still love it, but I just don't have time anymore. Can  anyone take it over? And I just said, well, okay, I'll just put my hand up and said, fine,  I'll take it over. We'd interacted a little bit on GitHub issues. I think I might have  sent a PR or so. And he just said, okay, you look like a cool guy. You're an hour owner  of faketeasy. Yeah, much to my surprise. And this is quite an effect. We haven't looked  at this graph for a while. There's quite an effect on this because in 1998, you can see  that's when I got my IT job. And a few hundred users. And I kind of stayed in the whole same  company. I moved around a little bit and gained a few more users. And I think this is a sort  of pattern. This is a corporate company. I was working on intranet apps. And I think  this is a kind of pattern that a lot of people find themselves in. And this is not to say  that this code that I wrote here wasn't important. This is an unimportant but potentially interesting  metric. There's a lot of important stuff that goes on within corporates and within intranets.  But when I started working on Open Source, that happened. And that was, oh, sorry. Yes,  this happened. This is a number of downloads of faketeasy on Nugget. We're about 70,000.  I know it's a very unreliable figure. But it gives you a kind of general idea of how  many people are running my code. So it's gone from, you know, hugging the zero line up to  tens of thousands. 2013, I contributed to Nugget. Does anyone know the development dependency  feature in Nugget? Yeah. So this is just when you install the package you can put in packages.config,  development dependency equals true. And then when you package your package, that package  will not be a dependency. Very useful for source code packages and code analysis packages  and that kind of thing. So fairly simple feature. I sent the PR, got accepted. And this is quite  an effect. Where did I come up with this dubious figure? Well, there are 10 million users of,  there are 10 million.NET developers in the world approximately. That's about how many  Visual Studio users there are. And I figured, well, if 10, if one or two percent of them  are using, are creating packages and potentially one or two percent are running my code. So,  anyway, the point is it's gone from like tens of thousands to hundreds of thousands. 2014,  this was announced. Microsoft.NET, on Mac and Linux. There's the new core CLR and core  framework..NET core went open source only for someone to ruin their announcement. Roslin  went open source. The compiler is open source. They're basically just putting it all out  there. You can become an MVP via open source. Again, think back to the Halloween documents.  Think about what they want to do open source and want to get out and want to kill it. Now,  what they're saying is, if you contribute to Microsoft to dot on that open source or  any kind of open source to Microsoft, you are now one of our most valuable members. And  we're going to reward you for it. ScriptCS. I was invited to join ScriptCS. This was purely,  this really came out of the blue. All I'd done was submit a few PRs, chat with the guys,  suggested a few features and Glenn chatted me one day, Glenn Block, and just said, look,  do you want to join the team? And I was delighted to. This was definitely a step up for me.  ScriptCS is a very, very, very visible project in the open source community and the.NET  community anyway. And, yeah, that was very exciting. And then I did more new get. So,  you can now specify in the new spec of your new get package that when this package gets  installed, it will be installed as a development dependency by default. And I suggested this  on Codeplex and I got invited to an online meeting with the new get team in Redmond.  So one evening I found myself dialed into a Skype call with 20 people sitting in a conference  room in Redmond and I pitched this idea to them and they said, okay, great, will you  do it? And I said, well, okay, fine. So I did it. And that had quite a profound effect  on this potentially interesting but unimportant graph. I'm going to say, well, what have I  said here? I said that, okay, modestly, 50% of people install new get packages via Visual  Studio and probably quite an underestimation. But the point is it's gone from the hundreds  of thousands to the millions. 2015, so let's take stock of where we are. Linux, right?  The Linux kernel has been estimated to cost more than $1 billion to rewrite. I find that  quite incredible, a billion, a billion dollars. This actually came out of a study done in  2001, 2002. There have been some follow-up studies done which suggest it could be as  high as $3 billion. And this is just the kernel. If you look at some of the distributions  like Debian, for instance, the figure has been quoted as being as high as $8 billion.  These are astounding figures. Linux comes pre-installed on 50% of devices and this is  taking phones, laptops, all kinds of devices all together. It's 50%. And this has grown  over the last few years. I think last year it was close to 40%. Next year it's going  to surpass 50%. Where is that going to end? If you look at GitHub, we've got 24 million  GitHub repos. Think about that for a moment. Try to picture a million of something. It's  quite difficult. There are 24 of those on GitHub. Microsoft have been open sourcing  even more. The core CLR is now open source. They've been open sourcing some of our old  friends. MS Build and WCF love them or hate them. It's cool that they're throwing out  these legacy things as open source. Why not? Earlier this year there was even a suggestion  from a Microsoft employee. I don't know if he got scolded for saying this afterwards  or not. A guy called Mark Rusanovich said, one day there may even be an open source windows.  Now it may never happen but the fact that this is even in the heads of people at Microsoft  is quite incredible. I'm not sure it will ever happen but it's really interesting that  someone officially said it may happen. What was going with me? I spoke at my first conferences.  I spoke at.NET Fringe two months ago and here I am at NSE Oslo. At.NET Fringe I spoke  about Nancy. I got invited to speak about that purely because I was recognized as being  involved in that project as a contributor. I'm here at NSE Oslo speaking about open  source. It's open source which has led me to this. There's absolutely no doubt about  that. I was lucky enough to be interviewed on Channel 9 about Nancy effects whilst at .NET Fringe. I got made an MVP eventually. There's no way this would have happened if  it wasn't for Microsoft's decision to recognize open source contributions. I haven't done  that much. I blog a little bit. I do a few user group presentations and things but 99%  of what I have done in the open source community, in the.NET community, is open source contribution.  I'm 100% sure that the MVP is a direct result of that. This year I was lucky enough to be  invited to work for a company called Particular Software. Particular Software are an open source  company. Everything we do, all the products that we ship are open source. Every day has  begun an open source day. It's no longer something which I have to fight for my own time. I can  actually do it every day. I'm obviously very happy about that. We have this stand just  downstairs. I'm sure you've already seen it. If you haven't been, do pop along and say  hi. There's lots of very friendly people there.  One last look at this dubious graph. Given the increase adoption of NuGet and other projects  which I've contributed to, I've said, well, of the 10 million or so.NET developers, going  by the 80-20 rule, I've probably got to about the 80% mark now. If you're a.NET developer  and you haven't run some of my code at some stage, it's probably unusual. I'm going to  say that four out of five people have probably run my code. This graph is not really very  useful. This is basically all flat. They've just got this big spike at the end. It's more  interesting if you look at it on a logarithmic scale, which just means that each line is  10 times the line below it. You can see that when I started my IT career, I hit the ceiling  here. Again, I want to stress this is not an important metric. I think that a lot of  people in my position who have worked on internet apps and corporates have got this sort of  situation where you get a few hundred users and a few thousand, and it doesn't really  go much higher than that. This isn't really important. It doesn't want to say that if  you're writing code, it's not used by that many people that isn't important. If you're  writing code and it's used by a few hundred doctors in a few hundred hospitals and you've  saved the baby's life, it's more important than anything I'll ever write. I just find  this an interesting metric rather than an important one. When I started an open source,  I jumped up two levels of magnitude in the first year, another level of magnitude, another  level of magnitude, and now it's hitting the global limit. As long as I stay in.NET, I  can't really get much higher than that. That's okay. It's okay to hit the global limit.  As I say, not important, just interesting. A demo. Let's have a look at actually making  a PR. I found some stuff a little bit earlier on. Let's have a look in OmniSharp. Whilst  browsing this code earlier, I found to my horror that there was an if statement somewhere  not space after it. No style cop. I am known for my style cop OCD. Philip loves that. It's  inconsistent because you've got up here, you've got the space, and down here you haven't. This  is a trivial example. I just want to show you how easy it is to contribute. You don't  really have to leave the GitHub UI. I can go in here, I can edit, and I can just edit  the file directly here. Oops. Add the line break, and then just say, added line break.  I'm going to assume, given the inconsistency, that I'm probably following the contribution  guidelines, I'm going to take a punt on that. You guys.  I propose a file change. This actually now creates a PR. It actually forks it. I think  I had it forked already, but it actually forks it, creates a branch, and I've sent a PR.  Easy as that. That was an open source contribution. It's easier than ever. What's the future  for open source? Personally, I want to make more impact. That silly graph I've been showing,  as I've said, it isn't important. Yes, there may be 8 million developers running my code  when they install a new get package, but I haven't really made a lot of impact. Most  people don't even know it's there. Most people don't even know about the development  dependency feature. I want to make more impact. I want to help developers in a broader sense  through my open source coding. My hope for Microsoft is more OSS, and that is definitely  their trend. They are open sourcing more and more stuff all the time. My hope for the community  is more adoption. As I've said, I now work for particular software. We are an open source  company. This is a model that more and more companies are adopting now. Companies are  realizing that it makes sense to develop stuff out on the open. They've looked at things  like Linux and how successful they are. I'm hoping that that model is going to be adopted  more and more in business. Some people have said to me at this conference that open source  has in some ways lost its romantic appeal. It's not just about people hacking and doing  cool things in their spare time. It's being used by companies and corporations to a great  extent. I actually think that's a really good thing. If you think about, if you're using  something produced by a company and it can be closed source or open source, what would  you choose? I choose open source every time. I can look through the code. I can reason about  it. I can actually contribute back to it. That's my hope there. The other thing that  I want to introduce at this stage is you. I think you are the future or us, let's say,  or anyone watching this presentation. How can you get involved? Well, contribute. I've  just shown you how easy this can contribute. There's no reason not to. If you spot, if  you're looking at a file and you spot that missing line break, make it right there and  then that took me a few seconds. This is another thing. No contribution is too small. Is this  something in the projects that I look after? I stress this. No contribution is too small.  If you come along and add a line break, you've made that file better. Thank you. I'm really  happy about that. Answer a call. Just like I answered that call on Twitter for someone  to take out a fake easy. Put your hand up. Why not? If you think it's going to be interesting,  give it a go. Throw it out there. I bet there are people listening to this who have got  that little project of theirs, which I think ought to be open source but isn't ready. Just  throw it out there. Because there's one thing I can guarantee. When you throw it out there,  what will happen initially is no one will look at it. Guaranteed, no one will look at  it until you start publicizing it or you give it time. Those are the ingredients. Eventually,  someone will look at it. People are afraid because I think the code isn't good enough.  However, I also look at open sources as a learning exercise. I've learned so much through  open sourcing. I've learned so much through people coming on looking at my code. It does  require a degree of humility. You have to be able to accept criticism. It is valuable.  Before I wrap up, are there any other questions anyone wants to fire at me? Is that? It's  merged. No way. Really? Let's have a look. Philip said ship it. Awesome. Yeah, I agree.  It was awesome. There you go. Open source and action. Just to wrap up. The reason I'm  giving this talk is because you may have noticed quite a gap between Adam Users OSS and Adam  Does OSS in 2008-2012. I think that if I had heard this talk back in 2008, that gap could  have been closed. I also think that if I had heard this talk before 2008, I may have started  using open source a lot earlier as well. I think that's a good point. I think that's  a good point. I think that's a good point. I think that's a good point. I think that's  a good point. Maybe we should have had some idea. Welcome you have announced last  of all the Bangladesh business teams to be open source EMB. That might be good. That  with xbehave.net. I was just another developer. I was just another follower on Twitter who  answered a call for someone asking to help out with their project. Last year in Connect,  I was just another member of the virtual audience listening online who just spotted a really  easy fix and just submitted a PR. Now, in any of those situations, you could have substituted  anyone listening to this talk. Really, really easy. So, if you're sitting on the sidelines  and you think open source is cool, you want to get involved but you don't know how, well,  I hope I've just showed you how easy it is. And this is my effort to try and come over  and pull you in and say, you know, get involved and give it a try. Why not? And like me, you  know, you might not get that little car down to a thousand, but who knows, you might just  end up on stage at the NDC. Thanks very much. I've got some stickers down here if anyone  wants to decorate their laptop. And I'll be hanging around, so just come and talk to me  and come and say hello at the particular booth as well.
Getting_the_first_PR_into__0_1811.png Getting_the_first_PR_into__1812_2639.png Getting_the_first_PR_into__2640_3215.png Getting_the_first_PR_into__3216_7259.png Getting_the_first_PR_into__7260_7679.png Getting_the_first_PR_into__7680_7727.png Getting_the_first_PR_into__7728_8267.png Getting_the_first_PR_into__8268_8471.png Getting_the_first_PR_into__8472_8519.png Getting_the_first_PR_into__8520_9791.png Getting_the_first_PR_into__9792_10007.png Getting_the_first_PR_into__10008_10751.png Getting_the_first_PR_into__10752_11903.png Getting_the_first_PR_into__11904_12407.png Getting_the_first_PR_into__12408_14087.png Getting_the_first_PR_into__14088_15275.png Getting_the_first_PR_into__15276_15863.png Getting_the_first_PR_into__15864_17387.png Getting_the_first_PR_into__17388_20603.png Getting_the_first_PR_into__20604_21611.png Getting_the_first_PR_into__21612_22139.png Getting_the_first_PR_into__22140_22247.png Getting_the_first_PR_into__22248_22331.png Getting_the_first_PR_into__22332_22727.png Getting_the_first_PR_into__22728_22799.png Getting_the_first_PR_into__22800_23267.png Getting_the_first_PR_into__23268_23699.png Getting_the_first_PR_into__23700_23927.png Getting_the_first_PR_into__23928_24875.png Getting_the_first_PR_into__24876_25475.png Getting_the_first_PR_into__25476_27011.png Getting_the_first_PR_into__27012_27563.png Getting_the_first_PR_into__27564_30443.png Getting_the_first_PR_into__30444_33035.png Getting_the_first_PR_into__33036_37679.png Getting_the_first_PR_into__37680_37859.png Getting_the_first_PR_into__37860_38195.png Getting_the_first_PR_into__38196_38675.png Getting_the_first_PR_into__38676_39191.png Getting_the_first_PR_into__39192_41231.png Getting_the_first_PR_into__41232_42743.png Getting_the_first_PR_into__42744_43643.png Getting_the_first_PR_into__43644_45071.png Getting_the_first_PR_into__45072_46259.png Getting_the_first_PR_into__46260_52091.png Getting_the_first_PR_into__52092_55199.png Getting_the_first_PR_into__55200_57875.png Getting_the_first_PR_into__57876_59243.png Getting_the_first_PR_into__59244_61499.png Getting_the_first_PR_into__61500_61715.png Getting_the_first_PR_into__61716_65147.png Getting_the_first_PR_into__65148_65219.png Getting_the_first_PR_into__65220_65267.png Getting_the_first_PR_into__65268_65459.png Getting_the_first_PR_into__65460_65519.png Getting_the_first_PR_into__65520_65627.png Getting_the_first_PR_into__65628_65675.png Getting_the_first_PR_into__65676_65723.png Getting_the_first_PR_into__65724_66479.png Getting_the_first_PR_into__66480_66611.png Getting_the_first_PR_into__66612_66683.png Getting_the_first_PR_into__66684_66803.png Getting_the_first_PR_into__66804_67043.png Getting_the_first_PR_into__67044_68015.png Getting_the_first_PR_into__68016_68195.png Getting_the_first_PR_into__68196_68267.png Getting_the_first_PR_into__68268_68387.png Getting_the_first_PR_into__68388_68483.png Getting_the_first_PR_into__68484_70991.png Getting_the_first_PR_into__70992_73487.png Getting_the_first_PR_into__73488_73835.png Getting_the_first_PR_into__73836_73895.png Getting_the_first_PR_into__73896_73943.png Getting_the_first_PR_into__73944_74003.png Getting_the_first_PR_into__74004_74099.png Getting_the_first_PR_into__74100_74207.png Getting_the_first_PR_into__74208_74423.png Getting_the_first_PR_into__74424_74471.png Getting_the_first_PR_into__74472_74567.png Getting_the_first_PR_into__74568_77051.png Getting_the_first_PR_into__77052_77459.png Getting_the_first_PR_into__77460_83212.png