MaidSafe Dev Update :safe: 24th Aug 2015

Hey guys,

A lot of interesting code got put into repositories last week. It was a busy time integrating with the refactored Routing library with code commits coming from developers working on other crates, such as Client and Vault to get the API sorted out for this sprint. @benjaminbollen wasn’t allowed to rest with a flurry of PR’s to his library at the same time he was making a few internal changes to it. The sweet outcome is that Routing has more or less taken the form intended by this sprint.

Vault is actively integrating with Routing and once that is complete, sometime this week, we should have a functional vault binary. Of course, we won’t be cruel to ask people to figure out how to build and run it on their machines, instead there will be installers.

The installer deliverable is two-fold. Firstly, all the examples in various crates would be converted to functioning executables and deployed by the installers. So for instance, self-authentication and self-encryption will be available as binaries deployed by the installer for everybody to play with. There is no longer a need to clone and build the individual crates and run the examples manually. This should be a great relief for most who do not want the hassle of tracking, cloning and building individual crates to get to the examples.

The other benefit of the Installer will be the ability to deploy the vault executable itself. In order to do that Vault must be ready which in turn means the config-file handling task in Crust must be feature complete. The flowchart for this is already detailed and is being put into code as I type:


Also, since our droplets are Linux nodes right now, the droplet testing will be initially carried out on Linux environment and with all edges smoothed it will only be a matter of time to test it on other platforms.

The network setup possible just now is only LAN. This is because UDP-hole-punching and UTP integration are not feature complete in Crust yet. However, that library will greatly benefit from the addition of @Peter_Jankuliak who is coming into Crust as one of the maintainers, with the other being @vinipsmaker. They are quickly addressing the objectives there and also focussing on bringing Crust to compile with Rust-Beta, enabling us to move all other dependent crates to compile with beta instead of nightly. Once sorted, we will see the full-blown peer-to-peer connectivity including and not limited to NAT-traversals meaning that you will be able to start connecting your vault to the SAFE Network, exciting times just around the corner!

There is quite a bit of work done in Clients too. For one, the integration of Client (includes 3 crates: safe_client, safe_nfs and safe_dns) is complete with Routing and builds nicely. It is powerful and has the potential for varied usage. To showcase one of the features of the Client modules, we are building a sample desktop-UI app which will help do some Nfs operations on the SAFE Network. In particular, the user will be able to register one’s DNS and make a website in compliance with the SAFE-protocol. @Krishna_Kumar has been very active on this and kudos to him for having won the fight against different platforms to smoothly deploy and run the app. He sorted out strange hurdles like inability to stream content more than 64 KB in Firefox and capture embedded URLs and wrap them in SAFE-protocol.

Firefox on Windows however is a 32 bit application and thus unable to link to 64 bit native libraries. Building 32 bit library is a pain because rust-32 bit compiler build is not as smooth as the Rust-64 bit compiler builds. So for Windows the way out right now is to download the developer edition of Firefox, which comes in 64-bit flavour too. Those who deal in ABIs will know (and, if you are like me, then rejoice) the clean C-ABI that exists for 64-bit Windows. No more name decorations for pure C interfaces. This is made possible by the fact that there is just one calling convention and no name decoration. Symbols are exported just as they read in the source. Which means you are free to choose any conforming compiler. Win32 has problems in that in call-conventions (such as __stdcall), the exported symbols are different for MinGW and VC. And we are talking about pure C interfaces ! What a mess.

Anyway, everything is tamed now and I have a proof of concept of FFI bindings to our main rust-code which will help you integrate with Python, Javascript, Firefox … just name it. Those who are interested in looking at it can take a peek at my repository here. This is what will be used by POC Firefox Addons and Electron desktop apps too. The C in-direction there is to help you use SWIG for the target language (see python/javascript examples there).

With that we’ll more or less conclude this sprint and are also going to start planning on deliverables for sprint-4 sometime this week.

Here’s the dev-transcript.

Edit (26-Aug-2015): With recent updates of dependencies on crates.io, 32-biit builds on Windows work fine and Firefox-32-bit is successfully tested too. I’ve accordingly updated the Readme for the Firefox example in the repository.

32 Likes

Exciting times!!

About this: “Firefox 41, which will be released on September 22, 2015 if things go as planned, will be offered as a 32-bit and 64-bit version for the Windows platform.”

Or as you said, the developer version: https://www.mozilla.org/en-US/firefox/developer/all/

8 Likes

what would be the estimated time on sprint-4? Or is that to be determined with planning? Can’t say I’m not bummed about not already having installers but I actively watch github and jira, and the progress barely ever halts to a stop. So props to the team, I’m a proud bystander rooting you to close in on that finish line!

11 Likes

It would be set when planning starts for rust-4 however we are hoping to keep rust-4 a fairly small sprint(1 to two week duration). rust-3 turned into quite a long sprint(it was tackling a major library update) however from rust-4 things should go back to normal with small sprints that each have a defined deliverable as part of their completion objective.

18 Likes

This is the best update so far!!!

8 Likes

I´d love to say I understood a lot from the Update, but I guess I´ll just remain standing abashadly somewhere in the corner of the thread :wink:

6 Likes

Move over… :smile:

5 Likes

You say the installers will be done sometime this week. Where will they be posted and where is the download page?

2 Likes

I guess here on the forum at least, because every development gets posted here.

3 Likes

Will it be possible to interact with the client and vault via user created apps using imgui-rs?

1 Like

A little bit bumped out by this weeks update :disappointed: , i do understand that the refactoring and integrating crate changes took up most of your time but still.

Overall I like the strides the project has made so far since i began to track it. Looking forward to the installers and the new sprint. Also would be nice to have the Bounty Program operational.

Just had a 10 sec look at it. That seems to be rust-code itself, so should be pretty smooth i should guess. Have a look at examples folder that i have put in the repository i linked. While I’m not an expert in every language I compiled workable minimal examples for, i think they should give you a fair idea that anything that can call into a C (native) library can be used either directly with rust-FFI code or via C in-direction in-case you want to use SWIG for ease. However if it’s rust code itself that we are talking about (like what your imgui-rs thingy seems to be) then you don’t even need to use FFI - use normal rlib itself, the way miadsafe rust-crates interact with each other.

As for interacting with vaults, IDK what you mean there. Vault binary is an executable and interactions are through networking which transcends language and platform boundaries.

3 Likes

So, If I understand all of this correctly (beacuse it’s all very technical), if we relate this to the roadmap and sprints:

This week we will probably see the installers with the features that is presented in the roadmap (not farming yet etc.). When these installers are delivered, it means “officially” that DEV Bundle 1 is finished?

After this, we are going to the next step (after the planning) in the roadmap to DEV Bundle 2. When the next sprint (Sprint 4) is finished (what will take about 1 or 2 weeks) this also means that DEV Bundle 2 is finished and we (public) can start to farm and store data?

I think this project is just brilliant with so much potentional! I can’t wait to use it :smile:

1 Like

Yes :smile:

EDIT: All things going well we HOPE to have Linux only installers this week. Installers for other platforms will follow soon after. Everything else on DB1 is complete though.

Yes after planning we will start working on Dev Bundle 2, but IMHO it will take a couple of sprints to complete DB2. We will know more after the planning cycle though and we’ll let you guys know asap.

11 Likes

I hope everyone is holding on tight - things are going to get a bit crazy cool once people realise this thing is real!

7 Likes

Are we be able to build it on windows and use it even if there is no installer available?

Yes, but windows installer will follow a couple of days after linux then osx. Just drip feeding to be able to handle any support issues a bit at a time as we push stuff out now. Note a lot of work happening in CRUST so running from home still an issue for now at least. Should also resolve quickly. Routing churn handling tested working tonight by @BenMS frantic stuff, but very quickly pulling together. This next 1-2 week sprint will stabilise a lot as we really did push a lot into the last sprint, perhaps too much, but we are in a hurry just now :slight_smile: Be great to release a bit at a time to allow progress as fast as we can. We know folk will be very keen to even shave a day off so we will try and cope, but please be aware there is a frantic pace with some worn out devs right now. A breath is needed.

11 Likes

It was not my intention trying to push you. And I don’t want to. I don’t expect it to work right away too. It’s just for having fun testing it. I’m a patient guy and like Blizzard always say, “It will be ready when it’s ready”. So you and your team should not have to look like a zombie (or become one that could be contagious, end of the world) because you work too hard. You should like pretty regenerated instead.

I’m still pretty exited to see SAFE coming.

2 Likes

Not a worry at all, it’s happening and that is what’s important :slight_smile:

5 Likes

I could send oxygen tanks over to the team for rapid repletion. I’ll add a little ethanol to it to help take the edge off. About 0.8 percent. Problem is that funds are a bit tight right now, so I wouldn’t hold my breath. :stuck_out_tongue_winking_eye: Get it? Hold breath? :smiley: :smile: :grin: :relieved: :pensive: :sleepy::smirk: Well at least I tried…

6 Likes