SAFE Network Dev Update - March 26, 2020

Summary

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

  • We released Baby Fleming iteration 3 :tada: This update consists of a new version of the safe_vault binary (v0.23.0) which uses the new quic-p2p version that has been updated to use the latest version of the Quinn library.
  • We released new versions of the SAFE CLI (v0.11.0) and the Authenticator daemon (v0.0.7) which are compatible with the new safe_vault (v0.23.0) and use new versions of the SAFE Client Libs which try the bootstrap process multiple times before returning an error.
  • @jimcollinson posted candidate designs for some of the key user stories related to file permissions, data navigation, and publishing. See the SAFE Network App UX section below.

A note from the MaidSafe Foundation on the current Covid-19 pandemic

The MaidSafe Foundation – which is a registered Scottish charity – supports the teaching of Science, Technology, Engineering and Maths (STEM) as well as Art.

With the Covid-19 pandemic now closing schools in many parts of the world, you may be worried about keeping your children occupied and educated. To try and help you, we have put together some fun activities that have been compiled using STEM teaching guidelines here in the UK. The activities cover three age groups with two projects for each. As a guide, the Early level activities are for ages 3 to 5, the First level for ages 6 to 8 and the Second level for ages 9 to 11.

To receive your free resources, simply email info@maidsafe.foundation and we will send them to you. Your email address will not be shared with a third party and will be deleted after we send you the information.

We are also uploading pictures, videos and links to fun activities on Facebook.

You can also visit our website for more information about the charity and to see some of our past projects that may be of interest. There are also three free sample lessons from our STEM pack which can be accessed by clicking on the STEM tab.

We want to help you to keep your child/children occupied and educated during this time of uncertainty so please keep safe and well and hopefully you will all enjoy the activities.

Yours sincerely,
The MaidSafe Team

If you would like to donate to the MaidSafe Foundation, please follow the link below or use the QR code to access our PayPal account. All donations help us to support educational projects within schools and communities.

PayPal

Vaults Phase 2

Project plan

Today we are releasing the third iteration of Baby Fleming, aka Vaults Phase 2a :tada: We’ve updated quic-p2p to use the latest version of the Quinn library and updated all our crates to use the new quic-p2p version. Along with this update we have been doing some benchmarking of CLI commands against Baby Fleming. We observed that there were some failures at times when the Client (CLI in this case) is unable to bootstrap to the network. This may occur for a number of reasons such as packet loss, an interrupted network connection, etc. Returning an error as soon as this happens didn’t make sense so we have implemented a small feature in the SAFE Client libraries that tries the bootstrap process multiple times before returning an error. With this in place, we were able to benchmark CLI commands against baby fleming for 1000+ iterations. We have released new versions of the Vault and CLI binaries so give them a try and give us a shout for hugs and bugs.

How do I update to Baby Fleming iteration 3?
This update consists of a new version of the safe_vault binary (v0.23.0) as well as new versions of the SAFE CLI (v0.11.0) and the Authenticator daemon (v0.0.7).

If you have never used the CLI before then you can follow the guide here to download and run our install script.

If you have used the CLI before, then you should update it by running:
$ safe update

You should also then update the Authenticator daemon:
$ safe auth update

The simplest way to update/install the new version of safe_vault is to run:
$ safe vault install

All versions should now be up to date and you can run you own Baby Fleming network. Refer to the CLI User Guide for full instructions.

Known issue
You may experience intermittent AccessDenied failures, as logged here, when uploading data. We are aware of this and we are investigating.

When will MaidSafe be hosting a Shared Section?
Internal testing of the shared section has been promising, but there are some issues that we’d like to fix before we take this baby to the next level. You can expect to hear from us about this soon.

Note that when we create a Shared Section we will be taking down the current Shared Vault - data will not be transferred from the Shared Vault to the Shared Section.

SAFE API

Project plan

We’ve been fixing a couple of minor issues in safe-cli caused by our recent move to async, which introduced some conflicts with the self-update crate and related commands. Another minor issue we resolved was impacting the safe-nodejs API: failing to start safe-authd. We released a new version of this package (v0.10.0) which will allow us to have new releases of the Browser and SAFE Network App hopefully soon.

A minor refactor in the safe-api unit tests has also been made, which makes them cleaner by avoiding the use of unwrap and having them return errors instead. This is all thanks to a new feature of Rust that makes it possible for tests to return a Result.

The safe-api repo has also been adapted in order to update to the latest version of quinn (v0.6.0) which brought some breaking changes in its API, but also some simplifications we wanted to benefit from.

Today we released new versions of safe-cli (v0.11.0) and safe-authd (v0.0.7) which are compatible with the new safe_vault (v0.23.0), also released today. Please make sure to update your CLI and authd if you are planning to use this new version of safe_vault. Remember you can update the CLI with the safe update command, and also update authd with safe auth update command. Follow the instructions on the CLI User Guide if you have never installed the SAFE CLI and/or the Authenticator daemon on your system as yet.

As a consequence of discovering this safe-nodejs bug, and now with the power of Baby Fleming, we’ve been updating our Node.js tests to run against a local network. This in itself has also started a move to GitHub actions for the repo which should speed up builds and testing.

In parallel to all that, we already started with the first draft implementation of a Sequence data type API in safe-api, as well as with some basic CLI commands which will allow users to create and mutate content directly in a Sequence, e.g. safe seq put and safe seq append commands. This is in a very early stage and we don’t have more to share just yet, it’s our first steps into the implementation of the Sequence as a CRDT data type straight into our Baby Fleming codebase. We are focusing on an E2E approach for this, i.e. we plan to use the CLI and its integration tests to validate the implementation of the Sequence CRDT implementation in the vault. We’ll hopefully have more to share in a few days as we advance.

Finally, we’ve also been doing some refactor inside of SAFE Client Libs, having this week merged a pair of PRs removing parts of the old FFI functionality, which was heavily intertwined in the codebase, in favour of a clearer separation of concerns within safe-api itself, giving us code that bit cleaner and more accessible.

SAFE Network App UX

MVE Feature Status Tracker

User Experience and UI progressed on a number of fronts this week, as we progress through the nitty-gritty of file permissions, data navigation, and publishing.

As no doubt most of you will also be experiencing, this past couple of weeks have been somewhat challenging, and required a bit of adjustment, so I hope you’ll forgive the lack of a video explainer, and happy to digest candidate designs in a slightly more raw and unburnished form.

So here we are, some of the key user stories that have made their way down the pike. Give them a tap or a click and a download to peruse in full resolution:

Just In Time consent

Editing a Just In Time consent request

Uploading a file

Creating a new folder

Renaming a file or folder

Moving files and folders

Moving a file to a public folder

Publishing flow: Unique link only

Publishing flow: adding to an existing site

And there we go. As usual, we’d love to hear your thoughts, comments and not unduly harsh criticism. :smile:

SAFE Network App Development (desktop)

Project plan

With our fixed safe-nodejs API in tow, we’ve been finalising a long-standing PR for the SAFE Network App, which is full of minor changes and updated APIs. It also features a move to GitHub Actions for testing and building the codebase. There have been some config headaches there, but we’re very close to getting this in and being able to release a Baby Fleming compatible SAFE Network App!

SAFE Authenticator / SAFE Browser (mobile)

Authenticator Project Plan, Browser Project Plan

We are working on a couple of small improvements and bug fixes in both apps. We looked into an Authenticator bug which was causing the app to relaunch instead of resuming when authenticating an app. We have found a simple fix for the bug which we will implement and test.

In the mobile browser app, we are trying to improve the authentication experience by adding an authentication status button in the top navigation bar. We haven’t finalized all the states for this button and may add the no internet connection status as well. This will also allow the user to authenticate the mobile browser by simply clicking this status icon.

Not Authenticated

Authenticated

SAFE App C#

Project plan

This week we exposed a new FilesContainerRemovePath API from the safe-api. This API will allow devs to remove a file/path from an existing files container using the file’s XORURL. We also added some unit tests to ensure the proper working of this API.

Routing and quic-p2p

Routing Project Plan

This week we wrapped up a large refactoring task (split into several PRs: #2071, #2072, #2073 and #2075). This is “invisible” work in the sense that no new features were implemented, but it was still important to do. We removed quite a lot of non-essential complexity and technical debt that has accumulated over time. This resulted in simpler code which is good because simpler code is: easier to test, easier to debug, easier to audit for security vulnerabilities and finally easier to onboard new devs.

We are also moving along in our effort to improve the test suite with the aim of making us more confident in the code. We brainstormed some ideas and are in the process of writing up proof-of-concept implementations.

BLS - Distributed Key Generation

As mentioned in the last update, we are working on a PoC implementation of the DKG scheme. The team have been having discussions regarding some parts we were not clear on. This enabled us to clarify and resolve many issues. We are planning to include more tests within the PoC work to ensure it is achieving the aims that are targeted - a generic crate that will be used for attaining consensus without completely relying on PARSEC at all times.

Useful Links


Feel free to send us translations of this Dev Update and we’ll list them here:

As an open source project, we’re always looking for feedback, comments and community contributions - so don’t be shy, join in and let’s create the SAFE Network together :tada:

85 Likes

FFFFFFF ffffff fffffff ff fff ff first

Not easy with a stutter :wink:

24 Likes

Second one!!!
Ok!!!
Thanks

16 Likes

Third… after a very long time :grinning:.

15 Likes

This looks amazing so far, now to read!!!

17 Likes

Looks great!

16 Likes

Excellent I’ll play with all this later @lucky7

15 Likes

7th!!! now I go read… damn you @Southside… snuck in just while I was typing :stuck_out_tongue:

14 Likes

Thank you for the great update !! Keep rocking , and most of all stay safe and in good health! Best wishes from France everyone

14 Likes

@andyypants p You can sell but you can’t count :slight_smile:

4 Likes

maybe I should get those free grade 8 math exercises and elevate myself above most of the adult population :stuck_out_tongue:

Actually I thought the foundation was more about just educating university level students about computer science stuff. Should go scope our their website now that I have heard it might have learning opportunities that are not too far beyond my fundamental knowledge to benefit from.

2 Likes

He can you know …

4 Likes

Thanks so much to the entire team for all of your hard work!

10 Likes

yep foundation site is deff worth a gander! Actually turned out most of the projects were geared at children (although the consent one was obviously more for young adults.) Wheels are turning on if there could be some kind of project where kids learn about trading (albiet it pretend money not real pretend money like bitcoin)

3 Likes

Great update the baby is 3 already :partying_face:

9 Likes

In the UK? get out right now and at 20:00 shout bawl cheer rattle your pots and pans in support of the NHS workers

6 Likes

Woot!! :smile::tada:

This is absolutely fantastic!! What a way you have a positive impact at this time :smile:

As always, great to see the continued effort and focus on the UX front!

16 Likes

It’s really nice to see these Baby Fleming iterations and community testing coming. Good work Maidsafe team and you active community members! I’m waiting to join the ranks, it’s just a bit too demanding still.

I also like the sound of BLS-DKG and CRDT data types. I don’t pretend to understand much of that, but it sounds good to have parallel consensus mechanisms. Also sounds to me that it gives some flexibility for tweaking the system.

I just glimpsed some of the work @JimCollinson has been doing. I don’t have a chance to really go through it, but the attention to the detail and usability is really impressive.

It’s not just this update that is great, it’s the general boogie of finding new paths forward, and different streams coming together.

20 Likes

So Ted Trammel and Mr Burger are one and the same? The plot thickens. Must admit, I never saw that one coming.

5 Likes

Sounds like a heap of things happening. Intensity seems to be lifting too. Well done devs. Remember to have a stretch now and then

7 Likes