Welcome to this week’s Dev update and as you will read, everything is absolutely moving in the right direction; significant progress continues to be made on Testnet 1 with some genuine eureka! moments. On the recruitment front we have had some very capable and interesting applicants. These people will boost productivity and quality in the codebase going forward. The MaidSafe family has grown again, specifically the QA team with a new addition starting this week - this will be very helpful - welcome aboard @benjaminbollen .
Without further ado, let’s proceed with this week’s update…
TestNet 1 – Network setup
During the week, a further re-run of V8 was carried out. This helped in spotting the problem from Nfs and bootstrap connection. V9 was up and running from Wednesday. This includes the process utilising a new defined bootstrap file. Also some fixes to Nfs and Routing regarding joining the network and bootstrap connection have been implemented. The connection success rate was then hugely boosted: among 200 droplets targeted, 21 droplets failed due to a hardware issue from the Digital Ocean side (now resolved), only 2 (both from the SIN location) were found to be failing to join due to our code. The failure rate is 1.1% (2 / (200 - 21)).
The established network kept stable until Thursday early morning, around 4:50am GMT. A surge across the network was observed, causing over 60% of the nodes to restart at almost the same time (within a 15 min period). About 25% of the nodes didn’t recover from the surge. The surge itself was probably from the Digital Ocean side, droplets may lose or suffer a high latency communication to others.
It is being investigated to ensure our code will be more robust in such a situation (which is great for emulating massive network outages).
TestNet 1 – Network Setup
Extended the functionality of the Local Network Controller (LNC) tool to allow connection to the SAFE testnet or any other network using appropriate configuration.
Bootstrap changes are now merged and are being tested on multiple platforms.
TestNet 1 – Issues
A bug related to connection establishment and nodes being stuck in negative health forever is now addressed by infinitely attempting bootstrapping. Also rUDP improvement will address connection establishment issue.
After three weeks of soak testing rUDP connection bootstrap the final cause of packet loss induced connection breakdown was found, and rUDP can now tolerate very large packet loss reliably.
Here is a graph of 675 iterations of rudp_performance_test which has taken the last 24 hours (Friday) with the CPU going at full belt, with the most recent code starting from build #481 and the previous generation code preceding that:
TestNet 0 – Continuous Integration
We have formalised how the tests are named and configured for all the libraries. The tests requiring an external network are now separated and can be run against either testnet or any other network. Next week we aim to have the nightly continuous integration suite run against the MaidSafe internal testnet.
Drive / Encrypt and resource management
Re-factor of self-encrypt and resource management continues. Drive re-design (Bjorn) is progressing. This will allow us to implement a filesystem API in Nfs that will in turn allow app developers direct filesystem access to the network as though it is a huge hard drive. A nice simple way to make almost any app a SAFE app. This is quite exciting.
The “next” branch from the API project is being updated in the “refactor” branch. These changes are mainly to remove the Templates that currently exist for Session types. We’ve switched the naming conventions to not refer to these as Sessions and instead have them as “Account”.
This should be more accurate since the packet retrieved from the network when authenticated not only holds any session info but also persistent data.
These changes do require us to have CI tests (on all three major desktop OS) validate the changes for a cycle before being ready to merge to master. Provided CI tests over the weekend run smoothly with the incoming changes, we should be able to get this example with its API project changes merged to master early next week.
The Visualiser has had a few updates over this week including a new status message layout to get rid of tooltips from Action indicators.
Also Angular’s ng-repeat used for vaults’ display in the Viewer / Timeline pages have been switched to a reactjs layout to allow better performance with long lists.
Reactjs integration in these sections have heavily reduced the number of angular-watchers present on a page, Firefox should now support the tool much better and not cause the “Script not responding” error.
Routing / Nfs and Common
Routing: Unified join and re-bootstrap methods, also work is ongoing templatizing Routing
a - Initial work on introducing type safety in routing
b - re-factored creating RPCs
Nfs: re-factored DataGetter::Get to be iterative similar to MaidNodeNfs::Get.
Common: Removed kMaxId from NodeId
Find our Roadmap here > https://github.com/maidsafe/MaidSafe/wiki/Roadmap
Thank you for taking time to keep up-to-date with our progress,
Ross (on behalf of the entire MaidSafe team).