Here are some of the main things to highlight this week:
- We’re happy to announce that we’ve been asked to participate in the Decentralized Web Summit in San Francisco this summer.
- @dirvine and @nicklambert were interviewed about the SAFE Network for a BBC Radio show.
- @sarahpentland put out a Medium article on Safecoin that’s provoked some discussion on this forum topic that’s worth checking out.
- The C# bindings are progressing well. A pull request has been raised to merge the latest code with the upstream repository. This pull request is a huge step forward, as it adds support for .NET Core - Windows, Linux, macOS (x64), .NET Framework (x64), iOS and Android.
- It’s been a huge week here in Routing. It’s one of those weeks that stands out in the history of the development of the project and one that will go down as being a key milestone by the time we reach Beta.
Decentralized Web Summit
We’re happy to announce that we’ve been asked to participate in the Decentralized Web Summit in San Francisco this summer. This is a crucial gathering of the top minds and projects working in the area and a follow-up to their excellent 2016 conference which had people such as Tim Berners-Lee and Vint Cerf speaking (previous videos here). We’ll be sharing further details of our plans for the event closer to the time.
SAFE Academy Update
Work has continued on the SAFE Academy this week. There’s still plenty to do to get the first version out the door but we’re happy to report that the schedule has now lined up for us to release the initial version of the SAFE Academy by the end of June.
Press: BBC Radio
Safecoin Medium Post
Finally this week, we received this lovely gift through the post…
However, there was no address or note with it so unfortunately we have no idea who sent it! So - if it was you, please let us know so we can thank you properly! (Or perhaps you want to keep it quiet in case everyone wants one…)
User Experience & Website Design
This week has seen the newly expanded UX team really firing on all cylinders; taking on their first major task: the SAFE Network website.
After a false start with an external agency, the decision to take this entirely in-house is proving to be an excellent choice. User Experience design is always best tackled holistically, and while the website is only one fraction of the larger picture, considering it alongside all the other moving parts will undoubtedly be beneficial to the whole.
Building a Design Process
The first part of this project has been to build out our own design process; which in this case will be collaborative, iterative, adaptable and above all human-centred: just the way we’d like to proceed on all projects. In this case though, it’s going to be quite rapid: it’s exciting for the team and will help us prove and improve the process for future design challenges, of which there will be many.
Target Users and Design Personas
The next phase of the project was tasked with defining and refining who our target users are, and a period of research to flesh these out into more focused Design Personas, tightening up the brief around them. These Personas are both a communication and a design tool, and they’ll allow us to evaluate proposed design solutions with clarity.
Information Architecture & Messaging
We then bounced straight into building out the core messaging and Information Architecture for the site. An engaging process, but a challenge when such a complex and multifaceted project is the subject of your attention. Some of you may have noticed a corresponding spike in the Post-It Note share price.
Content Meets Design
The output from the IA process then informs the next layer of the project, where content meets layout design. We’re breaking from the traditional, more linear model of Plan Content > Write Content > Wireframe > Visual Design by collaborating and rapidly iterating to grow and develop content and visual design together. This allows both halves of the puzzle to inform each other and evolve together, with a more cohesive end result. Plus, it’s just a lot more fun.
Mood Board and Approach to Creative
Alongside this we’ve started to get our hands dirty in creative: taking cues from the vision and inspiration of the project to generate ideas and examining in detail all the elements which will come together to make this a communicative and effective website: colour, typography, texture, movement, patterns and depth.
It’s also a chance for us to see how similar projects and other websites in the same space are placing themselves from a design point of view. We can then talk clearly about who we are — be a distinct voice amongst the noise — and yet identify and stay within established design patterns where it helps the user.
Clear, orderly, and understandable; while being different, vibrant and human at the same time.
The Mood Board in our project is more than just a way to collect inspiration, it is a design tool in its own right, and it lays foundation for a rich palette of design elements that we can build the project upon, and can form the basis of a style guide and design system that can have influence beyond the website.
We’ve made some good strides forward this week in design; exciting not only for the website but for the prospects of all the challenges we’ll be getting our teeth into in the months to come.
SAFE Browser, Authenticator & API
Now that the
bindgen branch of
safe_client_libs has been merged upstream, @lionel.faber is continuing his work on the Java bindings to expose the APIs for
safe_authenticator. We have encountered a number of roadblocks and we’re working our way through them. The progress for the NFS issue and the JNI implementation task can be tracked on JIRA.
The C# bindings are also progressing well. A pull request has been raised to merge the latest code with the upstream repository. This pull request is a huge step forward, as it adds support for .NET Core - Windows, Linux, macOS (x64), .NET Framework (x64), iOS and Android. CI is failing at the moment. Once this is resolved, the pull request will be merged with the upstream repository. safe_mobile will also be updated once this pull request is merged.
We are reviewing several PRs submitted during the last week for our safe_app_nodejs package which bring some enhancements to our tests and also to the initialisation function of a
safeApp instance. The
initializeApp function was not returning a Promise as it was supposed to, which was also preventing us from correctly handling errors that could happen in that stage, e.g. a failure to initialise the native lib logging feature.
Some other changes we started to work on are in relation to allow an application to disable the installation of the system_uri library. This will be particularly useful for mobile applications which would make use of the mobile native libraries.
We also started some research on how we can support sharing links to content using the content’s address itself, i.e. without the need to map it to a public ID. We will be sharing more details as soon as we have a well-defined proposal.
SAFE Client Libs
This week we worked on making the full public API in
safe_app accessible from Rust. What this means is that someone using
safe_app from pure Rust should have access to the same functionality provided by the FFI interface. This is especially important now that
safe_app has a different license than
routing, so we re-exported all required functionality from these two crates in particular.
We’ve also kick-started the process of replacing C libraries with pure Rust versions where we can. As a result, we expect to simplify the cross-platform support: if we have only Rust dependencies, it means that we can build our libraries for every platform where Rust is supported. In some cases, it’s possible to build libraries without involving the Rust standard library and
libc, which means we can build libs even for embedded platforms without any operating system. While this is a desirable goal, we decided to start with easy targets to dip our toes. The first library to undergo this change is
self_encryption, where we replaced the Brotli compression library with the pure Rust implementation. The pull request is ready to be merged; however, we want to take an extra step as a precaution to make sure that with this library change we are still compatible with the existing data stored on the Alpha 2 network, as both libraries produce different binary strings as a result of the compression algorithm output. The progress can be tracked in this JIRA task.
We’re also continuing to improve our continuous integration and deployment scripts. The pull request to provide better deployment scripts has been merged, and we’re finalising our work on automatically running the SAFE Client Libs builds on Android and iOS, producing complete libraries for both mobile platforms.
It’s been a huge week here in Routing. It’s one of those weeks that stands out in the history of the development of the project and one that will go down as being a key milestone by the time we reach Beta.
As you may have gathered by this stage, we’ve made amazing progress in this area since the last Dev Update - to the extent that in the next week or so, we’re announcing something big. Very big. To answer the inevitable question, no, it’s not the Alpha 3 release. But to say we’re excited about this is an understatement. We’ve got a few things to tidy up at this side - but we’re hoping to be in a position to share this with you next week - watch this space!
Another week spent on polishing our uTP implementation. Bear in mind that it’s still at its infant stage, so we keep hitting some bugs. Since last week we’ve been implementing graceful uTP connection shutdown, which will act exactly like TCP. It’s almost done, but in the meantime, we found a couple new bugs which must be fixed first:
- in some cases, connection close sends two
Finpackets instead of one - the remote peer doesn’t expect that
- our congestion control implementation panics recalculating packet delays
Fixes for both issues are on the way and should be implemented in a matter of days. A nice side effect of those fixes is that with every change we keep adding more automated tests. Hence, tokio-utp is getting more robust and comfortable to work with
Speaking of testing, we keep investing a big piece of our time in netsim. Note that it’s still under heavy development. We’re highly experimenting; library interface, source code structure is radically changing. Currently, the documentation might be out of sync, but that’s a natural transitional stage