Summary
Here are some of the main things to highlight this week:
- The teams completed some enhancements to the Crust test and internal end-to-end testing of Crust Test v2 started today.
- @dugcampbell published a Medium post on his experience at the Web3 Summit.
- MaidSafeCoin has now been added to third-party app Delta which collates and provides cryptocurrency information to their users.
- Pierre, Nikita, Povilas and Jon will be at MozFest in London this weekend, if you’re in town DM them on the forum to catch up.
- The Routing team is continuing work on the detection of various Malice scenarios.
Marketing
This week the marketing team has been a little reduced with @dugcampbell away at the Web3 Summit in Berlin. Don’t worry if you weren’t able to attend, Dug has already found time to publish a post on the experience.
Back in Ayr, @SarahPentland and @DGeddes have been working on preparations for the new up and coming Crust test, liaising with the other teams on testing, ensuring we are GDPR compliant, and improving the dashboard based on user feedback. They have also continued to work on increasing awareness of the Crust test, and Crust generally, and Nikita gave an interview to @fergish for the SAFE Crossroads podcast yesterday. We really look forward to hearing it when it is released in the coming days as John always does a great job of explaining technical topics in an approachable way.
We also registered for SAFE Network/MAID news to be incorporated onto Delta, a third-party app available on Android and iOS, that collates and provides cryptocurrency information to their users. Any new blog posts we publish will be added to our Delta Direct page, and we can also add any Tweets from our accounts using the #DeltaDirect hashtag. This is a bit of an experiment as another way of getting the project and coin in front of new users. On a broader note, we will be reformatting our updates to work with competing apps to maximise awareness of the SAFE Network outside the community and we’ll continue to update you as we progress. Delta has over 100k downloads on Android so it will be interesting to see if this will increase our profile over time.
Finally, you may have noticed that we are getting out to more conferences of late and despite being unsuccessful for a presentation slot at Mozfest (https://mozillafestival.org/), Pierre, Nikita, Povilas and Jon will be heading to the event in London this weekend anyway, so if anyone wants to join them for a couple of beers on Saturday please DM them on the forum. And if the temptation of beer is not enough for you they are likely to be armed with a small amount of swag and some scintillating conversation, so hopefully there is something for everyone!
Recruitment
Before we get underway with the recruitment update we would like to welcome some new members to the team
@chriso joined the team on Monday and will be working alongside @StephenC as our new Dev Ops Engineer. Please give him a big forum welcome
@Victoria is back from her holiday now and has been busy with a number of interviews this week already - no rest for the wicked
Marketing Strategist - due to @dugcampbell going to Berlin we had to push the final interviews for this role to the end of this week. We have 2 candidates shortlisted which will take place tomorrow (26th) with @dugcampbell, @victoria and @nicklambert. We will be in a position next week to update you on when the successful candidate is able to start.
Executive Assistant - @Victoria is back to the start in recruiting for this role following some issues in contacting applicants. Another shortlist has been created and telephone interviews are being scheduled.
Network Engineer - as mentioned in previous updates this is a hard role to fill and we have no update on this role as yet.
Assistant Manager - @krishna, @nadia and @victoria conducted interviews for this role on 12th and we are delighted to announce that we have an Assistant Manager joining the team in Chennai on 1st November.
Software Test Engineer - Stephen and Victoria have conducted initial interviews for this role this week and are setting up second stage interviews next week.
And finally, some slightly off topic but heartwarming news. Admin assistant @kayley’s wife gave birth to a little girl yesterday and we would like to welcome her to the MaidSafe family. We’ll give her a couple of years before we get her involved in development
User Experience
We were delighted to have you all, sleeves rolled up, pitching in with the Crust Test. Yes, the real star of the show was Crust itself, but a significant effort on the part of the UX and frontend teams meant the test was usable, useful, and heck even a little fun!
As we prepare to roll around for another, further expanded test, we’ve been busy tweaking, improving, simplifying, and boosting the performance of the dashboard and the behind-the-scenes workflow.
It’s exciting when things get out there in the wild, this is what building real experiences is all about, especially when we’re in the business of connecting people. We look forward to seeing you all popping up in the next test!
SAFE API & Apps
Last week we mentioned giving more focus to our engagement with the SOLID community to receive feedback on our RDF implementation efforts. We’ve begun discussing how best to store RDF data, given our two network data types and the fundamental of immutability.
Thanks to some research articles that have been shared by members of the SOLID community, we’re starting to grasp what may make more sense for an RDF implementation on SAFE. For example, given an RDF graph stored as a file document where the graph represents a frequently updating user profile, it would become expensive to have to replace the whole file resource each time a single RDF triple is to be updated or appended. One possibility is that RDF graphs are composed of RDF Molecules, where minor updates to a graph consist of replacing single molecules.
Please join the discussion over at the SOLID Discourse forum.
Also, join the LinkedData Gitter chat.
Thank you to @intrz for bringing Underlay to our attention, a project that we can learn a lot from, especially in how it’s leveraging immutability for graph storage. Underlay is a new project from the creators of Freebase, the predecessor of the Google Knowledge Graph.
Lastly, yet another helpful SOLID community member introduced us to a binary RDF format called HDT. This compressed format takes between 6% and 11% the space of plain text triples and is indexed which means that it doesn’t have to be decompressed in order to query the RDF data!
The current use cases for HDT appear to be for very large (millions to billions of triples) and read-only data sets but we’re in dialogue with SOLID folks to find out how this format may work for smaller and highly dynamic graphs.
The safe_app_java
pull request has been reviewed and merged! With the major changes now in place, we are working on the sample Android application that showcases the direct integration and usage of the safe_app_java
library.
SAFE Client Libs
This week we finalized a couple of PRs involving IPC between apps and the authenticator. The first of these changes URIs to be case insensitive by switching from base64 encodings to base32. This will help with issues of the sort reported here. The other PR adds a “mock-bit” to IPC messages so that mock apps trying to communicate with a non-mock authenticator, or non-mock apps with a mock authenticator, will result in an error. Finally, we also wrote a test trying to reproduce a mock network issue that results in corrupted or deleted accounts. While the test didn’t reproduce the issue, it helped us narrow down the root cause of the issue.
Routing
In the Routing team, we are continuing work on the detection of various Malice scenarios.
We implemented some more structural changes that are necessary in considering another node’s perspective while deciding whether they were malicious. Namely, we changed the structural representation of meta-elections to allow evaluation of past meta-elections without any interference from the current meta-elections. It doesn’t sound like much but this was a major improvement that at the same time made the code more correct and easier to follow. Further tests are still upcoming that will confirm that we are reaching completion of the “per-peer-membership list” saga.
We have continued work on mirroring these structural changes in the generated graphs. As we were looking at this area of the code, we came up with several ideas for refactoring that we are implementing at the same time.
We also made progress in handling forks, including in making sure that the implementation is in line with the definitions in the whitepaper in the presence of forks. This is an area we had deliberately overlooked in milestone 1 as forks can only occur from malicious behaviour.
Finally, we started tackling two new kinds of malice: “InvalidGossipCreator” and “Accomplice”. Both these tasks rely on the structural changes that we have been making as they require consideration of another node’s perspective.
Crust
We’ve been working on all the new features that will go into the second iteration of the Crust test and we’re pleased to report that we started internal end-to-end testing of Crust Test v2 today. The highlight would be the addition of direct connections in the connection types tested in this iteration. If UPnP is enabled in a router, Crust will automatically request to forward a certain port to an address in the internal network. This makes direct connections an easy thing as in this case we just need to exchange the external IP address and the port number with the other party. Even if this is not possible, direct connections would work if a user has a publicly addressable IP or if they try to connect with someone else on the local network: in both of these cases we don’t have to rely on other NAT traversal techniques such as hole punching (although we’ll still collect these connection results for the test).
In addition to that, with the help of the QA team, we have sorted the build process for the test binaries: we’re now using musl, which theoretically means the client will run on any distribution of Linux irrespective of an installed GLIBC version.