witness roadmap (potentially) for @jesta in 2018
Being that January has come to an end, I wanted to take a bit today to write and explain where my head is at for 2018 and a bit of a recap on 2017. Man, what a crazy year for crypto overall!
Please note - none of what I'm about to say is set in stone, I welcome suggestions and discussion, and am happy to change my point of view if/when needed. I make a lot of assumptions throughout this post and you're free to call me out on them.
Looking back at 2017
To kick things off, I figured it'd be wise to look back at what 2017 was for me. In my 20 years of web development, I don't think I've ever created so many functional prototypes and products all within in a single year.
- Vessel: Desktop wallet for Steem
- chainBB: Forum interface for Steem
- opBuilder: Transaction/Operation Builder
- Steem Rewards History: python CSV exporter for accounting
- Block Explorers: multiple blockchains, including Steem, Peerplays, Karma, Muse, Golos, Decent
- Setup of dozens of RPC, seed and witness nodes
- Powerbot (discontinued)
- ICO Bot (Experiment, discontinued)
- Steem Wallet API (in progress)
The year before (2016) also included SteemDB, Reprint (aka SteemPress), SteemStats, and a handful of witness scripts.
The point of this isn't to brag or beg for witness votes, it's to illustrate something I felt through most of 2017: I am spreading myself too thin.
A common saying I've constantly been thinking about in 2017 is "do one thing, and do it well", which I haven't been living by at all. I've been doing a ton of things, all that Steem arguably needs, but they've all been done with varying levels of "completeness" and there isn't a single one that's perfect.
I hope to change that this year and focusing on fewer, but more finished projects.
Prioritization with regards to other projects
When considering all of the projects I've started and all I'd like to do, I needed to take a moment and step back to consider what else is happening outside of my control in the larger ecosystem. In a very broad sense, what I see happening in 2018 (hopefully) is:
- More frontends and websites being built with the Steem blockchain
- Smart Media Token launch and some level of adoption within the year
- Improvements to the onboarding of new users into the ecosystem
- Technical improvements to the Steem blockchain software to assist with scaling
The development, progression, and adoption of many of these things are outside of my control as an independent developer. As a witness, I can push for these as priorities, but ultimately my only role as a witness is to approve proposed consensus changes via HF voting and to ensure the blockchain remains operational.
All of this should be accounted for when considering my own priorities.
Needs vs Wants
A lot of what I started in 2017 was things I "wanted" to see within the Steem ecosystem. To be completely honest, I don't think I knew exactly what Steem "needed" until I thoroughly explored every facet of the system. A lot of the projects I started, while awesome, aren't really what we "need" at this point of the Steem life cycle.
I think I have a better grasp on these "needs" today than I ever have before. It's a matter of analyzing the difference between "needs" and "wants", both personally and for the community.
Considering that, and considering I'd like to focus harder on fewer projects, I need to make some tough decisions about what to continue with and what to slow down on. I think I have a pretty solid idea of what's what, and I'd like to know your opinions on the matter.
Here's a list of what I've worked on recently, separated into what I believe are the needs/wants of the Steem community:
- Vessel: A desktop wallet for users to stay safe and secure.
- SteemDB: A block explorer for users to reference blockchain data.
- opBuilder: An integration tool for other developers to build upon Steem.
- Wallet API: A secondary layer (besides the blockchain) for useful information within a wallet.
- chainBB: A forum interface
- Reprint: A wordpress replacement
- SteemStats: A fancy account dashboard
- Powerbot: A delegation bot
Personal Needs != Steem Needs
This is something I've come to realize in this process. A common theme in the projects I've classified as wants is that they were fulfilling personal needs (primarily in the form of income) and really aren't needs to the ecosystem as a whole. chainBB, Reprint, and Powerbot were all projects that generated revenue to help me sustain my work with the ultimate goal of setting up a business around them.
chainBB - an example of a breakdown in its needs
For the past 8 months I've worked countless hours building the chainBB.com engine. I still use it, it has some great features, but fundamentally there are still roadblocks standing in the way of its success.
To illustrate this, let's talk about one roadblock involving account security. Two of the features I've been promising for chainBB's next release are: custom moderation teams and custom beneficiary payout structures.
These two features require a higher level of security - much more security than a
posting key within Steem should be allowed to perform. You don't want an unauthorized user altering the payout structure of a forum you run, nor do you want this user to be able to change who's allowed to moderate its content.
For ultimate security, it's my belief that these operations need to be signed with an accounts
active key. The
active key shouldn't be entered on chainBB (or any website really) - which led me to develop the Steem custom protocol and integrate it with Vessel.
Projects like chainBB need Vessel to keep users safe.
For the past 3 months now I have been bouncing between chainBB and Vessel development, trying to unblock myself, and Vessel still isn't ready to support what chainBB needs. This unfortunately has caused chainBB to stall in development and leaving me needing to rethink many things about Vessel. A simple analogy to the situation would be that I'm having to build the highway before I can ship any products, and building highways takes time.
This isn't the only roadblock either, with others including aspects of account creation, beneficiaries, and the actual content organization itself.
The 3 projects of greatest importance
With all of the above considered, I believe I have 3 projects that really stand out as important to the ecosystem, and they really need more attention to be the best they can be:
- A desktop wallet (Vessel 2.0): an app users can download to secure their account
- A block explorer (SteemDB 2.0): an app users can use to reference blockchain data
- A dedicated API backend (SteemDB 2.0 API): an api that anyone can host, providing data to both the block explorer and the desktop wallet.
This trio isn't a new concept and I've taken a lot of inspiration from what BitPay has done for Bitcoin. You can see this same setup within their products:
- Copay/Bitpay - A desktop/mobile wallet
- Insight - Bitcoin based block explorer
- Bitcore - wallet services - API backend
Their API backend powers both their block explorer and wallet, the wallet references the block explorer, and the block explorer can be used to trigger the wallet.
Why version 2.0?
In retrospect, the way that both SteemDB and Vessel were built wasn't optimal.
Vessel at its core has some fundamental issues in how accounts are stored, the way electron is configured, and the way the interface is setup. Features were continuously added to support features with little regard to its entire UX and its gotten somewhat messy. Now consider multiplying those features with the introduction of SMTs and it gets crazy. I have been thinking about a version 2 of Vessel for some time now exploring newer software and better user flows. These all will be easier from the ground up, as opposed to reworking existing code.
SteemDB falls into the same category and is growing exponentially right now, making it hard to scale. Beyond scaling, the way SteemDB was setup was for a single token ecosystem (STEEM/VESTS/SBD), and adding the concept of SMTs to it would currently be a nightmare. A new data structure is needed. I'd also really like to move from Phalcon/PHP to Python API's and a ReactJS frontend. SteemDB was my 2nd(?) project for Steem and started in 2016, and was absolutely a "learning" project for my understanding of the Steem blockchain.
Both of these projects deserve to be more.
Regarding other projects (revisited)
Earlier in this post I mentioned 4 bullet points, 3 of which I'll reiterate here. Each of these needs wallet and block explorer support to really maximize their potential.
- More Steem frontends/websites: As more websites integrate STEEM and/or SMTs, a wallet will be needed so you don't have to trust these websites. These websites may also need to point to external data sources for "more information", which is where a block explorer comes in.
- Smart Media Tokens: As new SMTs are created, we will need a block explorer capable of viewing the details of each token. We also will need a wallet for managing SMTs and keeping them secure.
- Ease of onboarding of new users: Users need an external source of truth and a way to research the blockchain itself, via a block explorer. Those with significant investments will also need a wallet to protect their account.
Currently, the existing versions of Vessel and SteemDB have no/limited support for these upcoming efforts.
So, a possible 2018 roadmap
The 2018 plans I have include some hard choices, but I'd like to share what I am considering so far. Below is a high level overview of what I'd like to accomplish this year:
- Development of a V1 API platform/backend for use in the wallet and explorer.
- Development of a V2 desktop wallet for Steem/SMTs (and rebranding).
- Development of a V2 block explorer for Steem/SMTs.
It's a shorter list, much more focused, and while it's not "do one thing, and do it well", it's much closer to the principal since they're all components of a single platform.
I'll also likely have to do much more than just be a developer. I am planning on dusting off the skills I've long neglected for management and organization building, and am currently exploring the creation of a business entity, using witness rewards, in order to hire additional talent to push the envelope.
As a footnote - I am also planning to make all of these as platform/blockchain agnostic as possible, especially the API + Explorer combo. This is unrelated to my activities as a Steem witness, but an important aspect of the plan to hedge risks and encourage growth of other chains. Steem is obviously the most popular of all these other similar blockchains, but I believe building software to benefit the greater crypto community has a significant amount of merit and will go a long ways to improving inter-community relationships.
They should all be using Steem as their preferred social media anyways, right? :)
What does this mean for my other projects?
As much as I hate to say it, if I go through with this prioritization, they will be put on hold until further notice. This includes chainBB, steemstats, all existing v1 block explorers, and Vessel (1.0). This very likely isn't permanent (though it could be), because I'd rather be building community software (like chainBB).
chainBB itself will need further discussion, since it's in a more sticky situation (seeing as how it has paying customers). I can go two routes with how to respectfully shelf the project:
- Refund everyone what they paid for forums in the past and shut it down.
- Leave chainBB as is and allow the current system to operate as-is.
During this conversation and before a decision is made, I plan on reaching out to those users who have purchased forums to see what their opinions on the matter are. Hopefully some will see this news here.
I don't intend to screw anyone over, and the @chainbb account still has the funds required to refund everyone if I end up following through with this potential roadmap. I may have sold the SBD during the recent craze, but there's more than enough Steem to compensate everyone and repurchase any SBD needed.
Feedback - what do you think of this plan?
I started by stating this isn't set in stone, but I'd like to collect feedback so I can set plans into motion. What I need to do that though is feedback.
If you've followed along with this massive train of thought, I'd appreciate your thoughts.
Tell me what ideas you love and which are dumb, what's not entirely clear, how this could be improved, or what you'd rather see. I'm willing to consider all viewpoints here and I'll try to reward (with votes) those who participate in the discussion.
It's 4am now though - so I'm going to get some sleep before I chew through comments and engage in discussion.