So I've been thinking recently a lot about a certain topic.
And I came to the conclusion that I would like to share my thoughts with you.
Because: what good are these thoughts stuck in my head, right?
Now, this post is a bit longer and if you're not interested to read it all, let me give you the TL;DR:
Steem code review takes very high-level c++ skills & experience. I don't have that. Most other witnesses don't have that as well. My idea: let's create a witness fund to pay highly skilled 3rd-party developers, reviewing the code for us.
So let me start with this first question:
Should Witnesses handle everything themselves or focus only on the own Skills & Strengths?
What do I mean with that?
Well. One of the biggest topics in the recent time is about code review as a witness; the ability to look through source code changes regarding Steem.
This comes out of the logical statement: a witness (block-producer) should know what code his nodes are running.
If witnesses deploy Steem code which is buggy - well, that's bad. That's really, really bad for Steem.
So that means a witness must be able to be very well experienced with the source code & development of Steem, right? right?
Should I review code?
I asked myself that question and the initial answer was yes.
So I set up my own testnet, ran a few test, played around with the code, but I quickly realized:
This is serious shit.
I might have become pretty good with Javascript & Web Development over the last year, build a lot of projects with it for Steem, but that kind of high-level c++ programming: that is something much different.
If someone who is working day and night with the blockchain for 3 years isn't able to find a specific bug, then me, a complete c++ amateur, has no chance in hell to find that bug.
And I asked myself a another few serious questions:
- Can I become a blockchain developer?
- Do I want to become one?
- And most importantly: does it make sense for me to invest roughly a year into becoming a good enough c++ developer, for my skills to be relevant for code-review?
My answer to this was actually quite clear: No, it doesn't make sense.
Even though it tingles in my hands thinking about what ideas I want to implement into Steem, as someone who wants to put rational thoughts over emotional ones: it will take too much time.
My goal is to create amazing dApps (like SteemMonsters). I've built some cool stuff already (https://therealwolf.me/projects), but I wasn't as efficient as I could be since I learned Web Development & Co. from scratch over the last year. And starting all over again for c++? Nah.
Which pretty much sums up to this:
I'm able to give as much value as possible to Steem when focusing on my skills & strengths.
If not me - what's the alternative?
Since I've cleared up that I'm not able to do the code-review myself - who does it then?
Well, keep in mind that this somebody has to be very, very experienced with c++, otherwise, it won't make much sense (as I explained above)
So what I could do is to hire somebody who does the code-review for me. But at my current stadium of backup witness ranking - over 70% of my earnings are going directly into Hardware Costs.
And if you didn't know already - good developers are very expensive.
Now, don't get me wrong. If it comes to this, I will do it - I will hire somebody. But what if there is a better way?
Witness Development Fund for Code-Review
Logically, every witness needs to be able to cover this code-review, at least depending on how high the witness standards & c++ skills are.
So what if we would create a fund, where every witness that wants to participate, can pay a certain percentage - let's say 5% of the daily producer rewards.
And out of this fund, we can hire multiple c++ contract developers who are looking through the code changes (have to get experienced with Steem first of course).
This way, witnesses could focus on what they're actually good at (running their servers and bringing value to Steem with their skills - whether that is development, community leading/building or something else).
What do you think?
As I wrote in the beginning, these are just my thoughts. But I honestly feel much better now since I wrote these lines down.
I believe it is my obligation as a witness to be completely transparent about what I can deliver and what not.
Now with that said:
Please let me know your thoughts - I'm looking at you, fellow witnesses. I honestly believe it's very important that we take this seriously.
Sincerely,
@therealwolf
PS: If you'd like, check out my shiny new site: https://therealwolf.me
If you believe that I'm of value for Steem, then please vote for me as witness. You can also set me as a proxy and I'll vote on great witnesses for you. You can learn more about me and my witness infrastructure on therealwolf.me.
This is an interesting idea, I would gladly support it.
We could accumulate the fund over time and then pay for 3rd party code review / audit before every hardfork or major semver release.
Exactly. That's the idea. If we have 2-3 or maybe even 4 or 5 (depending on the fund size) different highly skilled developers reviewing the code, we would have much better results than people trying to do it themselves. Now, if somebody is a skilled c++ developer and witness or has one in the team, then that's no problem at all. The witness simply isn't paying into the fund then.
I think this is a great idea but should be segregated from the rewards pool for funds. I liken it to the Treasury fund that the Dash protocol has which takes a portion of each mined block reward for efforts approved by masternodes. They typically use this for promotional efforts (which would not be a bad idea either) but the concept is that a portion of each block or reward pool distribution is set aside for the improvement of the blockchain.
The top 20 witnesses earn around $80K per annum. What exactly do we get for that money? A treasury model would be great, where users can vote on projects to be funded. The first could be code reviews.
I would like to see the steem blockchain become more professional and less a passion project for people in their spare time.
If anyone has followed me for long enough, they will know I believe steem could hit $1,000 a coin. I am good with Numbers and Finance. This is based on sound research, not empty hope.
But it could also go to ZERO! The quality of the blockchain is the lifeblood of this community. Competition is heating up and we need to stay ahead.
A fund for independent review of the code before deployment is a great idea @therealwolf. I am not a witness or a whale, but I would be happy to support such a project!
@kabir88
Two things. One, now I feel like I should have just dove straight into C++ instead of Javascript and Python.. Second, steemcreative is currently losing money when it comes to server costs. A fund seems like a great solution for those of us on the bottom.
How many do you think it would take? 2? 5?
I wouldn't say that per-se. Both have different areas of application. @Yabapmatt created Steem Monsters simply with JS. C++ is needed for pure blockchain development.
Steem needs blockchain developers for growth, but it also needs dApps. So pick your side and stick with it.
I understand how frustrating it is to lose money with the server, but that's not what the fund is for. And I want to be very clear on that: the idea for the fund is to hire highly skilled developers who should review the code. (for example in preparation of HFs or bigger updates)
No, I get you, I know it's not to supplement. Apologies if that's how it came across. Agree that it's a good idea to hire third party devs of the witnesses choosing to review code
That is a great idea! I am all for worker proposals and such funds.
Utopian io has mentioned that they would also be interested in supporting Blockchain development and testing.
I am now reviewing all code and feel confident to do my part. And would be happy to support dedicated development paid by the witnesses. We already have the SteemCommunity organization we can put to use for such things.
The problem is not mastering c++. That`s the easy part. The real difficulty behind steemd is understanding the architecture and how all classes/data estructures/functions fit together. There is a few people I know who really understands in detail the critical components of our block producing software to a level of being able to do proper debuging and/or improvements. But generally speaking, we would support as witness such an iniciative if a supermajority of top witness also support it and if we are able to find willing candidates and a way to lead their activities to produce code-changes in line with the pre-agreed consensus.
Thanks for all you do and all the other hard working witnesses putting in time and money to keep things going. B e w e l l bro.
Posted using Partiko Android
Hell, the more I think about it, the better this idea sounds. I would be willing to throw 5 Steem per week into a fund for this.
We clearly need better code review, considering what happened with HF20.
Dont fk around. Get the best people for the job and find a way to fund them as cheaply as possible. id contribute if that's what best for STEEM. Just my thought on business. (i probably should take my own advice lol)
Although I just released pywit 1.0, it was actually my first python project I got into because conductor was behind hf20 (and no offense but I hate JS). I got into steem though because I'm working for a company building it's own crypto (along with everything else at this point, pre-funding), I'm somehow lead on block chain, and when we went through options we thought steem looked great because of no tx fees, high throughput, dpos, etc. Then we looked at the codebase, and went straight for it because it's all C++! My strongest language, first I learned C then C++ and it's influenced my views a lot (see js comment). Definitely can get hairy if you're not too good with C, although I didn't know boost when I started out working on it. I'd definitely be interested in both setting up a fund and being a reviewer if possible. Hats off to you for knowing where your strengths lie though, your dApps are awesome!
Posted using Partiko Android
Great idea.
Posted using Partiko Android
I appreciate the sincerity with which you have written this publication.
Hopefully, the other witnesses will support this magnificent initiative because if we had done it before we would not have gone through what happened after the hf.
Hello, @therealwolf
I agree with your opinion. If so, is there anyone who can actually review steem's code? It is very difficult, as you know. Or I think we should spend a lot of money.
Even if we spend a lot of money, we may not get good results.
Once the code review is available and the remuneration is agreed (internally), we will be able to review this issue again.