I just wanted to say a few things about our missing ‘official’ GUI wallet, and propose an idea that could help us find it.
I know that the approach members of the core team have taken toward GUI wallets is a bit of a sore point, and I completely understand this. Grin currently has usability problems, and having a nicely packaged ‘official’ GUI wallet that works on all platforms seems like a glaring omission that would go a long way toward addressing them.
GUI wallets are something that that I personally have been of two-minds about for just about the entire duration of this project. I’ve often thought that we should just bite the bullet and put one together. I even started an experimental one at one point just before launch, only to abandon it in favor of lower-level foundation work that seemed a bit more important at the time (and that I have more experience doing). But every time I’ve thought about it or floated the idea to other core members, I’ve always come back to the conclusion that this would be the wrong approach to take. This is even more true now than it has been in the past.
I like to think that the team is correct in taking a long-term view when it comes to proritising very limited resources, and the fact of the matter is that none of the core developers believe that creating an ‘official GUI’ wallet is the best use of their time or strengths at present. With the last of our two hard forks coming up fast, most of the developers would prefer to focus on important long-term architecture and protocol work.
So why not employ some of the fund to outsource it? I don’t personally believe it’s that simple. GUI projects (or indeed any project with a heavy design element) require a lot of ongoing feedback and management, and the design requires just as much ongoing maintenance work as any code. The effort and skills required to maintain an official GUI wallet are just as large a consideration as creating one in the first place, (if not larger).
This is not to say that I don’t think it’s important for the community to have easy-to-use, reliable wallets. As a matter of fact, I think that usability is currently Grin’s biggest problem. If you’ve followed the work I’ve been doing since launch, a lot of my time has been taken up with creating a set of APIs that enable downstream developers to create their own wallets and experiment with their own solutions to transaction-exchange challenges. There is also plenty of effort underway to standardize on formats and protocols before our last scheduled hard forks. Though I know it can seem frustratingly slow, the current approach is that the core team would prefer to continue to focus on what it can do best while also providing and supporting APIs and Infrastructure to make it easier for other developers to do the stuff we’re not great at.
And thus far, this strategy appears to be at least partially working, with the existence of several solid GUI wallets testifying to that. Niffler pretty much embodies the vision of a cross-platform GUI wallet that makes full use of the wallet APIs we’ve provided. Ironbelly has done all sorts of work to make the Grin wallet libraries usable on mobile. Grin++ has provided an all-in-one solution that uses its own architecture but is no less valid as a wallet that should be acceptable for use by the community.
However, I can completely understand that having no ‘official’ Grin GUI wallet is frustrating and confusing. Despite the presence of several very good wallets, the team thus far been very reluctant to fully endorse any of these community efforts. There are many reasons for this; a desire to remain impartial and fair, not wanting to discourage new approaches, and particularly issues around security and liability.
But however we got here, the end result is that we’re in a catch-22 situation whereby GUI wallets exist but it’s unclear to many, (particularly to newcomers) whether they’re endorsed or considered safe to use because they’re not ‘official’.
So I’d like to float an idea to address this:
If we had a process via which a particular wallet implementation could become “Approved by the Grin Community” (as is done with certain Monero wallets,) they could then be prominently listed alongside all of the other materials as fully endorsed by the community for use. In order to reach this status, the wallet would need to meet a set of criteria meant to strike a balance between security and inclusiveness. We’d need to sit down and think about what the exact criteria are, but they might be something like:
- Must be 100% open source and use open source libs
- Must adhere to all Grin RFCs and standards
- Must be kept up to date with the latest Grin releases (within reasonable timeframes)
- Must have a mutual disclosure agreement with the Grin project
- Any non-standard features or custom protocols must be clearly labelled as such and ‘use at your own risk’
- Somewhat community audited… and I’m not talking about exhaustive expensive audits, just that there have been enough community eyeballs on the code to determine nothing obviously malicious is going on (this one will be hard to get exactly right)
This list is not meant to be exhaustive or final, but the main point is that the criteria should not be onerous, be relatively easy-to-follow and should aim to not exclude any good-faith projects from meeting them. There is still quite a bit of thinking (for @joltz in particular) as to a set of criteria that can strike the best balance, but I’m fairly sure it’s doable.
This would hopefully get us where we need to be with GUI wallet availability without duplicating efforts. Good GUI wallets exist that are already better than what an ‘official’ effort would come up with and can continue to be improved and refined, hopefully with the renewed focus that would come from them being as ‘official’ as they can be.
I’d also hope that this would encourage more people to apply their skills to these projects. Contributing to these wallets is just as worthy and helpful to the community as contributing to the main Grin project, and this would preserve the perception of this fact. For instance, someone with a bit of design skills could be directed to improve a particular Niffler screen (for instance,) as opposed to getting hit with the daunting task of “build us a GUI wallet”.
Interesting in hearing thoughts on this approach, particularly from the authors of such wallets and whether such a scheme would work for them.