I started the Gopass project about a year ago to try to improve the state of UX for free software password managers. I chose Go as the implementation language, because it is safer than something like Python, yet simpler than C++ that is used in Qtpass, which seemed overly complex for my simple taste.
It has been great fun, and Go in many ways could be a good language for developing user interfaces. However, the state of UI libraries for Go is not really up for the challenge.
I evaluated many UI frameworks for use with go, and unfortunately, I came to more or less the same conclusion as John Novak did in 2016 - cross platform UI development is a complete trainwreck.
However, about a half year into the project, things stopped being so much fun, because it turned out nobody was actually maintaining the go-qml bindings. The last commit is two years old and not very exciting. Meanwhile, new features that I needed are not getting merged , and even worse, the project doesn’t even build with the last three major versions of Go. Fixing these issues requires major rethinking since it was based on doing very unsafe things.
For a while it seemed like the go-qml fork in limetext would be the way forward, but now even that seems unmaintained. Sigh. This state of affairs was not awesome for motivation, so I decided to try a new direction.
Rewrite in Rust
I have decided to try a new direction and instead rewrite the whole thing in Rust. Rust is in many ways a better choice for sensitive code, so this seems like a good idea anyway. But more importantly for me, there was a qml library that seemed to be based on a more solid foundation, the awkwardly named DOtherSide project, which is shared be tween many languages.
So far I have been pleasantly surprised by the language, it is much more powerful than Go, the libraries and documentation are high quality and the Cargo package manager is awesome. Borrow checks takes a while getting used to, but hey, it is a new language!
I am not yet at feature parity with GoPass, but it is getting there quickly. It does however do one thing that I never got working with Go, it actually builds on OSX! While I only run free software, this will surely excite many of my friends.
I of course don’t know if the maintenance situation for the GUI libraries in Rust will stay better than it is/was for Go, but I have at least some reason to belive it will be - since Rust is actively being used for developing GUI applications, most prominently of course the Servo browser. However, for me worknig in Rust is more fun an motivating!
There was also the matter of the name. GoPass is clearly not an awesome name, because there are dozens of projects named like this, I even got bug reports for the confusion. And if it is now moving to Rust the name makes zero sense.
After lots of thinking I have decided to rename the project to Ripasso, it has both R and Pass in it, and does not collide with anything I could find. Ripasso is Italian, and means revision, which seems appropriate, if you store your password-store folder in git.
It also happens to be one of my favourite types of wine, with a richer flavour reminiscent of Amarone, but not as expensive. With time, perhaps Ripasso can turn into a refined yet unexpensive password manager.
You can check out the current state here: github.com/cortex/ripasso PR:s and other help is extremely welcome!