Here are some of the main things to highlight this week:
- We’ve just released a new ‘Getting Started’ video. This is intended to be a quick and easy introduction for newcomers to help them get past a few of the common questions that are often posted on the Forum.
- @dugcampbell was a guest on the Future Tech Podcast.
- The Peruse browser code has finally been merged into the peruse branch of the MaidSafe repository, therefore from now on all the issues for Peruse shall be reported in this repository and any pull requests meant to be for the codebase maintained by MaidSafe shall be sent there.
- You can download Peruse v0.6.0 from here, where you can also see some known issues. This new version, while still a proof of concept, is heartily recommended for all devs as it features the future of the DOM APIs. Gone is the complexity of managing the handles, and you can now experiment with the safe-app-nodejs based API without having to build from source.
- This week we are releasing a new batch of SAFE Client Libs libraries:
safe_bindgen 0.5.0
,ffi_utils 0.5.0
,safe_core 0.30.0
,safe_app 0.7.0
, andsafe_authenticator 0.7.0
. This is a major release since January this year that comes with a lot of goodies, the highlight being the bindings generator. - Work has continued on the implementation of PARSEC and we’re very close to being able to start testing the protocol for real. The first cut of the algorithm is in our repository and there will doubtless be some issues which will be exposed and fixed as we implement the tests and example code, but progress on this is good.
Marketing
First up this week, we’ve just released a new ‘Getting Started’ video. This is intended to be a quick and easy introduction for newcomers to help them get past a few of the common questions that are often posted on the Forum. This will be updated regularly going forwards to reflect any changes that are rolled out across the Network.
The team has spent much of this week working with the UX/Front-end team in honing the content for the website and providing feedback on various designs (of which more below), in addition to working through a number of broader marketing planning sessions.
@dugcampbell was also a guest on the Future Tech Podcast and talked about the SAFE Network during an interview with Crypto Core Media.
Finally, a quick heads up to anyone based in Melbourne - @mav is organising a get together on Sat 23rd June - get in touch if you’re in that part of the world and fancy chatting about all things SAFE!
User Experience & Website Design
As it turns out, it’s true: the faster you go, the more time slows down. This barely-provable-in-a-lab theory now has solid anecdata to back it up:
This week the website team has managed to pack in a Newtonian physics busting task completion rate. @Shankar put in 15 hours on coding a pixel-perfect homepage before your coffee went cold—waved through a PR review almost undisturbed—before rolling on to the demands of responsification, to coin a word.
All this while @Shona and @JimCollinson somehow managed to complete a multitude of page layouts—everything from FAQs, to Safecoin, to the Roadmap—before even starting them.
What happens if you’re driving at the speed of light and you turn your headlights on? Nothing, if it isn’t logged in Jira.
And the great thing about moving this fast is that the designs mature quicker too; patterns emerge, the rhythm of a site starts to become apparent, and yet it all still feels fresh. It’s not ready for the wild just yet, but let me put it this way: by the time we’re finished, you’ll have aged but six weeks, while the website will be ready for high-school.
It’s been an Earth-week of hard work, high energy, and a bit more fun than strictly necessary. But then again, we’re reinventing the internet here folks, so it’s all relative.
SAFE Browser, Authenticator & API
The Peruse browser code has finally been merged into the peruse branch of the MaidSafe repository, therefore from now on all the issues for Peruse shall be reported in this repository and any pull requests meant to be for the codebase maintained by MaidSafe shall be sent there.
During the last week, we were internally testing Peruse, and fixing a few issues we discovered during that process. Today, we are making available a packaged (non-official) version of the latest code available in GitHub. We still have to migrate our CI and automated building scripts onto the MaidSafe repository, which we will have ready for the next release, and this is why this version is not published in the MaidSafe repository.
You can download Peruse v0.6.0 from here, where you can also see some known issues.
This new version, while still a proof of concept, is heartily recommended for all devs as it features the future of the DOM APIs. Gone is the complexity of managing the handles, and you can now experiment with the safe-app-nodejs based API without having to build from source.
We have also created the playground3.0 branch of our Web API Playground tool which is fully compatible with this new version of the Web API, and it can already be used to explore the new API.
The new Web API is the same API as the one exposed by safe_app_nodejs
with the exception of the authorise
function which replaces the openUri
function exposed by safe_app_nodejs as it sends the request to the Authenticator using the internal Peruse communication channel rather than the system URI. We highly recommend using the Web API Playground tool to get acquainted.
And further to all of that, it’s worth noting this API change is a breaking change for all the web apps out there (sorry devs! But look: no handles!)
We are now working on enhancements to the authorisation pop-up to show the same type of information shown by the SAFE Beaker Browser, as well as working on the implementation of the reconnect feature which is also supported by our Beaker Browser fork.
SAFE Client Libs
This week we are releasing a new batch of SAFE Client Libs libraries: safe_bindgen 0.5.0
, ffi_utils 0.5.0
, safe_core 0.30.0
, safe_app 0.7.0
, and safe_authenticator 0.7.0
. This is a major release since January this year that comes with a lot of goodies, the highlight being the bindings generator which builds upon the foundation laid by the moz-cheddar
library that is intended to be used for generating C headers from the Rust code. We took the existing code in moz-cheddar
and improved it in a lot of ways: now we support generating bindings for multiple languages, starting with Java and C# - and hopefully with other community-supported language bindings in the future.
@marcin was on vacation last week but he did get a PR merged that dramatically decreases Travis CI timeouts, which have been impeding our ability to merge changes in the past. This PR works by splitting out the builds performed by Travis into multiple stages and by fixing an issue that was preventing proper usage of Travis caches. Additionally, we are upgrading all crates to Rust 1.26.2.
Routing
Work has continued on the implementation of PARSEC and we’re very close to being able to start testing the protocol for real. The first cut of the algorithm is in our repository and there will doubtless be some issues which will be exposed and fixed as we implement the tests and example code, but progress on this is good. All being well, there should be a running example by this time next week, and we’ll be working towards the second milestone which will see support for changes to the membership list (i.e. allowing nodes to join and leave the section while maintaining the integrity of the consensus process).
Crust
Remember that last week we started reworking encryption in Crust. This week we pushed an initial implementation to GitHub - maidsafe-archive/safe_crypto: Provide abstraction for the underlying crypto library so that all our other libs depend on this one for crypto related stuff which is based on rust_sodium for now. Initially, we had encryption traits, but when we started integrating them to Crust, we noticed how much more complex code was getting: all the functions and structures that used crypto primitives had to be made generic. So instead we decided to export concrete crypto related types in safe_crypto. The work on integrating those types in Crust is still in progress.
netsim is so cool that we want to shout it to the rest of the world. But no software project can flourish without good documentation. Hence, we started working on tutorials and examples on how to use netsim for misc scenarios.
As mentioned last week, the tokio-utp crate has now been moved to GitHub - maidsafe-archive/tokio_utp: uTP implementation for Rust + tokio. One more tokio-utp bug was discovered which only reproduces on Windows. Under heavy load, our implementation starts losing packets and at some point, when memory buffers fill up, connections are reset. This should not happen, because that’s the whole point of congestion control - don’t send more packets than the other side can handle. We started investigating, but haven’t found the root cause yet. But we will