Here are some of the main things to highlight this week:
- Roadmap planning discussions have continued across the teams this week.
- The RFC process is being streamlined and kickstarted by @dgeddes.
- The SAFE Network: London meetup is taking place next week.
- The front-end team published an initial proposal on the Dev Forum for supporting the use cases around file sharing with URLs, i.e. sharing files without the need of publishing them under a public name.
- The PARSEC milestone 2 implementation is now ongoing. We merged @bart’s pull request that uses the proptest framework for PARSEC’s integration tests.
Planning has continued this week around the roadmap, releases and messaging. And, as you might imagine, digging deeper has led to us building out a number of different strands of possible activity across each of the areas. This is part of the reason behind the newly-announced search for resources in the form of a Marketing Strategist at HQ.
We’ve also been creating a video this week in which we run viewers through a graph visualisation that will illustrate the PARSEC consensus mechanism. The video should be released over the next couple of days and this visual approach is part of the broader push to raise the profile of certain SAFE Network components (PARSEC, Crust, etc.) so that others outside the project can benefit from the hard work we’ve put in over the years.
With all that has been going on recently, we’ve also identified that the use of the RFC process has tailed off in recent months. As a reminder, the RFC (Request For Comments) process is intended to provide a consistent way for managing how new feature requests are submitted, considered and, if agreed, implemented across the project. @dgeddes has picked up the work in this area over the past few days and we’ll be sharing further details with you on this very shortly.
Last call for any late signups for the SAFE Network: London meetup next Wednesday (29th August) when @dugcampbell and @pierrechevalier83 will be giving an introduction to the SAFE Network and diving into PARSEC in a little more depth. If you’re planning to come along, please confirm by next Tuesday at the latest so that we can let the venue have final numbers (and of course bring the right amount of swag!).
SAFE API & Apps
safe_app_java library slowly takes its form, we’re demonstrating cross-platform compatibility with the sample desktop application. We also have started scoping out tasks for the API documentation and getting started guides to help developers kickstart app development.
We developed a Xamarin.Forms mobile app demonstrating the authentication process flow and various Mutable Data operations on the mock and test networks using the MaidSafe.SafeApp NuGet package. A pull request is under review to add this app in the safe-getting-started-dotnet repo.
We continue our research in relation to how to expose APIs which can help app developers to store the data generated by apps in RDF format. We started triggering some discussions with the Solid community as we believe they can help us understand many of these concepts based on their experience with it. This will be an ongoing effort for the next few weeks, and we plan to share some more details of the APIs design once we feel comfortable with the approach, to gather feedback and ideas from everyone in the community.
During the last few months we were also trying to come up with a proposal for supporting the use cases around file sharing with URLs, i.e. sharing files without the need of publishing them under a public name, and we finally were able to start digging into it in more detail during the last few days. We are now working on some PoC code based on an initial proposal that we just published on the Dev Forum, and we expect to get feedback and ideas from as many of you as possible, probably based on the type of applications some of you are already planning to develop. In the next few days, we will be formalising this proposal in the form of an RFC, which we will be sharing, along with the functional PoC. We believe that sharing a PoC will help us all understand much better what’s possible and achievable with this proposal, as well as hopefully unveil what use cases we may want to also support that we are currently not.
SAFE Client Libs
This week the Client Libs team, with help from @pierrechevalier83 and @jonhaggblad, has been working on updating our code to use the latest stable Rust compiler version 1.28 that was released recently. This is an important step for every project in the company because it should bring the ability to use
proptest, the testing framework which depends on the latest compiler features. It is currently being evaluated by the Routing team, starting with the first successful integration into the PARSEC test suite. We intend to eventually bring it into SAFE Client Libs and some of our other projects too: it should make our libraries even more robust and stable.
We have split our
ffi_utils crate into its own repo. As several of our crates outside of SAFE Client Libs now provide a foreign language interface (FFI), we didn’t see any need for
ffi_utils to remain part of SAFE Client Libs, especially since changes to
ffi_utils were requiring us to wait upwards of two hours for Continuous Integration. In addition to this, we are considering updating the license of
ffi_utils to be more permissive so that the wider Open Source community can utilize it for their Rust FFI needs.
This was another busy week for the Routing team.
We have been taking part in company-wide discussions about the features of the SAFE Network, both at launch and beyond. It is an exciting time to be at MaidSafe as the road in front of us is becoming more and more visible. The outcome of these discussions will be shared with you, the community, in the near future. Exciting times!
On the coding side, the PARSEC milestone 2 implementation is ongoing. We merged @bart’s pull request that uses the proptest framework for PARSEC’s integration tests.
This task required a compiler upgrade as proptest relies on features in the latest compiler. @jonhaggblad and @pierrechevalier83 used the opportunity to learn about the compiler update process and participate in a general update for all our crates.
In the meantime, @Fraser and @qi_ma tracked down a bug in our implementation of the common coin that caused rare failures in our integration tests with soak testing. We are looking forward to adding functional tests as part of milestone 2 so we can catch these kinds of issues faster. Fixing this single bug fixed two observed test failures: this one and that one.
With these high priority items sorted, we took some time to prioritise a few dozens of tasks so we can now dive fully into the implementation of milestone 2. This should keep us busy for the next little while and you will be able to follow our progress in our GitHub repo as we raise PRs for these.
We also had some very nice interactions with the community last week as @Andre_Gerome generously spent his time reviewing the PARSEC whitepaper. We have a couple of actions to follow up on these comments that will see the whitepaper being made clearer. Thanks again, @Andre_Gerome
There was also an interesting technical thread started by @Nigel about a recent blog post by Vitalik Buterin about Byzantine consensus. The conversation took a very interesting turn, including a noteworthy comment where @dirvine explains how Sybil attacks are handled in the SAFE Network.
Following up these positive interactions with the community, @pierrechevalier83 is looking forward to meeting more of you next Wednesday (29th August) with @dugcampbell and @SarahPentland at Rise for the SAFE Network London meetup. If you haven’t booked your spots yet, please make sure to do it before Tuesday as we will need to give a list of attendees 24h ahead of time to the venue. As a side effect to preparing his slides for this meetup, @pierrechevalier83 prepared a SAFE Network themed presentation template using remark.js. This allows to easily create a presentation using markdown while remaining true to our
safenetwork.tech branding. Feel free to use the template for your own presentations and to submit any pull requests if you can think of improvements
This week we fixed the Crust panics (crashes) in the compatibility layer and now we are able to proceed with further testing. As a final step, when all Crust specific tests pass, we run end-to-end tests on a test SAFE Network on DigitalOcean. If all such tests pass, we presume Crust hasn’t regressed. We have Node.js scripts to run such test networks in an automated way. Since encryption was introduced into Crust, its config has changed: now we need to specify the public keys of hard-coded contacts we want to bootstrap off. Hence, we’ve been also working on updating our test network deployment scripts to adapt to the latest Crust changes.