If you take a look at the title of this post and instantly think it’s a trap or bait – let me prove you wrong. This is not going to be one of these catchy titles, so “what kind of bs am I going to read here” has little use in this place. Actually, this is 100% true that contributing to the open source community might greatly affect your life – and it goes far beyond daily activities related to the coding. Therefore, let me tell you a short story about a guy, typical .NET developer, who not so long ago also thought that being an open source developer literally means wasting your time.
Everything started 4 months ago. It was beginning of the March and I’ve decided to participate in the sort of programming & blogging competition named Daj Się Poznać (Get To Know). There were 2 main requirements – develop an open source project using GitHub repository and write at least 2 posts per week for next 10 consecutive weeks. Eventually, I’ve won the overall competition – you can read my summary and another article about feelings after winning the finals. Yet, it’s not the main point here – what I’ve realized within just a few weeks since I’ve started working on my open source project called Warden was that I really enjoyed doing this and back then I was already sure that this is something that I’ll keep on developing for a long, long time.
Before I started working on my open source project, I had to give it some thought. Yeah, I had to figure something out – what possibly could I create, so that other people would find it useful? It seemed like everything was already there (whether it’s helpful stuff or not) and where’s the fun in creating an open source project that might solve some of your very specific problems, but doesn’t really help anyone else? So I started to think – what’s the hot topic nowadays and what kind of issues have I encountered in the past that couldn’t be solved easily e.g. by using some external service or library.
Suddenly, I’ve realized that in one of my previous jobs I had to implement some custom monitoring services for the applications that I was developing. And what I mean by custom? There are tons of services already in place such as New Relic or App Dynamics, not to mention tools like Nagios. Still, I felt like there’s something missing, at least within the .NET world since I’m mostly developing using this technology. For example, I had to write a monitoring application, that would validate the API endpoint, database and caching provider and if something wasn’t responding it would send an email, SMS and make a POST request to the hosting provider API in order to restart an instance of the Virtual Machine. And that’s where the idea came from – the real life problems and a niche that I thought could be fulfilled.
Ok, now I know what to do, so let’s do it! Well, not that fast amigo – this is going to be an open source project, which means that anyone can browse your code, use it and maybe even fork it. You don’t wanna rush with your decisions and put some crap out to the world or rewrite a half of your solution every few weeks. Unless you want to do something for fun, feel free and go for it. Otherwise, you’d better think through how to structure your overall solution, what patterns to use, how to make the project extendable and design some conventions that you can easily follow later on in the future. Here comes a list of my main goals that were the most important ones while working on the Warden:
- Fluent API
- Easily extendable
- Small and lightweight
- Available as a set of packages designed for specific goals
- Well documented (at first I was making fun of comments and documentation but the people on Reddit made me realize it’s not a good idea).
I’d say that the most difficult ones were the first few weeks. After that period I’ve known pretty much everything in terms of the project structure that I will be following. Once I’ve established my design patterns it literally became a no-brainer to create new Watchers or Integrations. I’ve also made it quite easy to create your own extensions which is described here and plug into the overall pipeline seamlessly. The key was to design the very simple interfaces and let the other part of the framework do the heavy lifting.
Hurray, my project is now available for free to everyone, yet somehow no one cares about it. I’ve barely 2 stars on the GitHub – one given by myself and the other one probably comes from some random fella who miss clicked the screen while browsing the repository. Now, how do I let the other people know that I’m working on something, potentially really cool and useful? Well, that’s a really good question and there are no easy answers.
I’m no expert on marketing, but let me tell you what I did (I’ve received almost 200 stars so far, so I think it’s not a bad result). There’s basically one thing you can do – a sort of viral marketing, including posting messages to the groups, forums and also sending emails to the people who might be interested in your project. Initially, I’ve posted info to a local facebook group for the .NET developers and reddit – got a little bit of attention here, people started to post their feedback which was really cool. I’ve also had a chance to present my idea in one of the local developers group meeting KGD.NET (and there’s more to come) – I’m damn sure that your local community would be more than happy to hear about your ideas, so don’t waste your time and apply for it! Anyway, all of these events have convinced me that I’m working on something that might be useful.
And I’ve kept trying to advertise it using different routes – the main breakthrough happened after sending an email to the one and only Scott Hanselman. After few weeks he sent me a response and has also tweeted about it! Probably one of the best feelings in my life while being a software developer – my email box was literally about to explode because so many people started following me on Twitter.
I’ve also sent an email to the Carl Franklin from .NET Rocks! podcast and he gave me an answer blazingly fast within 5 minutes and promised that he will mention the Warden in one of the upcoming episodes. And he kept his promise – you can listen about my project in episode #1317 Cloud Infrastructure with Paul Stack at the beginning, it’s called Better Know Framework section. I’m really grateful to Scott and Carl for mentioning my project, as it truly convinced me that I’m really working on something that makes sense.
The moral of the story is – you don’t need to spend any money on advertising your project. As long as you believe it has a potential, just post the info here and there and wait patiently. I’m going to send even more emails to some other well-known people as Scott suggested, but first I need to work a little bit more on some core functionalities.
I didn’t have to wait for a long time for the first pull requests and issues to start popping up (come on guys, it wasn’t supposed to be like this…). There weren’t too many of them yet, but definitely, it was something that kept me busy for some time and provided a real profit to the project. And again – it only means that people out there in the world use your solution and find it helpful. I’d recommend not to let them down, even if you’re currently occupied with some other activities, just answer politely and let them know that you will at least try to resolve the issue at some point in the future.
I’ve already discovered the potential way how to make the Warden profitable. Do you know what exceptionless is? This is an open source project that you can use for free, but if you don’t want to setup the whole environment on your own, you can use one of the paid plans. And that’s exactly the business model that I’d like to achieve one day. I’ve already talked to the Blake Niemyjski who is a great guy and he provided a lot of useful feedback (actually I was invited to join their Slack channel) and on top of that I’m about to have a talk with a few other people who have successfully ran similar projects, therefore I believe that one day I will be able to make some money on the open source project.
I’ve asked some friends of mine to help me develop the Warden – we’re going to have it running also on Android (thanks to Adrian), there will be a brand new web panel based on AureliaJS framework (thanks to Mariusz) and everything will be integrated via the new RESTful API that I’m going to develop with Grzegorz (thanks). Oh, and it will look really great, as the design will be created by Maciej. It’s great to have a team, mostly because you don’t lose motivation to keep working on the project and don’t feel too overwhelmed by developing everything on your own, which is quite often not possible either due to the lack of time or technical knowledge.
However, this isn’t the only open source project that I’m currently working on. I’ve just started another one named Hoard with a friend of mine Alicja. This plugin will help to intercept and store links from the Facebook conversations (at least in the beginning). We’re doing it mostly for fun, but it might be a quite useful extension and God only knows how does it evolve.
I also have one more idea in my mind and if it works (the proof of concept) it might be truly a stuff that will change the world (I’m not kidding here). However, it’s something that I’m planning to start working on no sooner than in the next 2-3 months, so before I have anything to share, it will take some time. Therefore I’m not making any announcements yet.
Besides all that stuff I’ve been also developing the fitness application named Fortitudo (42.do) for over a year now (with Adrian, Mariusz, Maciej and one other friend) and we’ve just started the open beta, so feel free to download the app and play with it! Since we’re in the so called fitness world you might be wondering what am I’m doing with my free time or whether I have any? Well, actually I do (plus I have at least one workout per day) and if you’d like to find out more about my lifestyle, take a look at this post that I’ve written on my another blog.
I guess that I’ve forgotten to mention that I have a regular job (40 hours per week in the office). I’m one of the co-founders of the Noordwind which is a self managing organization. As you can see all this open source stuff is just something that I do after hours.
To sum up – if you have the idea (or have none at the moment but would like to do something related to the open source) just go for it! There’s a great chance that you will love doing so just like I did, although these few months ago I’d never say such bold words. What else there’s to add? Well, maybe that I wished that the day had more than 24 hours, so I could contribute more to the community.