Finally terminated

Two years after its original introduction, and following a year-long period of mostly stagnant development, I am officially discontinuing work on the Final Term project today.

In its relatively short lifetime, Final Term has drawn its share of attention. On GitHub, it is more popular than all other Vala projects combined and indeed seems to be the most popular desktop program running exclusively on Linux. It has been on the front page of Hacker News and the number one trending GitHub project back in 2013. It netted me an interview with Linux Magazine.

Since then, a lot has happened. A surprising number of users stepped forward to contribute code and feedback, creating new features, fleshing out infrastructure and fixing problems I couldn't have identified by myself in a hundred years. Engaging with community contributors has been a very motivating experience, and kept my own efforts alive for quite a while.

What happened?

Despite the wonderful input that has helped Final Term become what it is today, I have decided that the time has come for me to move on. There are two reasons for this; the first is personal, the second technological in nature.

The personal reason

You've heard it a thousand times before, but then it is the main reason why open source projects die: Final Term is a personal, private project, unaffiliated with and unsupported by any commercial entity or interest. As such, it is fueled by whatever spare time its contributors choose to invest in it. Since my spare time is limited, I have to focus it on whatever idea interests me the most, and Final Term is no longer that idea.

I wish there were more to say here, but there really isn't. The truth is dead simple: My heart is not in this project anymore, and that effectively means the project has come to an end unless someone else continues it. Which brings me to ...

The technological reason

This is actually the main reason, and has dramatically reduced my motivation to continue developing the project. Technological changes in the past two years have been mostly to Final Term's disadvantage: They both diminish its potential usefulness and make sustainable development using the existing platform very unlikely.

The biggest culprit is certainly Mx, a Clutter-based widget toolkit that much of Final Term's UI code relies on. Originally intended for corporate-backed megaprojects like MeeGo, Mx seemed like a rock-solid choice when Final Term was conceived. Today, things look quite different: Mx is dead, its last commit dating from 2013. Since Mx still has numerous bugs that affect Final Term, this bodes ill for future development, and there seems to be no obvious fix except rewriting everything on top of another (which?) framework.

At the same time, the programming world itself has been transformed in a way that calls into question nearly every technology choice behind Final Term.

A highly visible aspect of this transformation is the continuing advance of the Mac as the platform of choice for many professional software engineers. While I still do not feel OS X is as natural an environment for programming and server administration as Linux, it is becoming increasingly obvious that most professionals disagree. No one in their right mind would see OS X support as an afterthought when starting a project like Final Term today, and perhaps the idea was naive even back then, as desktop Linux adoption has (predictably) disappointed expectations once again. With Apple's proprietary platform diverging from Linux more and more, there appears to be no clean way to get Final Term to work on OS X, despite strong community interest and a brave attempt at a Homebrew build. As Final Term misses out on the ever-growing crowd of Mac-based developers, it becomes more and more a niche product instead of the mainstream product it was intended to be.

Other developers have since shown how to do multi-platform support properly. The advent of Electron/Atom Shell, backed by open source trendsetter GitHub, has been met with much enthusiasm as it promises (and delivers!) a clean, rapidly advancing web-based environment that works on Linux, OS X and even Windows with zero porting effort required. In this goal, it is arguably much more successful than previous attempts such as node-webkit, and convincingly demonstrates that web-based desktop software, performance and portability are not mutually exclusive. I fully expect to see an Electron-based terminal emulator emerge very soon, which is then bound to rapidly overtake Final Term in adoption, ease of development and number of contributors. It is now clear that TermKit, originally announced in 2011, was ahead of its time not only with its UI ideas but also with its choice of platform, and would no doubt quickly reach production-level maturity if released today as an Electron-based multi-platform application.

To summarize, Final Term has regrettably saddled some dead horses, and in doing so has missed a big train that has now left the station.

What's next?

Not much is left to salvage from Final Term's code base, but I do hope that the ideas behind the project will not all die with it. Context-aware terminal emulation has great potential to simplify common terminal tasks, and a break from at least some of the shackles imposed by decades-old text interfaces is long overdue. Traditional text shells are most likely here to stay for another 10-20 years before at last we can transition to TermKit-like terminals operating on structured data, but in the meanwhile, we should make sure those shells are presented and enhanced by modern graphical user interfaces rather than being stuck in the past forever.

That being said, I realize not all may agree with my reasons for giving up Final Term and some may wish to continue working on it. If that is the case, I am willing to officially hand over the project to anyone who brings enough commitment and experience to convince me that they can pull it off. Don't hesitate to contact me if you would like to become Final Term's official maintainer.

I am very grateful to the many people who have demonstrated their enthusiasm for Final Term in the past two years by constantly reminding me to work on the project, and especially to those who have chosen to advance the project with code contributions. It is my sincere hope that they will understand and accept my decision, and not feel that their work has been in vain.

Update: George Nachman, author of iTerm2, has informed me that some of Final Term's spirit might soon see new life in an upcoming version of iTerm2! (Note that while the ideas are similar, their implementation is not and Final Term's Termlets will likely not work in iTerm2). iTerm2 is certainly the most advanced terminal emulator available today and George's work has been the gold standard of text interfaces for years. It thrills me to know that the effort to integrate terminal and shell will not die with Final Term.

Cover image: Tom Thiel (Wikimedia Commons, CC-BY)