Why I'm leaving Open Source

Hi everyone,

It is pretty hard to preface this. Open Source has been such a big part of my life for a long time. I have been working on Open Source projects, since I was 12 years old, and it used to be such a huge part of my day. I got home after a long day, then I proceeded spend several hours to work at projects, that fascinated me. The real bulk of my Open Source work, however, happened when I started writing in Rust in 2013. I was immediately obsessed with the language. I think what attracted me was the idea of uncompromised focus on good design and correctness. I felt a sense of perfection in the language that I didn't feel for other languages. There was something aesthetically pleasing in a language that seemed to fix the things, that annoyed me with most other languages.

In 2015, I wanted to make a new project (I can't recall what it was, probably a library of some kind), and was searching for a name. I thought "Redox" was a pretty clever and fitting name, given that "Rust" is a form of oxidation, but it turned out I was not the first to get this idea for a name. I discovered Redox OS, at the time while Jeremy Soller was still singlehandedly working on it. I quickly became involved and continued working on it in the subsequent years. However, things have changed.

I have been inactive in the development of Redox OS and Open Source in general for almost a year. I am hereby announcing that I will not be returning, as I promised to do eventually. I will discuss why and also discuss various practical things relating to continued maintenance of my projects.

There is a couple of reasons for my choice. My main reason is that I have chosen to pursue a career in mathematics research. This is an extremely tough field and with this decision, I have no way of continuing my involvement in these very time consuming projects. I do not have even a hour to spend a week. And it is simply unrealistic to think that the situation will get any better; I will continue to put all my time and energy into this path.

The choice is partially a result of my style. I was and still am too ambitious with my projects. I want everything to be perfect, well-documented, and rigidly correct. This is not viable. Truth is, I didn't get enough things done. In the later days, my main project was TFS, but matter of the fact is I never accomplished anything with it. It is vaporware -- possibly among the most well-documented and well-designed pieces of vaporware out there, but it is what it is, vaporware. I wanted perfection and was unwilling to make compromises to produce results, meaning that what is left is just a bunch of very robust libraries. In terms of the project goal itself (being a state of the art file system!), nothing was ever achieved.

The same is true for my RFCs and design work on the Rust language: I was more concerned with theoretical properties and correctness than viability and practicality. Rust is not a research project anymore; it is a real and usable language, and I, more often than not, failed to reflect that in the language proposals. Take for example the pi-type RFC: A lot of people seemed very excited about this lengthy, rather theoretical, language proposal. However, it never went anywhere, a consensus was never reached. The people on the core team, who know much more about the long term goals and subtleties in practical design of language features than I do, settled at "this is kind of cool, but maybe we should try something simpler." And looking back, I fully agree with them. The proposals were not aligned with the language goals. I was, as is recurring, too ambitious, thinking that I could reform the whole type system with all these new nice theoretical properties, many of which are more complicated than useful.

Here is a final example to illustrate my points: I spent several months in improving Redox's memory allocator (which I originally wrote and consider rather poor in terms of performance), creating and implementing a complicated allocation algorithm based on skip lists. In the end, I ran into some obscure bug, that I couldn't find, and after a month of trying to find the bug, I just gave up. My drive was not there: It was just not fun. My attention span is too short and my drive is too 'theoretical' to be a good open source contributor. So I just ended up moving to a new project after spending almost 7 months on this incomplete project. Instead, if I valued completing things, I would have implemented something existing, like the buddy system. But this just doesn't give me the satisfying feeling that I did Open Source for.

I truly admire the people at Redox OS and the broader Rust community, who actually completed things, even if they weren't perfect, even if some documentation was missing, or there were parts that were not perfectly designed or written. I am not one of those people. Perfectionism makes me a poor Open Source contributor.

The thing is, I am more of a mathematician than a programmer. I am more interested in correctness than practicality, and I don't feel the same satisfaction without correctness, and without any results, I am merely a child in a playground.

In conclusion, I don't think the time/contribution ratio actually pays off. I simply did too much useless, overambitious work, both for Redox and other projects. I sincerely apologize for such dumb obsessions on my part. I apologize for letting people down.

Now, I do not want my projects to die out. I have at least a dozen of libraries, that I feel have some value for the greater Rust and Redox ecosystem. I do not want these to simply fade away, and for this reason, I will be gradually transferring them to some of the very skilled people in the Rust community, who are interested in continuing the maintenance of these. Please contact me (DM /u/ticki_), if you have any interest in maintenance of any of the libraries or project, I have worked on.

I will continue my involvement with Redox in one way: I will continue to run the servers for the chat, as I still care for the project. I believe there is great potential in the project, and as long as I am financially able to make just a small contribution, I will do so.

I really hope well for the future of Redox OS and its contributors. I think it has great prospects. I had a lot of fun with the project, it marks a memorable time of my life; I was amazed from day one to this day. I want to see it succeed, but it will be without me on the development team. There are some very skilled and intelligent people working on the project, and I do not doubt, even for a second, that my decision to definitively halt my work on it will affect the project's future.

Best regards, Ticki.

Follow me on Twitter or Github.