Skip to main content

Getting the first PR into .NET and other tales from an OSS contributor

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. Even Microsoft have transformed their strategy, becoming the “number one” GitHub organisation. Why the big change? What’s wrong with the “old” way of doing things?

In November 2014, I became the first community member to have a pull request accepted for .NET Core. With my 15 minutes of fame now over, I’d like to reflect on the journey that took me there. How did ‘that Czechoslovakian guy’ go from a curious OSS onlooker to a passionate OSS advocate?

We’ll discover what OSS is, why it works and how easy it is to get involved. OSS is not only about coding and there are plenty of other ways to contribute. Even if you’re not a coder, this talk is still for you.

🔗Transcription

00:07 Adam
Hey everyone? How are you doing? This is nice and cozy. Look at all this space they gave us. This is great. You at the end, you might want to move in a little bit too, because I'm going to be pointing this screen if it works. I don't know how good the view will be if you're over there. Is this been happening up until now?
00:40 Adam
Okay. We're back. All right. So, we had a good conference. Have you been here for the whole week workshops and the conference or? Yeah, just a couple of you. So yeah, it's been a long way, but it's been really good. NDC always do a really solid job. It's always a really nice conference. So for those of you who don't know me, my name is Adam. I come from the UK originally and I now live in Switzerland and I worked for a company called Particular Software.
01:09 Adam
I don't know if they have this problem about in the U.S. They always get Sweden and Switzerland mixed up. I don't know if that happens here or not. But I was in a taxi once in Dallas and I said to the guy I'm from Switzerland spend a bit of time in Zurich. And one minute later he said to me, "So it's Zurich the capital of Sweden?" So it really does happen, but I'm sure all of you know the difference. And likewise, I know all about Australia, because I used to live here. I used to live here from 96 to 97. So these gray bits on my beard are for a reason, showing my age a bit there.
01:44 Speaker 2
[inaudible] American thing.
01:45 Adam
Yeah.
01:47 Speaker 3
This is really in Australia.
01:48 Adam
Well, I know all about Australia. Ask me anything about the Swans down in Melbourne or the Magpies up here in Sydney or two of my favorite rugby teams. And yeah, I like watching the Sheffield Shield, but when I'm not doing that, I like to write software and I like to write open source software. And I'm going to tell you about something that happened back in 2014. Microsoft used to run event called Connect and in November 2014, they announced something really exciting. I was watching this at work. I had it on one of my screens at work and I was watching out with one eye and one thing specifically really caught my eye. And that was this. They open source the .NET Core Framework at Connect in 2014. And I thought, this is absolutely fantastic because I can now clone it. I can run it on my machine. I can build it. I can change code. I can do all this stuff I can do with any open source project. So, I did that. I cloned it. And in the root folder I saw a build .CMD. So, I thought, that's begging to be run.
02:49 Adam
So I ran it and a load of green texts flash pass, which is really good. And right at the end, this happened. A bunch of red texts and that's never a good sign. I thought, "Well, surely this can not build. They've just announced it to millions of developers. This has to work. It must be me, right?" So, I had to look at the test... There were a couple of tests failing and they're around these two objects. There's a vector two and a vector three. And it was expecting U.S dollars. And it was actually getting CHF. So CHF is the currency symbol for Swiss Francs is the ISO currency symbol for that. And same with vector three.
03:30 Adam
So, I'm there sitting in Switzerland than my Swiss German machine. And obviously they never run this code outside Redmond before, or at least outside of the U.S because they were expecting that the local machine has a U.S culture. So I had to look at the test and sure enough, you see up here, they're saying culture info in U.S and expect them dollars. Here they're not specify a culture, so it's going to use a culture of the machine, which in my case is Swiss Franks. It's not going to be dollars. And exactly the same in vector three. Vector four actually passed. Can you see why? I know it's a bit small by the look of it. Anyone spots it?.
04:19 Speaker 2
[inaudible]
04:19 Adam
Testing on variable? Yes. You see the testing V one stir formatted here. It should be V2. The testing the variable from up here, and it said it's the wrong variable. So, flawed, flawed test, but it passes just because it is flawed. So anyway, I thought I'd fixed both Vector two and Vector three. So, the fix was very simple. I just said, "Take each item in the collection, in the vector. Format it by its local currency symbol, not specifying a culture, and that will be the expected format for the culture of my machine CHF." So, that fixed the test. I did the same for Vector three. Anyone who does know me knows that I'm a white space aficianado and fellow connoisseurs will notice that I actually inserted the blank line here when I made this change.
05:06 Adam
So, I actually found that out when I was putting this slide together to my horror. But there it is. It's there in history. I can't change it now. So then I did that because I got really excited. I thought this might be the first ever PR to the .NET Core Framework. So I tweeted and I said look... I sent the PR and I said, "Look, I've just sent what I think is the first ever PR to the .NET Core Framework." And this very quickly went viral. So, this is actually the PR itself. And I can actually quickly switch to this and show you. It's right here. So it did get merged, but people quickly picked up on this and all kinds of people started chiming in and is that officially the first community poll request, blah, blah, blah. And it got really exciting and it did get merged, right? .NET noticed it, of all people.
05:57 Adam
I presume someone did focus that it wasn't just done automatically. But yeah, all kinds of people kept chiming in here and it got very exciting and all kinds of gifts and things started popping up and there's Phil Hack waving his arms and... I won't go through the whole thing cause it's very, very long. But go and look it up. It's actually pretty cool. So that did get merged and that was all very cool. So we kept on watching the event and later on Scott Hanselman was giving an interview on Channel Nine. And he revealed that they actually had this kind of plan. They had this already kind of stage managed and ready to go. So Scott Hanselman was going to get on stage with Miguel De Caza. Who's the guy basically behind Mono and Xamarin, that kind of stuff. And Miguel was going to send the first ever PR to the .NET Framework and Scott Hanseman was going to merge it live on stage.
06:54 Adam
So I completely ruined that plan. And I think this is the actual moment when they looked, they pulled up the pa... Sorry about the resolution. This is a scrape from a tweet. I can't find any better resolution, but they pulled up the webpage and they were all ready to go. And it says hare, "Adam Ralph committed an hour ago," just look at Miguel's face. I've done this talk a couple of times. I always try and publicly apologize to these guys saying, "Sorry for ruining your plans. I'll do it again. Sorry guys, if you happen to watch this video." But in the end, Scott actually had the last laugh. Because I don't know if you noticed, I sent this PR saying, "This fixes the following tests failure on my DECH machine, where DECH means Swiss German."
07:44 Adam
And Scott was telling the interviewer about this funny story and how it all happened. He said, "Well, a few minutes after we made the announcement, this guy from the community, Adam Ralph came along and sent the PR and someone merged it. I think he's from Czechoslovakia." And from that moment, I became known as that Czechoslovakian guy. The guy that sent that PR, and this has actually persisted. I even have a friend who still calls me the Czechoslovakian guy. He won't let it lie. So yeah, I think Scott maybe you got the last laugh or did you? Because Czechoslovakia doesn't even begin with CH. And it's not even a country, it's a remnant from the Cold War. So yeah, maybe you didn't have the last laugh after all. Okay. Let's step back a little bit and think about open source more generally.
08:31 Adam
So, I'm going to talk about open source from three different angles. So I'm going to talk about it from the point of view of the community, because ultimately that's what open source is, open source is the community. And it's quite interesting to see how that's evolved over time. I'm going to talk about Microsoft. This is not going to be a talk about Microsoft, but I think Microsoft's journey through open source and its relationship with open source is a really compelling tale of how powerful the influence of open source is. And the relationship that's built up between open source and the big corporation. Then we are going to talk about me. And I'm going to tell you a little bit about the journey that I've had through open source and the things that have happened to me and the things that I've managed to get out of it.
09:16 Adam
So we can trace the history of open source right back to the 60s. I'm sure most of you ever heard of MIT, and more specifically within MIT, there were a couple of organizations called the Tech Model Railroad Club and the AI lab. And it wasn't just MIT. It was places like Carnegie Mellon Stanford University. And people all around these universities, they got these new shiny computer things, and they just played with them. They experimented with them. They try to see what they can make them do and try to see what wacky directions they could take them in and what crazy stuff they could do with them. And they used to use these things a lot. Has anyone ever seen one of these, the PDP 10? This is a very famous mainframe from this era.
10:05 Adam
I've seen one. My dad used to use one at work, although I think it might've been the PDP 11. I'm not sure, but the guys at the AI lab at MIT were not... They got the delivery of this really nice thing, but they weren't really happy with the OS that came with it. So they just wrote their own one. They call it the Incompatible Timesharing System. It's actually a very interesting story in itself. And they put this Incompatible Timesharing System on it. They hooked it up to the ARPANET, which was kind of the precasa to the internet. And from there, this kind of hacker subculture started coalesce. And I started to talk to each other. And in 1975, the word hacker had its first kind of definition.
10:48 Adam
So, there is a thing called the Jargon File, which still exists to this day. And this is kind of a glossary of words and terms that these guys use for the things that I do with computers. And a guy called Raphael Finkel entered the word hacker into the Jargon File in 1975. And he said, "A hacker is a person who enjoys exploring the details of programmable systems and how to stretch their capabilities as opposed to most users who prefer to learn only the minimum necessary." So, trying to remember those words, because I'm going to call back for them a little bit as we go along. And incidentally, this was the year that Microsoft was born 1975. If you fast forward to 1983, this is where I enter the scenario. And this is not when I was born. Unfortunately, a lot older than that. This is when I got my first computer. Does anyone recognize this? Wow! I see a nodding head. Are you originally from Australia? Wow!
11:51 Speaker 3
[inaudible].
11:51 Adam
Okay. You're just an enthusiast. Oh, that's good to hear.
11:54 Speaker 3
[inaudible].
11:55 Adam
Your dad had one, really one of these? Awesome. So this was a computer by Acorn computers, acorn computers, and the BBC got together in the UK and started a program for schools. They wanted to put a computer in every single school. So had this much bigger machine called the BBC micro, which is kind of about this big, and this was kind of the cheaper mass consumer version of it. So this is the one that I got home in 1993. The best thing about this thing is it at a really, really good basic because it got the basic from the BBC micro, which was designed for schools, designed for teaching. And that meant that I used to spend a lot of my time writing this kind of stuff. You could play games from tapes in these days, and that's how we played most commercial games or you get a magazine or a book and just type out games and then play them.
12:46 Adam
And I used to be able to type this out in about a minute flat. It was one of my party tricks. So we weren't allowed to put computer games on a school computers. If you got caught with a game cassette, you get it confiscated. So at the beginning of lunchtime, we'd huddle around the computer. I typed this out in about a minute flat and we play it for an hour. So, that was really good. It got me a lot of friends. I guess it's a bit small for you at back, but can anyone see what kind of game this is?
13:15 Adam
I saw this. Yeah. Clue is in the variable names. There's things like road and the car. So it's a car game. It's a racing game. And I actually recreated this from scratch for this talk and it took me about a half a day. I just couldn't remember any of the syntax, but I got there in the end. So, I can actually take this computer game and I can switch to a BBC emulator and I can paste that code in and fingers crossed. I can hit run and there we go. Hey Presto! All right. And I tell you what? This game is really dumb, but it's actually quite addictive.
13:59 Adam
I think I wasted about another half a day just playing with this software I wrote to it. And it does get more difficult as you go along. So these red things get a bit more frequent and the road gets a little bit more windy. I was about to say, I normally get over 500, so tempted to have another go. Should I? No, no. Or is this temptation. I've never got to a 1,000, right? I've never, ever got to a 1,000. I'll keep trying. So, believe it or not, that's not the only thing that was going on in the world of computing in 1993. Does anyone recognize this guy? Anyone.
14:42 Adam
It's a guy called Richard Stallman and Richard Stallman. He looks a bit different now. But Richard Stallman is a very vocal proponent of free software, not free as in bear, but free as in freedom. So he wants software to be freed for it to be open for it to be open for modification by anyone. He hates companies hiding software. And this was the period of the original proprietary Unix was so there's a lot of big companies having their own Unix distributions and fighting for domination in the market. And Richard hated this because there were all kind of... Well, you can call it closed stores.
15:22 Adam
They weren't open the code wasn't free. Then you can see the source code. So he had this dream of a free open Unix OS built by the community and he called it GNU. So GNU is actually a recursive algorithm. It stands for GNU's Not Unix. So it really, really great idea. And the GNU project went to work on this, but if we fast forward to 1991, it still hadn't happened. So a lot of good stuff had happened in the meantime, they'd released Emacs and all kinds of other stuff, but the dream of a free operating system had never actually materialized, but in 1991, something else came along. Does anyone recognize this guy?
16:06 Speaker 3
Linus.
16:08 Adam
Linus. Exactly. It's good. They're getting easier now. So Linus invented in 1991, something called Linux, which I'm sure you've all heard of. Now, the amazing thing about Linux was that Linus had the idea for Linux in 1991. He posted the first version of the code on a bulletin board in 1991 and released the first version in 1991. So from inception to fruition within the space of a year, but why hadn't that happened with the GNU project? Why hadn't they released their free operating system in that length of time? Well, in 1997, we got our first kind of like attempt at explaining what that fundamental difference was. Why did Linux happen so quickly? Does anyone recognize this guy?
16:59 Adam
It's going back to be a little a bit more difficult again, there's a guy called Eric S. Raymond and Eric S. Raymond wrote in 1997, an essay named The Cathedral and the Bazaar. And in that he described two different methods of development of software development. The cathedral is where yes, the code is open and available and anyone can see it and people can modify it. But between releases, between phases of that software being released, it was really only kind of a smaller group of developers who collaborated on it and work together on it very, very closely. Then there's the bizarre where everything's kind of a bit more wild and out in the open and every, and it's all open discussion and open conversation and open decisions. Everything's kind of done publicly.
17:44 Adam
This was more how the GNU project was being run. And this was described more how Linus had run the Linux project. And he actually said that Linus's greatest invention was not actually Linux itself. It was a development methodology. It was a development methodology that made Linus great and is now continuing to make lots of other software great. This was the beating of the open source methodology of software. It was more around the bazaar model. This is actually a book. Now the essays remains of a book you can buy on Amazon. I thoroughly recommend it. It's really, really fascinating to read about the history of he's stuff.
18:23 Adam
Okay. 97 continue. What else is going on 97? Well, this is when I got my first job. I had actually finished university a little bit earlier, did some modern ends, but then I got my kind of first job in a big company in a bank right here in Sydney. So, me and a friend of mine, we decided to do a two-year round the world trip with a year in Australia in between. I got here at the end of 96 being 97 I got a job not far from here, just over Clarence street, Margaret Street Way. And it was a horrifically boring job. I had to basically take two sets of numbers and make sure that they were the same. That's what essentially what it boiled down to. And if something was different, I had to tell my boss will send an email to someone I can't remember.
19:05 Adam
And this was incredibly boring. And one day I'd kind of done my number matching for the day. And I thought, "Right, what can I do now?" And I sort of playing around the next cell and stuff like that. And I found this button called record macro, and I hadn't done programming for a while. Actually went to university, did maths. So I left programming behind for a few years by press this button and nothing really happened. So I just carried on doing my stuff and I noticed that it was still recording. So I said, "Okay, let's get rid of the thing. Let's press stop." And then boom! All this stuff appeared on my screen and it kind of looks a bit familiar.
19:41 Adam
So, it had lots of dots and things in it and brackets where I wouldn't expect them, but I'd seen this stuff before. So this is code, right? I've seen this before. It looks a little bit like basic, but of course it was VBA. And I thought, "Right, I'm going to put this to use." And I spent the next couple of days basically automating my job and I cut it down to the point where I could come in, press a button and sit back. It would take about 10, 15 minutes to run and my job was done. And this is pretty awesome. I had about a month of basically just coming to work and just pressing a button and kicking back. But then the boredom set in, I thought, "I can't carry on like this I want to work here for the next six months and save up to go traveling again."
20:25 Adam
So I told someone, I said, "Look, I've automated my job. I've spent the last month, automating it, even though it took me two days." I said, "Great. So automate some other stuff for us." And I spent the next six months just automating a whole load of other stuff and just writing all kinds of crazy VBA. I think I got into access as well, all kinds of other stuff. So I'm going to start drawing this graph now, now this is a graph of the cumulative users of my code. So number of people running my code, right?
20:56 Adam
And as you can see that in the 80s it was me, my brother, and couple of friends let's just say five for want of a better number. And then when I started automating this stuff, two, three people started running my code at work, right. And this is the new stuff that automated here. So, all in all eight people in history had run my code. So that's not too interesting right now, but I'll come back to it in a bit. 1998 was a very big year for open source. Who remembers Netscape Navigator, few of you. So it was the nuts back in the day, right? It was the thing. It was awesome, right. And then IE started to come along and IE was a bit of a joke, but then IE actually got fairly good and it started to become a realistic competitor to Netscape. And Netscape was thinking, "Well, what are we going to do here? We're in trouble, right? I forced like gaining a lot of ground."
21:54 Adam
They read the Cathedral and the Bazaar by Eric S. Raymond. I thought that could be a good idea when they saw what had happened with Linux and how effective that was. They decided to make the Netscape Navigator source, the flagship product of the company. And eventually that actually became Mozilla Firefox. In reaction to that, a good bunch of people, including Eric S. Raymond and a bunch of others actually got together and defined open source. So this is the year the term open source was coined. And it got a very long-winded definition, which I won't go into, but it basically describes the method of development that Linus invented with Linux, do everything in the open, in the public where anyone has a chance to contribute.
22:43 Adam
This is also the year where this thing happened. Has anyone heard of the Halloween documents? It sounds spooky and scary, but they're not named because they are. Although, actually when you read them, they are a little bit, this was a bunch of emails and memos that went around Microsoft between very high level executives and Eric S. Raymond, again, actually got hold of these things and he made them public on Halloween in 1998. Hence, the Halloween documents. Now there's a lot to them, right? It's a lot of documents. But they really do make for quite amazing reading. And I'm going to read you just one exit verbatim, because it's really quite amazing stuff.
23:29 Adam
OSS projects have been able to gain a foothold in many server applications because of the wide utility of simple and highly commoditized protocols, right? That sounds great, isn't it? By extending this protocols and developing new protocols, we can deny OSS projects entry into the market. So think about what's being said, there's a high level execs at Microsoft, right? Now actually saying things are great right now. We've got simple and highly commoditized protocols. Let's make them complex and specialized and owned and not commoditized. To me, it's a very underhand strategy. It's not saying, "Oh, look, there's this stuff in the market doing really well, let's be better, right? Let's use that positive competition and let's be better." Now, it's sabotage. And you're sabotaging those things and trying to deny them entry into the market, by doing something that's ultimately going to harm everyone by making simple things complex and by making commoditizing, specialized and owned.
24:41 Adam
So it's really quite incredible stuff. Now think about that when we start to go on and look at some of the other stuff that's happening now, and we can relate this back to what was happening in the Halloween documents about Microsoft was basically saying about OSS is the enemy. We want to kill it. Does everyone work for Microsoft here? No. No. Okay. Good. All right.
25:08 Speaker 3
Used to.
25:09 Adam
Used to. Okay. Hold on. You've got out now. Anyway, I'm dragging their skeletons out of the cupboard, but this is 20 years ago, right? I'm going to say much-
25:18 Speaker 3
[inaudible]
25:18 Adam
It was about that time. Oh, no wonder you've got out. Well, I'm going to say much, much nicer stuff about Microsoft now. This was 20 years ago. Yeah. Okay. 1999. I actually became a software developer in 99. So, we left Sydney, we finished our travels, went back home and I've got a job in London as an actual software developer, not just kind of automating stuff on the side, but employee to come in and write, learn a business software. And that meant I could use really exciting things like VB6, an ASP, not ASP.NET ASP.
25:57 Speaker 3
[inaudible]
25:57 Adam
Yes. Or classic ASP. There was nothing classic about it at all. It was really good at the time. It was really good. I really enjoyed it. And Sybase, which went on to become the foundation for SQL Server and lots of other stuff. Now, that had a bit of an impact on this graph. Again, so this is number of users of my code. It was a global system rolled out to a global department with a few 100 users. So, all of a sudden from, I don't know, maybe 10 users or a few tens of users and went up to the hundreds. So the actual numbers aren't important, but it's gone from the sort of tens to the hundreds of users of my code. In 2002, Microsoft did something really interesting. They released something quite interesting, anyone know what that was?
26:43 Speaker 2
.Net 1.0
26:45 Adam
.Net 1.0. Exactly. Which came mostly with .Net passport and .Net messenger and all this weird stuff. They didn't really know what .Net was back then. In the end they actually wound that back and it just became a .Net Framework and they've done that runtime. And NUnit had the first ever contribution... Had the first ever commit in 2002, right? Same year that .Net was released. The first ever commit was might've NUnit, as an open-source framework. That amazed me when I found that out. I thought this stuff starts like way later. And I didn't know about it until way later. But yeah, when you look at it NUnit started the same year .Net was released. Quite amazing.
27:27 Adam
Now in 2006, in the last eight years, Microsoft has done a lot of thinking. They have done a lot of thinking about open source and they'd realize that open source, it's actually not going to go away. They started to think about how they're actually going to co-exist with open source and how can we not try and kill it, but actually try and ultimately help it to make us some more money. So how can we co-exist with it in the market? And they appointed this guy, Sam Ramji, they employed this guy and they appointed him as the head of open source strategy. So the strategy used to be just to kill it, right? But that wasn't his job. His job was actually to promote it and try and use it and co-exist with it.
28:10 Adam
One of the first things he did was he created CodePlex. So it's gone now, but back then 2006, they were giving the community somewhere to host their open source projects. It was a precursor to things like GitHub. In 2008 this is the year that I first used OSS, right? So I actually had a break in 2008. I had almost a year between two jobs and I started to hack again. I started to play around with .Net and I started to stretch its capabilities, not happy just to learn the minimum necessarily. I rediscovered my love of hacking. And I started to reach out for OSS libraries. Because I was reading a lot about the great things that they could do.
28:55 Adam
And in 2011, Microsoft does OSS. So this is the first year that Microsoft actually sent an official contribution to an open source project as a company, they sent a change to Samba, right? So Samba is the Unix thing for exposing a Unix fileshare, windows shares and windows network. And they sent a patch to Samba to fix something or add something as a company for the first time. So actually contributing back to OSS now for the first time. In 2012, this is when I did OSS. This is when I not just use open source, but when I actually contributed back to open source, I sent in a few pull requests for a few projects, fixing up some small things.
29:38 Adam
I also launched my own project called xBehave.net, which is an extension to xUnit. And that was based on a sample that Brad Wilson put together, the founder of xUnit with a guy called Phil Hack, who used to work for Microsoft now with GitHub. So I guess he works for Microsoft again. And, again, I wasn't happy just to learn the minimum necessary. I explored what I could do that thing. And I ended up putting it into an actual package and it's been quite a successful package since then. And has anyone heard of FakeItEasy? I see quite a few nodding heads. FakeItEasy is a mocking framework in 2012, the original founder, a guy called Patrick Kane from Sweden. He discovered that he just didn't really have enough time for the project anymore, but instead, a lot of love for it.
30:23 Adam
He still loved the project. So he tweeted and said, "I really love FakeItEasy. I've got no more time for it. Can anyone help me out?" And I thought, '"Well, there's no way I'm qualified to do this. There's no way he'll pick me, but what have I actually got to lose?" I actually put up my hand and I tweeted back and said, "Sure, I'll give it a go." And he had a look and he said, "You seem like an okay guy. It's yours." Just that. And all of a sudden I was now looking at a FakeItEasy. I was the maintainer of FakeItEasy, which was very exciting for me. I spent a number of years on that project. I actually left it this year because I'm concentrating on other things, but I had a really, really good time looking at FakeItEasy for a number of years.
31:07 Adam
Now that had quite an impact on this graph. So, this is the graph before 2012. So you can see here that I've got this flat bit here. Then I got my job, my proper software development job, and then it kind of didn't really increase slowly, but really the system I was working on never went beyond the few 100 users around the company. Now, your experiments may be very different to that. You might have thousands of users, 10 tens of thousands. You might be working on an e-commerce site, which has millions. But in my case, it was an in-house line of business application with a few 100 users. Now, when we go to 2012, the graph looks like this and that's because FakeItEasy has in the region of tens of thousands of users. So, this stuff back here is this stuff down here so close to zero in comparison that it's almost zero.
32:03 Adam
Now, we're yet to discover what this graph means. We'll keep exploring it and finding out. But I think it's quite interesting that just that sheer dumb metric of how many people are running my code when suddenly into the tens of thousands. Now 2014, a lot of good stuff happened in 2014. Satya Nadella took over as a CEO of Microsoft. Does anyone remember this? Microsoft loves Linux. The CEO of Microsoft standing up on stage, on public, on a public broadcast event, saying "Microsoft loves Linux," right? And this guy down here is saying, "The turnaround is complete." And I think he's not far off the truth with that.
32:45 Adam
And of course, he can say that right. Halloween documents before my time. Yeah, he's got that excuse. But yeah, he is in charge of a very, very different Microsoft that Microsoft of 98 that produced those rather scary documents. In 2014, we got .Net Core. So .Net on Mac or Linux, right? .Net Core was made OSS .Net Framework was announced to be open source only for some idiot from Czechoslovakia to ruin their wonderful stage managed production. Rosalynn OSS, is C# and VB.Net are OSS. You can fix things in the language. You can add features to the language by sending poor requests. That's pretty cool. You can become an NVP, a Microsoft MVP just via contributing to open source. So they're actually rewarding you for it now. Just keep contrasting this back to that company of old, it's really a complete turnaround in the attitude.
33:49 Adam
This is the year that I joined the Script CS team. Anyone had a Script CS?. This is a project to allow C# scripting. It was quite exciting for a while. Things have kind of moved on since then, but I sent a few PRS to it and Glen Block and a few other guys that looked after the projects, invited me to join the team. And I jumped on that chance. That was really exciting. This is the year that I contributed to NuGet, who here is a .Net developer? That's most of you. So I suspect you've all installed a NuGet packages sometime. So I don't know if you're familiar with the development dependency feature in NuGet, this means that when you install a package, it's marked as a development dependency.
34:34 Adam
So when you create a package, that package is not a dependency, it's just a development time dependency. So I contributed that feature and I actually found myself on a Skype call with the entire NuGet team in Redmond. So it was them around a big conference table in Redmond in the Microsoft campus and me sitting at home, my office on a Skype call with them selling this new feature to them. And then, in the end they kind of said, "Yeah, great, can you implement it?" And I didn't expect that either. I was just trying to get them to do it. So I thought, "Well, okay, I'll give it a go." So I went off for a couple of days, implemented feature, and it's still there. So now these days it's morphed into the private assets thing that you see in the CSPROJ. But ultimately whenever you install a NuGet packaged, you're running some of my code or at least a derivative of some of my code.
35:23 Adam
That's a quite an impact on this graph again. I don't know if you can see this, but this is somewhere... There's about 10 million .Net developers in the world. Estimated by number of visual studio downloads and things like that. So even if only half of them are running my code, when they're installing NuGet packages, that's probably quite pessimistic as an estimate, but the point is, again, numbers not important, but there are now millions of people running my code. There are millions of people running my code just because I contributed to features to NuGet. Now, in 2015 we got more great OSS stuff from Microsoft, the CoreCLR itself when open source, that's the actual runtime for .Net Core. MSBuild WCF all the old friends are joining in the fund now, whether you love them or hate them, it's probably better to have them open source and open source.
36:17 Adam
And let's face it. MSBuild it's actually getting a lot better now, right? The new tiny CSPROJ, it's pretty nice, right? So great things are happening there. And it's all open source, which is really cool. Windows open source, that sounds farfetched. But in 2015, a senior guy at Microsoft called Mark Russinovich said, "One day there might be an open source windows." Now I'm skeptical, right? But you never know, now the fact that that is actually going through the mind of a senior executive Microsoft, and for him to actually say it publicly is quite incredible. Back in 98, you wouldn't even be allowed to think that, they thought police had beyond you in no time, but this is a senior exec actually speculating that maybe there'll be an open-source windows one day. So like I say, I'm skeptical, but yeah, who knows?
37:17 Adam
So, by the time 2015 rolled around, I was maintaining several OSS as projects. I got more involved in some other projects. I spoke at my first ever conferences .Net Fringe was the first one. Then there was NDC, that was in Oslo, I think. And then a few in Poland and .Net projects in Dallas. I became an MVP and I got a job at particular software. Now, the reason I'm calling all of this out is because open source was my gateway into all of this. So it was because I contributed to open source. I became a maintainer of several projects. It was because of open source that I started speaking at a conferences, directly, I got invited to my first conference .Net Fringe through Glenn Block, who was my fellow member of the Script's CS team. He invited me to come and speak.
38:08 Adam
And then NDC, which was my second one. I gave a very, very early version of this talk back in 2015. So it was directly through my open source involvement, I got into that. I only got an MVP because of open source. I got my MVP before I'd done a single talk and before I'd done a single blog post, it was all just because I've done a lot of open source contribution. And then someone nominated me as a reaction to that. And Particular Software is an open source company. We are the people behind NServiceBus and products around that, and they're all open source. So now every day is an open source day. And the reason I got that job was because through FakeItEasy I got to know someone, I go in and got to meet them in-person at a .Net user group. I became friends with them. And then he said, "I'm going for this cool new job. Why don't you apply?" And I did. And I got the job. Again, it was open source actually opened that door for me.
39:06 Adam
Without open source I don't think any of this would have happened or certainly not in the same way. 2016. So 2016 was an interesting year with respect to the Linux kernel. In 2016, it was asked first estimated that the Linux kernel is now running on more than 50% of devices. So this is all devices. This is phones, laptops, workstations, TVs, washing machines, fridges, whatever one other weird and wonderful device runs some kind of computer. So that means you could take any one of those devices at random, and it's more likely to have Linux on it than not. And some studies were done about Linux in 2016 to find out how much it might cost to rewrite the Linux kernel from scratch if it didn't exist. Does anyone want to take a guess at the kind of figure that those studies came up with? So I heard millions, any advanced on that, anyone that gets billions.
40:14 Speaker 2
10 million.
40:15 Adam
10 million.
40:15 Speaker 3
10 billion.
40:16 Adam
10 billion. Right. We're in the right ballpark, right? It's billions. It is billions. They all disagreed wildly, but they had one thing in common. They all had the word billion in them, right? So it's more than 1 billion someone. Now thing is a billion of anything it's difficult to imagine. A billion dollars is just as difficult to imagine. I don't know. You can think about it in terms of how many developers would that buy you for 10 years? It's tens of thousands of developer years, tens of thousands of developer years. It is a mind boggling amount of effort. And all that effort has actually gone into Linux kernel. How? Via open source, right? Open source has made this happen.
41:05 Adam
In 2016, Microsoft kept that kind of train going. They said, right, SQL Server. That's going to run on Linux now. They bought Xamarin and then open sourced it, right. Xamarin was not open source before Microsoft bought it. They bought the company and just made it open source. They had the most contributors on GitHub for the first time. So they were the organization where the most contributors on the GitHub. What's the next natural step for them? By GitHub. And then 2018, they both GitHub. And now the .Net Framework, of course, it's dead. It's not real, I just put that in the safest to the week, but there's not that framework. It's not really dead, but then the .Net Framework, it's interesting now, when we look at the relationship with the .Net Framework to .Net Core. Now, when you start a new project in visual studio now, do you start in .Net Core or .Net Framework?
42:11 Speaker 3
[inaudible].
42:12 Adam
.Net Core. I'm hearing more Core than Framework. I go for Core. Why wouldn't I? I mean, let's not too much about Core 1.0 1.X days. It was perhaps a bit of a tire fire, but .Net Core 2, it's looking pretty good .Net Core 2.1. It's a long-term supported version. There's not much reason to reach for .Net Framework now, unless you really specifically have to. The exciting stuff's happening in .Net Core, it's moving fast. It's like .Net Core is running off down the road and building in new features and .Net Framework it's kind of huffing and puffing and trying to keep up, but it hasn't got the open source legs that .Net Core has. And I think it's a quite a nice illustration of what happens on one thing. And its equivalent is one thing's open source and the equivalent isn't. .Net Framework it's struggling to keep up now. .Net Framework 4.8 is kind of in preview now, I think, but I don't think anyone's that excited about it as they were with .Net Core 2.1.
43:12 Adam
Let's take one last look at this graph. So I've gone ahead and been a bit more bold now and I've said, well, if there are 10 million .Net developers in the world, then I'm going to say that probably most of them are running some of my code at some stage with the stuff I've done in NuGet and other projects. If you're not running some code fairly regularly now, as a .Net developer, it's probably quite unusual. And again, the numbers aren't very important, but it's kind of starting to get to this kind of global ceiling of somewhere around the 10 million mark. This graph isn't very interesting because it's basically just a flat line and a massive spike and a flat line. It's more interesting if you look at it logarithmically. I apologize I'm a mathematician. I did master university. A logarithmic graph just means that each line is 10 times the line below it.
44:03 Adam
So you can see here that back in the 80s, I'm kind of in the 10 somewhere, I get my first IT job. And that jumps up into the hundreds that kind of stays there. And then I start with open source and then we're kind of two orders of magnitude up, another world in magnitude and another. And we're kind of reaching this global maximum of 10 million developers running my code because most of the stuff I've done is NuGet and FakeItEasy in that kind of stuff. It's kind of development style tools. This doesn't take into account now. The code that's running a line of business applications that users are using they're using NServiceBus, right? That's in addition to all of this stuff. And I still don't really know what this chart means, to be honest. It's just a chart of how many .Net developers or how many people are running my code.
44:50 Adam
It's not to say that this code down here wasn't important. It might've been more important than all of this code. This code down here might have been written for some kind of life support machine or something. It wasn't but it could have been, but I think it's some kind of interesting metric. Maybe it's telling us the potential of the influence that my code could have in the community in the software community. Before I did open source, it was really limited within that company, a few 100 users. Now, millions of people are actually benefiting from that code, which I'm contributing to the community.
45:27 Adam
And it is actually very easy to contribute this stuff. And I'm going to try and show you just how easy it is right now. Now the thing is to contribute code now, you actually don't even have to leave your web browser. So this is auto mapper, right? And it's a shame that Jimmy Bogart isn't here because I was going to shame him, but I'll still do that. This is recorded. So that's all good. Now, as you can see, we've got some very, very dodgy white space going on here. And when I see this kind of thing, I cannot let it lie. All right. Check out that, check out that and check out that. There's graceful. So what I can do now is I can go ahead and just fix this right here. So I go scroll back up to the top. I hit this edit button and if the Internet's working, which it is, I can go down to this offending code, this complete eyesore. If I can find it again, here it is. Right. So let's make sure that that is one, two, three, four spaces.
46:43 Adam
That's the same and that is already. Okay. All right. So I can then type a commit message. I can say, well, fixed Y space and an extended message something like, "I'm sorry, I just had to fix this before I could go on with my talk here at NDC Sydney," and I can propose a file change. Now, if I haven't forked this repo it'll actually fork it for me and it will create a pull request. So I can say propose file change. I'm not sure if I forked it already or not. I probably have. Now it's comparing the changes so I can see the changes I've made and I can say, create pull request. And then I can say, again, correct pull request.
47:39 Adam
And there we are. I've just sent a PR to auto mapper to fix them white space. Now really trivial that'll change. Right. But I want to stress that no change is too small. And in fact, the smaller changes, the easier it is to review NPR. I don't know what Jimmy's reaction is going to be to this PR. But we'll see. And if it was my project, first of all, I'd be horrified that I had that bad white space in there. And then I'd say, "Thank you very much for fixing it." And I'd merged PR. So let's see if Jimmy does assign.
48:14 Adam
Sounds pretty easy, right? I'm sure that anyone here could have done what I just did. I don't think anyone doesn't think the opposite. So what is the future of open source? Well, again, from at different angles I want to make more impact through open source. So through the community contributions, I've done through say NuGet, for instance, although you're running a little bit of my code, each time you install a NuGet package, you probably didn't even know that. And it's probably not having that much effect in your life. So I want to make a bit more of a deeper impact and to really help people develop a better line of business applications. And that's one of the reasons that I joined particular software, where the makers of NServiceBus, all our products are open source. And now the code that I'm writing is being used in line of business applications and a much more meaningful way than that tiny NuGet feature.
49:11 Adam
So I really want to carry on doing that. I want Microsoft basically just keep going, just keep doing what you're doing, right? They're doing great open source things all the time. More of the new stuff they do is open source. More of the older stuff is being released as open source. So Microsoft, you're doing well. Just keep that going. And from the community. What I want to see is more contribution. Now, very specifically, I want to see more contribution from large companies. I want to see large companies recognize that it makes sense for their employees to be contributing back to open source, be adding that feature, to be fixing that bug on company time. It makes sense, but companies are still very slow to realize this. They're getting better. They're getting better. But from what I've seen, it's still tough.
50:00 Adam
And sometimes some companies have actually blocked right answers to GitHub. You can't even log in to GitHub anymore through the corporate firewall because they're worried about code being leaked out or people were doing the wrong thing would GitHub, but that just puts up a such a barrier it's contributions. I want to see some of those walls being broken down, and I want to introduce something at this stage and that's you to the future. Or maybe it's better for me to say us. We are the future of open source and you can contribute, you can send the PR to something like I just did, as I said, I'm sure everyone could have just sent that white space PR that I just did. It's a tiny little thing, but it's getting the ball rolling, is getting you started.
50:41 Adam
Once you sent one PR, you send a slightly big ones, slightly big one, in the end you might end up becoming a maintainer of something has that snowballs, answer a call put your hand up and say, "Yeah, sure. I'll help out or I'll take it on when someone asks for help." Throw it out there. You might have that little project. So you might think, 'Well, this would be quite good as open source, but it's not ready." Well, software's never ready. Right. Software is something that evolves. And to be honest, if you put it out there as open source now, no one's really going to notice anyway, but it has the option of someone coming in and finding it useful and contributing back. So my advice is put it out there, make it open source early. Give people the chance to get involved. So, we've got a little bit of time left, but I guess you probably won't complain if we finish slightly early, has anyone got any questions now before I wrap up? Yeah.
51:37 Speaker 3
How did you balance time spent delivering value of word versus contributing open source with your time at work.
51:46 Adam
Okay. So how do I balance time spent contributing open source with my time at work? So, it's a good question. And I probably don't have a really great answer. I guess this is one of the reasons that I want companies to recognize this more, right? Because that's a challenge. And I found a challenge and there were times where... And you've probably heard this from other open source maintainers. Did any of you go to the talk by Jeffrey Huntley where they talked about this, where they talk about things like burnout and stuff like that? And yes, I felt that pressure before, and it's tough when you're trying to balance it full-time job and you're doing it as your hobby. I want to see that not having to just be a hobby because it makes sense doing this stuff on company time.
52:30 Adam
I remember I used to think, "Well, we need to fix this. I'm going to go home and do that tonight and my own time. And then I'm going to come in tomorrow and hopefully it's going to get merged and some project would merge and release really quickly. And hopefully then we can use it at work tomorrow," which is ridiculous. It's completely ridiculous. That should be done on company time. So, I think that's a challenge, I think that's where we need to be looking for the solution for that. You had another question?
53:01 Speaker 4
[inaudible]
53:08 Adam
So where does my motivation come from? Yeah. I think it's a good question as well. There are a number of different facets to that. One of them is just that there was things that I needed at work, and I thought, "Well, this may as well be an open source project." So, that's another thing. We do end up writing some level of infrastructure code at work for our stuff. It's not just pure business rules. And more often than not, that stuff would be better as an open source project, because if it's not business specific, it's likely to be useful at another business as well. And part of my motivation for doing open source was exactly that as I thought to myself, "Well, why am I writing this for this job when this is actually something that I've solved in my last job as well.
53:59 Adam
And in my next job, I'm probably going to have to solve again." So I would make that an open source project instead, in order to get that reuse. And I think that was part it. And maybe there's there's those sort of an altruistic aspect that I want to help out. I just want to help. Part of it sometime is to gain some recognition. I'm not going to lie. It was great to be invited to speak at conferences as a result of being involved in open source. And that just reinforced my motivation and then I got a Microsoft MVP award out of it as well. So things like that, the recognition aspect does feed back into it as well I think. I'm not going to pretend it doesn't, so it's kind of multifaceted, there's a bit of a hand wavy answer, but I hope it's useful.
54:49 Speaker 4
I'm not sure how rewarding.
54:56 Adam
I've generally found it very rewarding and that's one of the reasons I wanted to do this talk. Okay. So I'll wrap up and I'll just say that, that is one of the reasons I wanted to do this talk. And the other reason was that you may have noticed a bit of a gap between 2008 when I first used OSS in 2012 when I first contributed. And I think if I had heard talk a little bit like this back in that timeframe that may have happened a bit more quickly. So I've showed you a number of ways to contribute. I think it's good to bear in mind what kind of open source project you're interacting with, is it one that's funded by Microsoft or is it something that people are doing in their spare time or there's a wide spectrum of different open source projects out there.
55:41 Adam
Back in 2012, I was just a guy that put these projects online, back in the same timeframe, I was just a guy that put up his hand when someone asked for help with FakeItEasy and with Connect. I was just a person in the audience that saw an easy test to fix and just fix it and send a PR. And I'm sure that I could have replaced myself with any one of you listening today and things would have worked out in the same way. I don't think I did anything special. So I hope that's motivating you to somehow get a little bit involved if you aren't already. Of course, I understand that many of you here may already be quite involved in open source, and if you are, that's a really good thing. So I hope you've enjoyed it. I've really enjoyed talking to you. You've had a great conference in server. Does anyone go to pub comps? Yeah. Okay, great. I'll see you there. All right. Thank you very much.