It has been over a year since I started working on AlloyCI, but today is the one year anniversary from its first public release, and a lot has happened since then.
I would like to tell you more about the project, what motivated me to start it, and what has kept me going since. I would have hoped to release version 1.0 by now, but alas life had other plans. Keep on reading for more...
How everything started
I know I mentioned this on other posts about AlloyCI, but I want to state it again. I started the project as a learning exercise and as a challenge to myself. I heard so many good things about Elixir, but I was happy with Ruby, so I saw no real incentive for me to learn it. That was a mistake. Once you stop learning, you start going backwards as a developer.
The tipping point for me was when I left GitLab. I found myself with a lot of time on my hands while looking for a new job. It was the perfect time to learn something new. I picked up a few books on Elixir, and Phoenix, and started dipping my toes in the water.
After so many years working on just Ruby, Elixir felt familiar, but at the same time it felt like a breath of fresh air, something I hadn't felt since I started learning Ruby back in 2012. The feeling wasn't quite the same, though. Before Ruby I was using Java at university, and only Java, as classes were very much enterprise and industry focused. At that time, Ruby liberated me from the clutches of "enterprise grade" programming. It helped me see that actual joy could be had while developing software, that code could be beautiful, and it showed me a great and welcoming community.
So when I started learning Elixir, it wasn't like being in a dark tunnel for ages and finally seeing the light, like it was when going from Java to Ruby. It felt like going from watching a movie on a regular cinema to watching it in an IMAX theater with digital projection and Dolby Atmos surround sound. Both high quality experiences, but once you experience the latter, going to the former feels like going back to the stone age.
Once I started learning all the great things that Elixir, and the Erlang ecosystem have to offer, and not only that but the incredibly amazing, kind, and helpful community, I knew I had found something special, and that I made a mistake not diving into Elixir the minute I heard about it.
The project idea
If you've read AlloyCI's dev diaries (which I have neglected since the last one I wrote, I know) you know how the idea got started, but if you haven't, here is the gist of it. I wanted to build something bigger than the tutorial projects, and I wanted to see if I could create a worthwhile and hopefully long lasting open source project.
AlloyCI came out of that. I wanted to work on something a bit more complex, but also a bit familiar, so I chose a continuous integration system.
First couple of months
Initial development went pretty quickly and I was able to get a working prototype in a couple of weeks, but it took me almost 6 months to release the first public version, since that was the first MVP, where the basic CI system worked and it looked kind of nice.
Since then, new versions where released pretty often, around once a month for the next 9 months, until v0.7.0 which was released almost 3 months ago.
My motivation was high during that time, which meant coding was easy, even on times where I hit a snag, or things got difficult, that motivation kept me going. Even while I started to get frustrated with my day to day work, my drive to continue working on AlloyCI did not wither.
But motivation can be hard to maintain, and that is the situation in which I found myself at the beginning of the summer. My frustration grew larger, to the point where it started sucking all my will to write software. I needed a break.
Last couple of months
I needed a break from a lot of things, so I took the time. It is important to take care of oneself, so I decided to not pressure myself, distance myself from the project, and only do something if I really felt like it. This approach helped a lot.
In the time since the last release, and until a couple of weeks ago, I barely touched the code, and it was mostly to update dependencies, or Elixir versions.
I regained my motivation at the beginning of the month and started working on a new feature that was on the roadmap. It took me a while to get back in the rhythm, but it was awesome to be back.
I picked up the rhythm again, and noticed a lot of chores that needed to be done, in order to make developing AlloyCI easier, so I did them 😊
Things like adding
typespecs to public functions, refactoring modules, improving the way the build traces are saved, etc. I started having fun again.
Interest in CI/CD tools has picked up, specially now that Microsoft announced their entry with Azure Pipelines, so I think it's time to take AlloyCI more seriously, and not just as a hobby project. I would like to make it a worthwhile open source option for CI/CD, and for that I need v1.0 to be out sooner rather than later.
Which is why, with this post, I'd also like to announce the release of AlloyCI v0.8.0. A proper announcement post is coming later today or tomorrow with a detailed description of the changes, but you can already see what changed here: CHANGELOG.md
The next year
Getting to 1.0 is going to be a lot of work. There are a lot of features that are missing, specially surrounding administration, user management, permissions, etc., in short, almost everything that an organization will need to run AlloyCI as a serious development tool. It will take me the better part of the next year to get there, but I am hoping that someone awesome (maybe you) would jump in and help the project grow.
A long time has gone by since the last time I posted a dev diary. I have wanted to document most of the development process, so I will be writing these posts again. I have learned a lot this past year, and I want to share my knowledge with as much people as I can.
These are my goals for the second year of AlloyCI, I really hope I can meet them, and we will be reviewing them soon enough.
For me this year has been full of ups and downs, a couple of more downs than ups actually, but I know it will get better. I am setting goals for my personal and professional lives and also setting a very ambitious goal for this project. To me AlloyCI feels like my baby sometimes, and I know we both will grow stronger this year!
AlloyCI was released on September 13th because that is also my birthday. I released it as a present to myself, to show to myself that I could create something great, and to put myself out there. So happy birthday to AlloyCI 🎉 Thank you for this year! 🎉🎊