Successful [LUCIAP-2] ChockaBlock: open-sourcing and upgrade

Was this grant successful?


Have not voted

Authority Nodes Blockrock Mining Blockrock Mining Consensus Networks Consensus Networks CryptoLogic CryptoLogic DBGrow DBGrow Factom Inc Factom Inc Factomize Factomize PrestigeIT PrestigeIT Stamp-IT Stamp-IT

  • Total voters
    17
  • Poll closed .

Chappie

Factomize Bot
This is your grant tracking thread. Below, you will find information from your original grant.

Grant Proposal

ANO / Committee
Group: LUCIAP
FCT address: FA2UFABmvvckKCCTDEkArENKjD76VkgtVnm1ZhKF7Ep4bqjkgaFo
FCT: 2300

Total FCT Requested
2300

Start Date
2020-05-17

Completion Date
2020-06-30

Success Criteria
1. ChockaBlock is fully open-source and documentation is available for any reasonably skilled developers to be able to spawn up the ChockaBlock stack.
2. Addition of a few features mentioned previously to increase the usefulness of the tool.

Timelines and Milestones
The work will be spread over the course of 6 weeks, as I will work on it on my spare time.

Budget
2300 FCT covering the 3 points of the grant.
 

Chappie

Factomize Bot
@Paul Bernier @LUCIAP

Today is your grant start date! We look forward to regular updates from your team.

When you are ready for the final determination poll, first summarize the grant and self score then go to the thread tools dropdown at the top right and select "Create Final Determination Poll".
 
I have now made all ChockaBlock repositories public:

I wrote comprehensive README that should allow any developer to develop, build and deploy the ChockaBlock stack. Feel free to reach out to me if you encounter a problem.

I will be adding a few polishing, nice-to have features in the next weeks to complete this grant.
 
The previous update concludes this grant.

Here's a summary of what has been achieved:

1. Source code of both chockablock server/UI and chockagent is fully open-source:
2. I have added documentation to the repos so that 1. any developer can extend the software, 2. any person can deploy its own version of chockablock.
3. I have implemented the few minor features promised that improve overall usability of the tool. Note that I replaced the 'note attachment' feature mentioned in the initial thread by the addition of the agents reporting blockheight to the server. I did that because it's a more useful feature in my opinion (also nobody asked for the 'note attachment' feature, that was my own idea).

All the success criteria have been met and the deliverable are available, as such I deem this grant successful. Because it's relatively rare to have a grant deliver 100% of its promises 10 days ahead of its deadline while also providing regular updates, I will indulge 1 bonus point and will self assess this grant as a 7.

Feel free to ask any question during the voting period! Thanks.
 

Chappie

Factomize Bot
The final determination poll has been created, and will be open for 5 days. Use the following rubrik when scoring:

Exceptional (9.0 - 10.0) - Successful
Overachieved (7.0 - 8.9) - Successful
Achieved (5.0 - 6.9) - Successful
Underachieved (2.0 - 4.9) - Failure
Total Failure (0.0 - 1.9) - Failure
 
I was expecting Anton to come at me for tests, given the hard time I gave him for his grants 😄 The whole stack was tested a fair amount locally. I had some helped scripts for personal testing but those would be hard to turn into automated tests.
So there is indeed no UTs or ITs checked out in those repos, let's try to understand why and if there is opportunity for some relevant tests:
  • An important amount of ChockaBlock code is UI. Writing automated tests for UIs can notoriously painful and brittle, so the disproportion cost/benefit of UI testing is such that they are rarely done for projects the size and the scope of ChockaBlock. To add to the difficulty, I am not a frontend developer and not familiar with the required frameworks to do those tests.
  • Each invidivual component of the stack has little, if any, business logic, algorithm, or anything like that that would be easy and worth testing. Most of what the whole stack does is passing messages around and interacting with external services (read/write db, blockchain). So really the most relevant tests that should be done are some end to end testing across the whole stack, requiring to bring the stack up: the UI, a MongoDB instance, a grapgql server, a websocket server, a factomd instance, and then test that all of this works well together. This is no small fate (and one would probably need to deploy some infrastructure ). Again, it is a disproportionate effort to me compared to the ambition of the software.
  • That said your message prompted me to check if there is still some opportunity to test the few logic there is, and I can think of a few tests (for instance how the load is split between each agents...)
ChockaBlock remains an "internal" tool to the protocol, not meant to be used or deployed by the general public. Investing big amount time in automated end to end or UI testings seemed disproportionate to me relative to the scope. That said I will gladly add the few UTs that I mentioned above by the end of this weekend.
 
Last edited:
Well as you know tests are a vital part of any software product, including UIs and/or software with low algorithmic complexity. Internal or external project should not matter, unless it is a POC.

This product has a client server model and integrates with an external product. Tbh not something you want to develop without tests.
 
We can call it a PoC if you want. I will implement the unit tests I identified as reasonable. I will not implement the UI tests nor the end to end stack tests. For how many months have you worked on this CI/CD testing for the testnet? Quite a few I believe, and those represent a much easier endeavor than what I would have to do to set up an end to end testing of the ChockBlock stack. That gives you an idea of the effort and time that'd require. So I will stick with realistic expectations for this project.

I will update this thread with reference to the new tests tomorrow.
 
Last edited:
Good to hear.

Not sure what setting up CI/CD in-house infra has to do with stuff like creating actual tests, which could even be mocked and which doesn't need infra on a unit level. That you make tradeoffs on the level of testing is completely understandable

I guess I am a bit surprised to not see any tests when you bring something to the community as a vital open-source network load testing tool. Especially if you have seen the quality in Factom-js and words to Anton which quite clearly show you take your profession very seriously (as everyone should)
 

Chappie

Factomize Bot
The final determination poll has now closed. The final score is 7.19, with 16 total counted votes. The grant has been determined to be successful.
 
Top