I came through an article by Piotr Solnica, covering his thoughts about open-source financement, and I've got inspired to write this response for him.
DISCLAIMER: Please do not read this article in the mindset that I'm complaining. I'm pointing here my mistakes, the reality I've faced, but not to complain, but to improve! :)
My open-source reality.
I've first met Piotr around 2015 on one conferenece in Wrocław, where he presented the ROM.rb updates, and I was still kind of a junior-level ruby developer up then. I saw what hi did in this library and I was amazed. Shocked, and amazed.
The skills that were required to pull this thing together were on completely different level than anything I experienced so far, and this was when I started being interesting in Open-Source contributions.
At that point I didn't look for a ways to develop my personal, unique being as a Ruby developer. I rather looked for several people I admired and thought: "I want to be like these guys!". This obviously was not a way to go, but I needed some time to realise, that everybody is different - even if some thoughts, skills or opinions are common - and this is what makes all of us great!
Initial troubles with contribution.
I really wanted to contribute somewhere, but I was afraid. Afraid as I am not good enough. Piotr said in his aritcle, that
People think that Open Source is just this one big, global family.
And I completely agree on that. I thought that to be a part of it, you need something as a wildcard, or be famous already. Sounds crazy? Yeah, but it was like that for me. I really wondered how I can do my first contribution.
And then I've found it. During the work on my first big commercial project, I've discovered a bug in Doorkeeper. As one of my team member was one of the initial core authors of the library, it was much easier to verify that this is a bug, and he encouraged me to publish a fix, by adding a Pull Request directly to the library.
Unfortunatly, my PR was rejected, as after the current maintainers told it's a feature, not a bug, and there is a better way to do so.
There were no "thank you", though, not even an explanation where to go, or how to solve my problem. That was much more dissapointing, and it took me a while before I tried again.
My difficulties with sustainable Open-Source work
The issue number one I had since the beginning was that I needed to work full-time to support my family. When you work 8 hours, you sleep 8 hours, You have 2 hours for all the meals, there are 6 hours left in the day....
I wanted to share as much time as possible between my kids, lovely wife, and not forgetting about the time for myself. And at the same time, I wanted to work on online contributions, like blogging, open-source activity, online teaching...
That was not realistic for me.
So I reduced the full-time engagement as a developer to 75%. And things become a bit better, but I quickly realized the same things that Piotr mentioned in his article.
- I've thrown away 25% of my income just to make work for free for others to profit from it. Wish you all the best trying to explain that to your wife! :D
- Companies (mostly) were not interested in supporting anything until they could get profits from my traffic, network, or influence I made.
- It was much easier to get appreciation and support from personal passionates that I am really, really grateful and always will be.
Then github sponsors came alive, and I quickly checked, if is it only me, or are other people also struggle with financing their Open-Source work too?
Here is how things look in the mid of June 2021:
Sponsors status: solnic
Sponsors status: timriley
Sponsors status: jodosha
Sponsors status: bbatsov
I was surprised. And shocked again.
Developers ARE NOT marketers.
Of course there are people, that do better in self-promotion, or can create profitable, sustainable businesses around their open source work, like Andrzej Krzywda did wirh Arkency and Rails Event Store - this is admirable.
BUT, majority of developers are not good marketers. They are good developers. And it gets harder, where they are doing low-level, or backend stuff, that is not even seen by the 99% of population.
I saw it as not-fair, and not as I would like it to keep, and as I am really a 0-1 person, for whom either something works, or can be fixed, I started thinking on the solution.
First attempt - The Rails API course.
I've created and published Rails API Udemy course, which goal was to help people start writing the good API, and then build a community around it, to support them more.
I thought about writing some open-source projects around the course, where I can help my students with the initial contributions. I successfully put that together, by publishing jsonapi_-_errors_handler and jsom-pagination gems.
Also, I've published dozens articles around building Good API, that was really appreciated by students. At the same time, I was kind-off able to finance it from the Udemy course I've been selling.
BUT, the amount of work it'd cost me was crazy. As I keep track of my work, I'v ve spend over 1800 hours only on the course creation and maintanance.
This is ten months of the full-time employment!
How crazy it is? And I have only two open-source gems, used by dozens of people.
How it compares to Dry-rb, ROM-rb, or Hanami?
I still see a potencial in publishing more online courses in the near future, but due to my family situation I needed to hold-off with new big projects.
My second attempt - HanamiMastery
When I've worked on the Rails API course creation I needed to learn a lot. This actually forced my skills into the next-level of API development and software architecture.
I quickly realized, that Rails architecture is not enough even for API-Only scalable systems, and I've designed my own custom solution for this for my client, inspired by Dry-RB and Trailblazer solutions - Actually, using Dry-RB libraries under the hood.
But then Hanami 2.0-alpha2 had been announced and It appeared to be a solution for all arachitectural issues I've faced in all my teams so far.
The risk to switch
My client supported me fully, to test-out New Hanami for one of our microservices which I highly appreciate. At the end however, we've decided to not switch (at least) juts yet, due to 2 main factors:
- Small core-team - this is risky
- Not much resources to learn, transfer knowledge, educate the team.
- There would be too much slowdown - due to the fact, it's yet alpha.
I could not argue - and actually I was one of people advocating sticking with Rails for yet some time to minimalize the risk.
However, I really believe the Hanami is so greatly designed, it can become a new "go to" web framework for ruby apps and I really wanted it to succeed.
Here is where HanamiMastery'd been born.
HanamiMastery is born
I've went through the main issues we've faced, and realized, that this is not only a Hanami problem. This is Open-Source problem in general.
- The core team usually is too small, due to the lack of financial support.
- There are not too much resources to learn, because developers are busy in developing applications, not writing aritcles or video guides.
- It's yet alpha - because the team is too small, because there is not enough support, because there is not enough interest yet, because it's easier to go with already well-worn trails.
I'm not a person, who likes to wait on anything. When something does not work, I want to find a solution to fix it.
This is where I've got an idea to start solving all those issues.
The idea is simple. There are much better developers out there, working on Hanami every day to make it great - how can I help then in the most meaningful way? Start with guides.
- There are not too much resources and docs to learn new Hanami - so I'm creating a vlog, where I'm publishing Hanami related courses, guides, videos, articles, tutorials, and whatever you can think about.
- The core team is too small - SO I joined to the team, to help with preparing the guides and improving documentation. It's small, because people need to earn money for their lives. They usually cannot afford to work for free too much. SO I'm giving off at least of 10% of ALL income I'll make in any way, related to HanamiMastery, directly to support maintainers of libraries Hanami relies on, directly or indirectly.
Still, I put tremendous amount of effort to create content, publish it, maitian it, update it. I do it for free, because I like it. And I will do it more, the more time I'll be able to put into it.
So This is a start.
This is my attempt to change the world. For Hanami and Open-Source in General. I don't expect to be ever able to finance majority of great projects that should be supported, but If I'll inspire one person in any way, I'll be fulfilled.
Nowadays, working open-source is definitely a hard-thing to do. But I see a bright future ahead, and I'll do my best to bring it closer to all of us!