About going Open-Source

I will start of talking about why "working for free" became an important part of the developer culture all around the world and talk about why companies should try to share as many tools as possible. I'll give some examples of tools that were open sourced and got immense traction leading to the projects growing with an intense speed. I'll try to take away the "fear" of open sourcing tools that cost ten of thousands of dollars to create. Then I'll describe how my journey with open source looks like and start talking about how you can get your feet into contributing to known projects. After that I will close off with some hints on doing and contributing to open source projects that worked out great for me. They will also get an impression on what opportunities will show up if they put some of their time into doing OS.

The audience can be mixed, but it's way more interesting for people that are either new to programming or have never worked with open source.

In a perfect world, some of the listeners would leave the presentation with the motivation and hard goal to start with OS as soon as possible.

This session was classified suitable for some domain / basic python by the speaker.

Transcript (auto)

Auto-generated from the recording utilizing Open-Source AI. Speaker labels (Speaker 1, Speaker 2) reflect diarization, not identity. Timestamps refer to the recording.

Speaker 1 [00:03]

All right, so let me start by asking you a question. So what do Blender, Git, Linux, and basically the whole Apache suite have in common? Well, they're open source projects, and they're not only open source projects, but they're projects that got highly adopted by an open source community, a community that does not only use the tools, but there are also people who maintain it. They push new features, they fix bugs, and actually they just keep the project alive. they curate the communities, the other people, they help out with problems, and everything is just done and solved by this community. So having a project that really has a community around it is a really valuable thing. So this is kind of what we are going to talk about today. So we will talk about why open source is important, how you should get started, and of course how you can get started with it. Like I said, my name is Tim, and for the last three and a half years I've been highly involved with different open source projects, be it my own one or contributing to other ones. I've built projects that reached over 9,000 stars on GitHub in total. One of them is called InstaPy which has nearly 140 contributors now, more than 1,500 forks and close to 500 merged and closed PRs. So maybe you can tell that I'm kind of really into this open source thing. If you want to follow me on my journey, I'm at Timmy Grossman on Twitter. So yeah, let's get right into it. So why working free is a good thing? If you would have shown me that quote three and a half years ago, I would have probably grabbed my backpack and just ran out of the room. Because this is something that is kind of counterintuitive. So why should you get not paid for working? Why should anyone profit from your work without paying you back something? But open source is not about the money. Open source is about, as I said, the community. Open source is about the things you learn and the people you meet. There are so many stories about people who got their future job offers from or by people who found them on GitHub, for example. And there are many more opportunities. For example, a friend of mine and me, we built a project called Robotopia, and it's a tool to help smaller kids kind of get into logic and this programming stuff, so it's just very basic, and it's built with Blockly, which is a graphical programming language from Google, and we reached out to the team developing this Blockly environment and this Blockly programming language, and we thought, well, the email just got into the trash, or something like that, something you would expect, but they actually reached back out to us and invited us over to Google to have lunch with them and discuss about how we used it and why we used it, how we would make it better in this kind of stuff. So this is something that, like the core value of this whole open source thing, the community around it. And of course, you will get a lot more out of it. You will kind of grow your skill set in a way that you can't do by building projects yourself. You will get acquainted to other projects, to other coding styles, how people develop, what kind of important things there are on bigger projects that you might not see in smaller projects or your own projects. And of course it will give you good reputation, but we'll get to that later on. So if you're interested in getting involved, there's this entrance hurdle which is kind of how do I get started, how do I get involved? And there are basically two different things you can do. So there's this way in which you build your own projects, like I said, and there is one pitfall here. It's kind of, in the beginning when I started out, I thought, all right, I want to build this project and I know that a lot of people are interested in this, but myself didn't really care about it. So I kind of developed it and I pushed myself to build it and build it. And at one point I kind of faced this really difficult issue and I knew that I had to invest a lot of time to solve it correctly and not just kind of put it there and let it sit there. So I just quit that project. And after that, from that point on, it really turned into me just building stuff I wanted to build myself, projects that I wanted to use myself, and I was really interested in. So that's kind of the story of how Instapy got started as well. And in the end, it turns out, like it most likely always does, that there are a lot of people who have the same problem or the same idea, but they are just not eager to build it or to kind of use it. Yeah, and the other one is, going in the direction of contributing to other projects. And this is how to really get in contact with other developers of bigger projects. And if you do that, you should start with smaller projects. Don't go for React or Git or Linux right away because it will just get you demotivated, right? You don't want to build something or kind of contribute something and then it just gets rejected because someone was faster, someone did a better job than you or anything like that so you want to have small steps before really contributing to these big projects but there's there's way there's time for you to do that and maybe it's not super interesting in at the beginning if you kind of just contribute to smaller projects but it will you will get there and it will really enhance your own career as well so if you should go for the contribution kind of contributing to other projects. There are basically a few ways you can do that. So the first one is what we talked about is features and fixes. And it just means you are going to contribute code to that project. Most of the times it might just be fixes for stuff you saw when you used it yourself, but maybe there are some features that get accepted and other people want to use and then they merge it into their code base. And of course for private developers this is probably the most fun part. And it's kind of the way to go for people here. But maybe you're not too much into coding or maybe you're not completely sure that you can contribute code to a bigger project. So maybe you're also doing some design work. So design means a lot of things. Design means logos. There are a lot of small projects that might want to have a logo or would be happy to have someone design a logo for them. But more importantly, it's UI designs. It's helping them out with their front ends. UX design is a very important topic and maybe you can just kind of take a few friends sit down with them and look over the projects themselves with them and kind of give back the feedback you got to the projects themselves this is super valuable stuff and this is most likely nothing other people will contribute because yeah github is kind of the platform for code and yeah that's kind of a problem but everything like that is super important for projects as well community again the way this is super important for open source of course so if you want to contribute in terms of community then you should search for the bigger projects because they most likely will have some interest in having a local user group or a meetup maybe you can get a few people together to just talk about the project and kind of get a discussion going. You could also start out by curating their Slack channel or helping them out on IRC or something like that. There are a lot of ways you can get into that. For me, the most important thing is documentation. There's so many projects out there, especially in the Python world, that they just lack documentation. This is something you don't want to do. If you invest time into a project and you really want somebody to get into your project, add documentation. And because there are very few developers who will dig into your code and just read through your methods and check out what parameters you can pass, it's just not how it works. And especially for younger developers or less senior developers, they kind of fear this looking into code thing. And that's the way to solve that. So just build your project, add documentation, In the best case, your documentation looks in a way that people can just copy and paste stuff out of the README and it just works and then they can adjust that code to their needs. This would be kind of the perfect situation. Okay, so we contributed to a project. We might build our own project and open source it. So what is the next step to do to at least get something out, get something more than just learning and meeting people out of it? And this is a super important part that a lot of people miss. Actually spreading the word about your work is really important and maybe you can create some blog posts or articles about what you did and why you did it, what technologies you used and what you learned. A lot of people use FreeCodeCamp. It's like a learning platform and a publication on Medium. And there are a lot of younger developers who are just eager to read about your experience and what technologies you use, why you use them, how you use them in combination with other technologies and what the results were. So just really go in and document the stuff you do, document your faults, your problems, your bugs, and how you fix them or how you manage to find them. You can also just record a video or something like that to show how to use your tool, how people can profit from your tools. Okay, once we've done everything, there is this step that some people might say, okay, now I contributed and I built my own project. I'm going to be the next big open source guru who will get a lot of money from Patreon or something like that, earn a few thousand bucks a month. But let's be honest, this is never how you will look like if you do open source work. Because, like I said, it's not about the money. It's about experiences. It's about building a reputation and evolving yourself as a developer. There is so much more to coding and a lot of people in here probably know that if you build something on your own, if you build something in your free time, it's something you really want to build and you don't do it for the money or you don't do it for your company. It's just because it's something you want to have. In the end, there definitely is something you will get besides kind of learning out of it. And what's really important is this public presence. So by public presence, I mean it's a portfolio, it's a reputation, it's your, the way people talk to you in, for example, interviews or jobs they kind of interview you for. You will get people to realize your GitHub account and they will reach out to you instead of you reaching out to them because they see you can get stuff done and you're actually a developer who likes to, you just like to do stuff, right? There is not this, okay, I just do it for my job and when I get home, I don't want to work on code anymore because it just sucks and it just makes a lot of money, but I really, I'm really passionate about coding and so I do it in my free time. I do it whenever I like to. And maybe this will also get you some opportunities for talking at conference or maybe you find a topic about what you want to talk about at a conference or a meetup, for example. There are a lot of opportunities. And yeah, the last thing, which is probably the most important for me here, is the new context and maybe sometimes friends. For example, I was in California for half a year for an internship, which I got to through my open source work. And I met a guy out there who reached out to me because of this Instapy project I told about before. And it was super exciting. We met up for lunch. We talked about like three hours over lunch about the project and what we were going to build and what kind of the future for us looks like. And this is a whole different level. This is not kind of meeting up with a large group of people at some meetup or conference and you just pick out a few people of them, talk to them maybe for 10 minutes, but you really go deep with that guy. And actually, I met that guy three times in that six months, and we're still in contact. Every now and then we write, and he's going to visit Germany, Stuttgart in December. So we actually scheduled a meetup there. So it's really different. All right, so I will post the slides on Twitter after this talk. I got three resources for you. The first one is the GitHub open source contribution guide, And this is kind of the go-to document. If you're interested in open sourcing stuff, if you want to contribute to open source projects or anything like that, read through it, kind of dig through it. It's just like a basic, basic guideline you can follow or not, if you want to. The other two are projects. The one is Instapy, that's my project, and the other one is FreeCodeCamp. And I would really recommend you to look at FreeCodeCamp. And they just recently announced or released a new kind of pipeline for Python coding. So there might be some things in there who might be interesting for a lot of you guys as well. And those have really easy and low level entrance guides for contributing and getting your first pull requests merged and accepted. So this might boost your motivation to go in and start building some bigger stuff. If you should have any questions, feel free to contact me or if you want to get any support or help in how you can get started, any kind of resources, how you could kind of push your work or get people interested in your work. I'm open for everything. Yeah, that's it, thank you. Thanks very much, Tim.

Tim

Passionate learner and developer. Studying computer science at the Media University. Looking forward to working with ingenious teams on challenging projects.

Social card for talk: About going Open-Source