Ruby language evolution on a large scale (as observed from Ukraine)
Last Saturday, I published a new Ruby Evolution section on my Ruby Changes site.
Ruby Changes is a passion project of mine dedicated to describing and explaining how the Ruby programming language changes from version to version. I described how I came to the idea and what following it gave me in a series of posts in January:
- What you can learn by merely writing a programming language changelog
- Following the programming language evolution, and taking it personally
- Programming language evolution: with all that, we are still flying.
For a long time, I wanted to enrich version-by-version features lists with a bird-eye overview of how the language change with years, structured by topic. I believed it would be interesting not only for Rubyists but maybe for other programming language enthusiasts.
So, this year I started working on the “Evolution” changelog section and the accompanying blog post explaining why observing the language evolving matters and my views on that evolution.
This should’ve been that blog post. But alas, it isn’t.
* * *
My initial plan was to release the “Evolution” and the blogpost on February 24th, Ruby’s informal birthday. Due to some personal/work reasons, I didn’t finish it on time but still hoped to publish it that week—or, worst case, the next one. I haven’t imagined the real worst case, though.
On February 24th, 2022, the local war Russia led against Ukraine for eight years turned into a full-scale invasion. My home city was heavily shelled. I was abroad at the day and spent 50 hours on the road to get to my family (wife and three kids) hiding in the cellar.
Since then, a lot has happened to us. The war is still ongoing, and half of my family lives in another city. I am still in Kharkiv, and it is still shelled on an everyday basis. I divide my days between doing my regular job as a software architect (donating most of my salary to the army and refugees), volunteering to bring food to people, and trying to remember what I considered important when I had the luxury of peace.
I still identify as a Rubyist, almost as much as a Ukrainian. So this unfinished work on the “Evolution” document always was in the back of my head.
Finally, on the summer weekends, I got some spare time to complete the work.
Probably, the result is worth your attention. I definitely hope so, but it is hard to judge by myself: I am still struggling to remember why I considered it important. I am happy I finished and got rid of the “outstanding homework” feeling; that’s it.
* * *
That being said, I am in no mood for theoretical reminiscences planned as an accompanying article. (I still feel my #RubyFriends😍 have failed me with their indifference. And probably will feel that for a long time.)
While working on the changelog and looking into versions, years, and histories, I can’t not juxtapose what happened to the language I care about with my personal life and the life of my country.
I fell in love with Ruby in 2004. I studied it by a pirate copy of “Pickaxe book”—at that time, my salary was $80, and I didn’t even have a bank card to pay online. It was a big year in my life: I finished the university, and my first daughter was born. It was also a year of our first Maidan: a democratic revolution against old (post-Soviet and pro-Russian) elites. Achievements of the revolution later were hugely undermined by Russia’s never-ending colonialistic pressure.
2013 was the year when the first version of “modern” Ruby was released (2.0 and 2.1, adding keyword arguments, lazy enumerators, proper Unicode, etc.) It is also the year when the EuroMaidan started: the second pro-democratic and pro-European revolution (also anti-Soviet, anti-dictator, and anti-Russian), with both sides—people and old government-backed by The Empire—now fighting more fiercely.
At the beginning of the following year, Russia annexed Crimea and started the war on Eastern Ukraine, and the world just shrugged and wiped its ass with the Budapest memorandum.
In the second half of the 2010s, I worked on perfecting my understanding of Ruby and my writing on it and even made a (small) recognizability for myself while needing to keep in mind that the war is ongoing a mere 100 km from my home. That the beautiful Crimea is annexed with many of my friends from there losing their homes. That small miner town of Snizhne, where my father grew up and where my grandma is buried, a town of a few happy summers of my childhood, is occupied by Russians.
I had the chance to visit and speak at several international conferences. It had its ups and downs, moderate successes and unexpected disappointments, meeting awesome people and not always being able to interest them, acquiring some friends, and missing some opportunities. But in the background, I was constantly appalled at how small people knew and cared about our war: the imperialistic war being led in the middle of Europe based on blatant lies. (Not all, of course: I remember a taxi driver in Kenya who had a perfect understanding of the anti-colonialist struggle— But I also remember Europeans who considered all the “kerfuffle” just a small domestic turmoil, unreasonably overblown by media.)
In 2022, I became Ruby core committer, with an ambitious plan to rethink and modernize official language docs on the basis of my work on a Ruby Reference. For the first time in 18 years with the language, I felt my understanding of it coherent enough to want to shape it in the form of a book, which I have a name and a plan for: it should’ve been called “Ruby Intuitions” and the (semi-public via Substack) writing was planned to begin on June 1st.
Then, you know what happened.
* * *
Sometimes (quite frequently, honestly), I think now that I’d better spend my attention and energy of the last years on going into military or medical training or political activism. But I can’t change who I am: Ukrainian, and Rubyist.
I didn’t lose all hope to write that Ruby book and to work on a new and shiny Ruby Reference. They are just placed in my planner under the category “AFTER THE WAR.”
(Weirdly enough, I am still writing the other book I planned for the year: a post-apocalyptic road novel happening in 2003’s Crimea. You can follow it on Substack.)
But at least I published that Ruby Evolution thing; please enjoy!
I don’t do “impressive” photos of demolition in my district (there are plenty of opportunities). This old pine, though, is just next street, some 20 meters from my home. It was twice as tall before March shellings; you can see it’s top lying nearby.
Please proceed with your day.
PS: How can you help? Please donate to Ukraine, and call your government to increase the support. The quicker we win, the better for the world, you including.