Should I do a Ph.D.?
As I started blogging at the end of my journey as a doctoral student, the topic of how I selected the field and ultimately decided to enroll in the postgraduate studies never really came up. In the following paragraphs, I will give a personal perspective on my Ph.D. endeavor. Just like other perspectives from doctors of not that kind, it is specific to the person in the situation, but parts of it might apply more broadly.
Note that my motivation was largely intrinsic and there were few considerations in terms of monetary compensation. Therefore, I will not discuss whether getting a Ph.D. has made me richer than I would be if I hadn't embarked on it (it probably hasn't).
People tend to differ in intrinsic motivation quite a bit. To illustrate my point, my colleague Arian Skoki usually mentions how he enjoys transforming scientific results into papers and choosing the right words to describe the observed phenomena. While my track record demonstrates I don't hate writing papers, that isn't my primary driving force either.
So, what exactly was my intrinsic motivation?
Free and open-source software revolution
During the early days of Mozilla, I believed that free and open-source software is morally right and great in theory, but that it could never work in practice. I understood hobbyism and how open source can work in that domain, but it didn't extend to a belief that a sufficient number of people is ever going to volunteer their time and effort to create open-source software competitive with state-of-the-art proprietary software.
However, by 2000 and late milestone releases of Mozilla Application Suite, I started seriously questioning my assumption that open source could never work in practice. The product was far from perfect, but it was evolving at a rapid pace. By 2001 and Mozilla's 0.x releases, it became usable for day-to-day browsing and e-mail. Watching all these events unfold in real-time, I soon became a believer; I was certain that not only will we develop an open-source web browser and e-mail client that is better than the proprietary competition, but we will also develop an office suite, an operating system, and everything else. Free and open-source software will win and, to paraphrase Marc Andreessen, it will eat the world.
To put it another way, I saw the revolution that was happening, I understood why it was inevitable, and wanted to help by being an active participant in it. It was soon obvious that installing Linux distributions on people's personal computers, while useful, isn't the only thing we should do if we want free and open-source software to succeed. I went to study mathematics and informatics to learn how software is created and then apply this knowledge in furthering our cause.
Power of participation in the community
By the time I was close to finishing my diploma studies and deciding whether to do a Ph.D., I decided to start trying to contribute code to free and open-source software projects. Until then, I have only contributed translations, bug reports, website fixes, tutorials, and similar. As I was working with audio as a hobby quite a bit at that time, I sent a few patches to Advanced Linux Sound Architecture (ALSA). Previous involvement with kX Project surely helped.
This was interesting and I learned a lot in the process, but it was not sustainable. There was simply no way to get a job in Croatia at the time that would require even the basic knowledge of sound card driver development, let alone include submitting patches to the audio subsystem in the kernel.
It also did not use any of my knowledge in the field of mathematics, which I just invested four years into acquiring. There had to be some other approach to put my skills to better use.
Industry vs. academia
I figured very soon that the Croatian private sector was seldom involved in free and open-source software development, at least at the time. At best, you could get some web development work using open-source frameworks or system administration on Linux and KVM/QEMU. It sounded good enough for plan B, but I wanted to see if there was something even better than that.
I got the opportunity to start my academic career as a research and teaching assistant at University of Rijeka's Department of Informatics while obtaining a Ph.D. in computer science from FER at the University of Zagreb.
Compared to working in the private sector, I hoped there would be more freedom to do things however you like as long as you get them done properly. In the end, I would say that I got what I wanted. Quoting from the Thanks section of my Ph.D. thesis:
I am particularly grateful that [my supervisor Professor Branko Mikac] enabled me to solve scientific and engineering problems by using and further developing free and open-source software, which is a life passion of mine.
The further-developed software in question was, of course, the ns-3 network simulator. The members of the project that formed around the development of ns-3 are rightfully mentioned later in the same section:
Network simulator ns-3 has built an awesome community over the years. I want to thank everyone from the community who helped me in some way, but the list would be far too long, so here is a short one: Mathieu Lacage for describing trampoline objects (among others) and encouraging me to code what I need, Peter D. Barnes for all the design alternatives that were thrown away and never implemented (but taught me a lot about the software design), Tommaso Pecorella for that energetic midnight discussion in front of the hotel, Alina Quereilhac and Alex Afanasyev for fixing Waf with me, and last, but certainly not least, Tom Henderson for being the leader of an open organization and herding cats more often than not.
Open-source software already ate the world?
As years went by, I started to feel the shift in attitudes toward free and open-source software among my peers and my students alike.
This shift was reflected in the world more broadly. In 2013, Jim Whitehurst, then president and CEO of Red Hat, said that open source is "a viable alternative to proprietary software in a whole bunch of categories" and that "the next twenty years is no longer about being a viable alternative and it's about being the default choice for the next generation of IT infrastructure". However, only a year after that, we already had Ansible, Terraform, Docker, and Kubernetes and these tools were also popular enough to be considered the default choice.
By the time I finished my thesis in 2015, I felt that something major has changed and it would be great if such a transition can happen with other software, especially scientific software. While ns-3 was pretty advanced in terms of using best practices in software engineering, scientific software, in general, can be considered as lagging behind IT infrastructure software in that regard. Therefore, I figured it could use some help in fixing that.
I soon ended up working on computational chemistry software due to the University of Rijeka's Department of Biotechnology using it in drug design and related research and found myself enjoying being productive and finding many opportunities to apply what I learned previously. This especially came to fruition later, during my time in Prof. Dr. Frauke Gräter's Molecular Biomechanics group at Heidelberg Institute for Theoretical Studies. I published three journal papers, while making numerous contributions to Mesa, LLVM, CP2K, and, of course, GROMACS.
I also started regularly writing about what I was developing for popularization and activism purposes. Specifically, the best blog post I ever wrote, What is the price of open-source fear, uncertainty, and doubt?, is from the early months of my postdoc, inspired by the discussions at the 4th CPK2 Tutorial. Another great blog post, AMD and the open-source community are writing history, came out some months later.
Independence and final words
Looking back now, would I do it again? I surely would. There were certainly hard times and the way forward wasn't always clear, but I am very glad that things turned out the way they did. Along the way, I took many opportunities to work with great people on the topics that mattered while applying my skills in free and open-source software development.
Would I pursue the topic in the same field? Possibly, as there is still much work to be done in computational chemistry software and the exascale supercomputer architectures we use are still evolving and expanding.
Finally, what would I be doing if I wasn't doing what I am now? I love that question since it forces you to be creative and think about areas you are not that familiar with, which is a useful thought experiment. I would look into research topics around cryptography processors (such as Trusted Platform Module, Intel Management Engine, and AMD Platform Security Processor), possibly using coreboot. To give an example of the actual topic that comes to mind, perhaps I would aim for something similar to the Christian Werling's and Robert Buhren's CCC talk from several years ago, titled Dissecting the AMD Platform Security Processor. I found it very intriguing how many interesting things can be performed using common hardware and some specialized open-source software.