Witness Update – What I am doing as a witness lately
In the last days there were multiple posts that prompted me to write statements on what I am doing for Steem. So I wanted to make I quick post that summarizes what I am up to lately and in general. I am planning to do an updated witness introduction as mine is fairly old by now, but that takes polishing and time :)
My first patch to Steem itself
Yesterday I created my first Steem blockchain patch that involves C++ code changes and I am very optimistic about the future. It is still a long way till it gets merged and I can write an @utopian-io post about it, but the patch itself is done. So I want to give a little summary on what happened.
The RC system superceded the bandwidth system, so an issue was created to disable bandwidth and speed up replay time, as the calculations done there are unused. There was a quick patch that commented out critical parts of the bandwidth system and was merged. But the system was still there and a second issue was created to remove bandwidth completely from the code and at the same time, commenting out said code introduced a bug in multiple fairly used apis that crash with the new changes. In my investigation I found out that these apis were not tested at all, so I wrote unit test for them. I also removed the bandwidth code, but left the bandwidth apis intact, so that existing services can still query them. They now return static dummy values. I also marked all places where bandwidth is still used for the next person who might soon want to remove the apis completely.
In my SteemCommunity Initiative repository pull requests automatically get tested on all unit tests and code coverage is analyzed. That means that if coverage is at 50%, only half of the Steem code is even touched by automated tests. For such a critical system, one should strive to increase that number as high as possible. In my pull request I increased the overall coverage by 0.28%, which is quite a lot on such a big codebase. I covered 94.44% of my changes with unit tests. If every new change does this, coverage will slowly increase and when the next hard fork happens we have many automated tests that can find bugs. Here are some screenshots of our automated testing report tools on my pull request:
Utopian Open Source Radio Show
I have participated in the last show two weeks ago and will be there this time too. I will try to be a voice of the community and talk about how to improve after the problems from Hard Fork 20. I learned from what happened and have many ideas how to make sure that something like this does not happen on the next hardfork. I will talk about my SteemCommunity Initiative and my first Steem blockchain patch that involves C++ code changes and will try to get more developers interested in coding for Steem itself. If you have things you want me to talk about, questions or anything else, write me a comment. And follow @jedigeiss for the next announcement where they will collect questions that can be answered by the witnesses.
What I am doing for Steem
Lately there is more talk about what witnesses do, what their plans and vision is. And I am responding to such calls whenever I see them (please mention me if you want a guaranteed response). So today I will show two such responses that some may have missed:
The user @rishi556 wrote a great post that asks witnesses to answer 10 important questions and I wanted to put my responses to it in their own post. See the original here: https://steempeak.com/witness/@reggaemuffin/re-rishi556-question-for-witnesses-20181009t065504998z
Why did you decide to become a witness?
My reason for becoming a witness was to secure the network that I am building on. Steem needs witnesses that care, have reliable infrastructure and review new changes before they deploy them. A year and a half later, I am still reviewing code (and now actually coding for the Steem blockchain).
Have you made any contributions that have been accepted into the STEEM codebase? If so, what was it?
I have lately started the SteemCommunity Initiative to get more people to work on the Steem codebase itself. I submitted multiple small pull requests already but they are not yet reviewed. So without further ado I spend a good chunk of yesterday to do a bigger patch that removes some obsolete code. A blockchain developer commented out the old bandwidth code, but in doing so introduced bugs in multiple apis. So I went in and checked all parts that depend on this code. Then created tests for the part that broke (as before tests did not notice a failure) and removed the old bandwidth and all its references. This touched many files and I spend a lot of time compiling, testing and reading code. But it was worth it, as now Steem unit tests cover more code and replays are faster. I am currently waiting for reviewers and will probably clean up my code a bit today. (We need reviewers confident in C++, if you know them, send them my way)
HF20 started out with a ton of bugs. What do you plan on doing in order to make sure that we don't suffer a repeat of that?
I am actively working on fixing this issue with my SteemCommunity Initiative and with kicking off the discussion for Hard Fork Adoption Requirements. My current survey of Steem unit tests shows that not much code is actually tested properly and I think that is an area I want to improve upon. My newest pull request to Steem tests almost all code I touched and improves the overall testing coverage. That way with every new code added there will be more tests to it. This can definitely help in catching bugs automatically and will save a lot of time in development.
What have you done to promote the STEEM blockchain outside of the blockchain itself?
I have onboarded many friends so far, got my tax advisor to Steem and am always sharing relevant articles. I support promotion initiatives like the thunderclaps or the social media blast and am pitching Steem to investors. With BuildTeam, we offer businesses support in building on the Steem blockchain and are always on the lookout for cooperations. So far we have promoted Steem on billboards, liasoned with exchanges and important businesses and supported several ICOs in using Steem for their public voice. And I am open to expand on this whenever possible.
Communities have become a very big thing in the STEEM ecosystem recently. Have you done anything to promote communities and help them out?
I am helping many communities in all the ways I can. I started myself in the Whaleshares community and wanted to give back on the support I got there. I am a big supporter of the @googlyeyes community, I delegate 10k SP to @steemstem and support @utopian is much as I can (I once helped out as a moderator, but that was not my core skill). I am supporting the german (DACH) community and am generally available for all questions. My core rule is that if someone mentions me on discord or Steem, I will see it and respond. So if someone has a complicated witness question I am always there. I have always relayed critical information to communities, for example when the HF20 troubles happened, I supported the communities I participate in and gave them insights into what was going on which calmed many down. I am running my own curation guild which is following great authors form multiple communities and supports initiatives with upvotes and exposure.
Do you understand enough of the STEEM codebase and C++ to be able to tell what changes are being made when they are committed?
I would say yes! I was unsure in the beginning because I so far do not have a lot of experience with C++ and it is a language that is not very forgiving if one is not very proficient in it. But over the last years I learned many things from very proficient C++ coders at my university and when yesterday I tried myself in developing a patch, I was able to understand the concepts used in the code. That means I feel confident to review code that other people write. And with my SteemCommunity Initiative I plan to review all code the the steemit team develops again when merging it back to our fork. That way code is reviewed before it becomes a big blob of madness.
Have you developed anything for STEEM? It doesn't need to be software, a community that utilizes STEEM counts too.
I have developed many things so far. Did a few minor things like the whaleshares page or steeminvest back in the day. Then I started Minnowbooster as a goal to build a nice bot that is fair and easy to use. It evolved to me cofounding BuildTeam and overseeing development of Steemvoter, Quicksteem and many other apps. I helped other developers out with small patches and plant to expand on that when opportunities arise. But currently I am more focused on developing for the Steem blockchain itself.
Communication was a major problem for STEEMIT INC. Many people want the public to be able to read whats happening in the private witness channel that STEEMIT INC has created. What do you think about that?
I agree that communication was a problem. In my opinion it is getting better, but is still not at a point where I would say it is good. Regarding private witness channels, I think a good setup would be a read only channel where only dedicated witnesses (selected by the other witnesses) are allowed to write, as a means to reduce noise. There were many discussions around creating such a setup and it again comes to no one is doing it so in my opinion, if someone starts creating such a channel, then I would adopt it. There are merits for secret channels, for example in scenarios like a chain freeze, where information should not leak out, as it might put the chain at risk. But such events happen rarely and most decisions should happen in public forums. I am open to hearing all proposals that want to improve the situation. But that also requires mindful readers who don't scream conspiracy theory at every word said ;)
STEEMIT INC has done a major part of the development for the STEEM blockchain. Who should be doing more of the development for the blockchain, them or the witnesses? Or is it a shared responsibility where the witnesses do one part and STEEMIT INC does the rest?
I think that Steemit Inc. is doing a good job in developing the things they do. But I disagree with them being the only ones who should develop for steem. That would make it a single point of failure. I think we developers should work on the Steem code whenever we can and support Steemit Inc. and the community by implementing much wanted features ourselves. Not all witnesses code. Not all developers are witnesses. So I would say that witnesses should be able to test changes and have criteria as to what they want from a change. Developers should review changes and code themselves. And if someone is both a witness and blockchain developer, then that is twice as nice. The more people using a code, the more chance there is that bugs are spotted. And I think that if we move into a situation where there is put more focus on open source blockchain development then developers can work on Steem itself and be funded by @utopian-io. That would be my dream.
Why do you deserver to become the top witness?
Deserve is a hard word. That would reek entitlement. I check all the boxes I personally have for a top witness and think that being in the top20 is something that would be appropriate based on what I do for Steem. But I don't deserve anything. I have never tried to get much into the politics myself and rather have others witness my work and so far, I have many users who liked what I do for Steem and pitch me to their followers. Lately @taskmaster4450 wrote a really nice piece about why to vote me https://steempeak.com/busy/@taskmaster4450/witness-spotlight-reggaemuffin
I already said in my Hard Fork Adoption Requirements what I will do when I am a top20 witness and it is up to the voters to decide if that is something they consider worth voting for. I am grateful for every vote and happy to help everyone who needs me, just mention me if you have any questions.
There was another witness asking me to list all the things I did as a witness. Here is a cleaned up version of that, be reminded that it dates back a week and I am now already actively developing for the Blockchain:
- I set up my own steem development environment so I can produce my own patches to the Blockchain, also planning to write build instructions and teaching others to code for steem itself
- I reviewed as much as I could of hf20, before the fork happened I was just reviewing the mana bar implementation and might have discovered that voting power transition bug, but the code gods were not good to me that day
- during both chain freezes I was calming down communities, being in communication with users and ensuring that everyone knows what was up. I ensured my servers were working and helped other witnesses
- I worked together with SteemSTEM and Utopian-io (and was on their meetup) talking with people, shilling steem and helping the communities grow as much as I can
- I worked at Buildteam ensuring that our services were not impacted by the fork and worked on cooperations with other steem businesses that are not yet ready
- I made two small patches to steem that I will blog about once they are merged (utopian-io rules)
- I welcomed important actors onto steem and did outreach whenever I could
- wrote my thesis, which took quite a bit of time and which I submitted yesterday
- reworked some of my online presence so that I am available on more channels
- onboarded new users, being there for technical questions about steem, especially the internals and details of the inner working of the chain
- wrote posts about the fork, proposing improvements (and immediately implementing them myself), learning from the failures of the past
- being on the utopian-io msp waves open source radio show (I don't enjoy voice talk but wanted to give users some insight), I was the only witness that definitely said yes, all others joined spontaneously
- running a stable witness (as I should)
What my plans are
I am happy so far with my first patch to the Steem blockchain and plan to do more. I also want to get more developers to look at code and develop patches themselves. Many stated their interest but as always, actions speak louder than words. I hope that my first patch shows that it is possible in one day to get into Steem blockchain code and develop a medium sized patch. It is not that hard and I am happy to help everyone motivated to give it a go. Worst thing is you spend 8 hours learning C++ ;) Anyone interested ping me in The SteemDevs discord!
I will review all code that goes into Steem from now on and plan to write many tests for the blockchain. I will try to write posts about all of that so that my followers are informed about what I am doing. I know that I lack in posting regular and want to step up my game. So I am happy for every feedback I can get :)
All my other commitments still stand and I will continue to support the ecosystem around Steem where ever possible.