SAFE Network Dev Update - August 16, 2018


Here are some of the main things to highlight this week:

  • We’ve just started recruiting for a Marketing Strategist role, to be based at our Ayr HQ.
  • We’ve filled our Dev Ops vacancy based in Ayr. The new team member starts in September, more info in due course!
  • We have completed the foreign function interface for PARSEC which should make it available to the wider developer community. The pull request is currently being reviewed.
  • At the tail end of last week, most of the detailed speccing out for Parsec milestone-2 was completed, and corresponding tasks added to Jira. We’re all dying to get cracking with these, and we expect to be set loose on the code again very soon!
  • Andrew (@canndrew) is moving on from MaidSafe with his last day being tomorrow. Andrew is moving on so that he can spend more time working on his own personal projects. Andrew - thank you from everyone for your hard work and commitment here at MaidSafe and we would like to wish you all the best for the future.

Update on Planning

Over the past couple of weeks, all teams have been working consistently at defining the work that remains to be done before launching the SAFE Network. Inevitably that will raise the question - what is contained within the initial launch of the SAFE Network? Well, we’re pretty much there with this planning process and will be sharing these details with you all in the next few weeks. For context, we’ve had a couple of major wins over the last few months, not least of which is PARSEC, whose formal proofs provide us with a more quantifiable consensus mechanism to build upon. Please note that this does not mean that we are within a month or two of launching, nor at this stage will we be in a position to provide an estimated timeline. However, the inevitable result of these breakthroughs is that they have brought the launch date much closer, giving us the welcome job of refocusing the goals across each of the teams.


In addition to the planning work already mentioned, we’ve just started recruiting for a Marketing Strategist role, to be based at our Ayr HQ. This is a brand new role within the team and we’re ideally looking for an individual who is passionate and knowledgeable about autonomous networks, blockchain, distributed computing, decentralisation and cryptocurrencies. If you fall into that description and you’re local, please get in touch!

Finally, a quick reminder that the SAFE Network: London meetup kicks off once again at Rise on Wednesday 29th August - please sign up here to join the fun! The plan is to record the event but if you’re able to come along in person, it would be great to see a few of the faces who weren’t able to make it to SAFE DevCon back in April.

Recruitment/Annual leave

As you will note in this and previous updates, recruitment is still a focus. Just last week we filled our Dev Ops vacancy (Ayr based) and we have a number of others in process including the Marketing Strategist mentioned above. A full list of our open positions is available on our website. Recruitment is a focus not only because we are trying to increase our work capacity and development speed, but also to cover things like annual leave to give our team some well-earned downtime. During the course of September some teams will have limited or no coverage, specifically Crust will have no one available for around 2 weeks, while the web development team will see Lionel stepping in to cover Shankar, who is taking some time out to get married (congrats Shankar!).

User Experience

We continue working on user research for the core applications (Browser, Authenticator, Wallet and Vault). This involves understanding the needs of the user and defining how we best cater for these within each application.


The progress in safe_app_java has allowed us to piece together a sample desktop application to demonstrate the usage of the APIs exposed. After a bit of polishing and a few iterations of internal testing, we will be sharing this. In the coming weeks, our focus will be on documentation and developer guides to provide better developer experience.

We are continuously working to provide better documentation for the .NET developer community. We developed a .NET Framework desktop example app using the MaidSafe.SafeApp NuGet package (the pull request for this example app is currently being reviewed). A Xamarin.Forms app is under development, which will also be added to the safe-getting-started-dotnet repo. Both of these example apps will be used as reference in the .NET developer’s guide. We are also setting up CI for SafeAuthenticator to automate build and run tests for Android and iOS.

We’ve successfully chased down the intermittent UTF-8 error that was occurring on app authorisation in Peruse, thanks to some stellar detective work from both @nbaksalyar and @hunterlester. This was some FFI layer memory management stuff, which meant that ref was losing some objects references when garbage collection occurred (which happens intermittently, making this quite a thing to track down). Then it became a matter of ensuring that the reference was not cleaned up, more details can be seen in this discussion as well. This will be making its way into the next safe_app_nodejs release, and Peruse v0.7 release, along with some smaller tweaks we’ve been working on in the last few days, like regaining focus upon an authorisation request, plus some dependencies upgrades.

SAFE Client Libs

We have completed the foreign function interface for PARSEC which should make it available to the wider developer community. The pull request is currently being reviewed. We also have tried a new process for testing the FFI code, using tools like memory sanitizers. With that process in place, we are confident that we have no memory leaks and other similar bugs critical for libraries exposing FFI functions. We are considering using these tools with SAFE Client Libs, too, to verify that we always provide robust libraries.


This past week has seen the Routing team involved mainly in nailing down the specifications required before going live. This has involved several full-day meetings where we have discussed the various features required from the backend code at a very high level.

At the tail end of last week, most of the detailed speccing out for Parsec milestone-2 was completed, and corresponding tasks added to Jira. We’re all dying to get cracking with these, and we expect to be set loose on the code again very soon!

We also picked up some pull requests this week from external developers; two for Parsec (#59 and #61) and one for a lower-level library of ours called “LRU time cache” (#107). It’s always nice to get PRs from third-party devs, but particularly so when the PRs aren’t trivial, since it shows that another set of eyes has gone over the code in some detail.

Jon has also provided his first PR for MaidSafe - this one for SAFE crypto. It’s gone through one review and just needs to get a second approval before getting merged.


This week we’ve been polishing hole punching and working on some Crust bugs. First, we slightly updated netsim: configured Travis CI to run automated checks on netsim, changed the symmetric NAT port allocation strategy, which now is more realistic. Then in the p2p crate, we implemented a bunch of hole punching tests based on netsim: hole punching the symmetric, port restricted NAT using single rendezvous server, using multiple rendezvous servers, etc. - all sorts of variations.

The other thing that we focused this week was the Tokio upgrade. Tokio is the Rust networking framework and we’d like to keep the version we use up-to-date. Otherwise, in the future we won’t be able to integrate with the rest of the Rust networking ecosystem. Tokio is used in all our crates: p2p, tokio-utp, crust, netsim, etc. So it takes some time to upgrade it, but we’ll get there :slight_smile:

We are still investigating Crust panics in the compatibility layer. It took us quite some time to run a test network locally that reproduces these panics. As a result, we have Python scripts that can run multiple vaults inside Docker containers and connect them together. These scripts make our debugging cycle a lot faster and now we can finally focus on the panics :slight_smile:

Andrew says goodbye

At the end of this week, I’ll be leaving MaidSafe. I’ve enjoyed my time here immensely and I feel lucky to have had the privilege of working with some great people, however the time has come for me to focus on my own personal projects for a while. I hope that MaidSafe succeeds in all its goals so that, in the future, everyone can have secure and private access to their data.


First !!! Step by step we are approaching the goal! Thank you for the hard work! Remember those at the top of the mountain didn’t fall there…


second… damn you are quick!!!


That sounds fantastics !


Sounds soooo hot!!! There will be this tiny curious voice screaming inside my head for all those weeks. Have mercy!


5th… Ha


All the best! Thanx for all the hard work.


Very sad news. Wish you all the best. You are living legend!


Just looking at that list shows why it takes time get this stuff right. For non-coders like me, the tendency is to think 'they’ve solved the tricky maths so why is it taking so long to write the code?" but there are so many permutations and combinations that have to be considered before you even get started. I’ve heard before from coders that specification is 90% of the job and I can see why.

Likewise with that Peruse bug. It must be so frustrating trying to track down edge cases that are due to idiosyncrasies in the programming language. You guys have more patience than I ever will!

Good luck @canndrew - all the best with your projects.


Take care @canndrew crust and the community will miss you!

Congrats @Shankar!

Another great update. So cool others are digging the code now that the licensing has changed. I’m assuming that and awareness of PARSEC along with Dwebsummit drew in some extra eyes.


Does it mean we get a more detailed road map? :smiley:


:+1: :+1: Maidsafe devs,

Just my clueless consumer pov feedback. People hate change, because of this if I had the money, I would create a SAFE browser with auth,wallet and vault integrated into it (all in 1 instead of separate download). I would even be bold to create a new wallet for people, have 2gb storage reserve for farming and turn it on whenever the os starts.

It also helps to look at how is doing it

congrats Shankar :wedding:

Thanks for the hardwork super ant @canndrew, hope to see your projects on the SAFE Network



We hope so, we want it probably more than most :wink:


Thanks for all your hard work @canndrew!


Thanks for another great update team! Now don’t forget to take some well deserved holidays. Cheers


@canndrew, Thanks for your time and efforts on this most excellent project! Here’s hoping to seeing some of these personal projects on the SAFE Network! :slight_smile:


They say the devil is in the detail. It’s great that everyone can take a chunk of time to refocus on the remaining tasks. It’s a huge positive. Even so the road will be tough but we are with you guys all the way.


Great stuff guys. A question. How many milestones are there in A3. I may have missed it in earlier posts. Closer every week :blush:

1 Like

I love these weekly updates! Look forward to reading them every Thursday. I hope I am not bellyaching here and I don’t want to sound ungrateful to all those on the MaidSafe team responsible for the content, but if you could have an editor look over the copy before releasing to the forum, and ferret out the duplication and/or repetition it would make for an even better read. Just my two cents. No - one and a half cents.


I think what you’re referring to is the summary they include in the beginning. Which is nice to point out the main accomplishments for the week.