MaidSafe Dev Update :safe: 3rd August 2015

We need UTP to enable community clients to connect to the network, that will be during DB2.

2 Likes

I made a mistake in my earlier post, the addition of UTP will enable community run vaults to contribute to the network. So what you are saying is correct, once we have completed the additional work in routing and relaunched the network, clients will be able to join the network. In fact, users that have set up port forwarding should also be able to contribute to the network with their own vaults.

Apologies for the confusion!

13 Likes

Thanks for elaborating, very exciting!

1 Like

deployed as a single binary file

I am very interested in binary deployment on Linux myself, and I’m intrigued by this radical approach. Can you please tell me:

  • so you don’t use getaddrinfo() or gethostbyname() then? Or will you dlopen/dlsym these from glibc at runtime as needed?

  • Is this because of versioned symbols in glibc which require you to build on an older Linux to get backward-compat-enough binaries? Or is it because you want to cover non-glibc systems too? Or something else? Could you please expand on this?

Thanks.

1 Like

Did you look at the musl project maidsafe intends to use? It’s given in the threadstarting post.
http://www.musl-libc.org/intro.html

@abittner I know what musl is.

I am not sure there is such a limitation, have you encountered this one?

Yes, basically rust etc. (pip gem npm) are not all that compatible with dpkg or rpm type package managers. So we go for binary packages. The thinking is we will supply binary rpm deb etc. but also tar.gz type packages as well. Musl will allow us to provide the x86 (32 / 64) and ARM hf and sf to get to as many distributions as possible. We will set up repo’s for easier installing and signature checks as well. So this is a route to getting max coverage per architecture as much as it is anything else.

2 Likes

I am not sure there is such a limitation, have you encountered this one?

These functions are part of libnss which can be configured in many ways to provide these services and users expect apps to go through them (sorta how they expect getpwnam() to go through PAM if that’s what they have). Google “static linking glibc nss”, stackoverflow is full of it.

The versioned symbols that I was referring to is a Linux “technology” where multiple implementations of the same C symbol are present in a library and your exe asks for a specific version, eg. memcpy@GLIBC_2.14 instead of memcpy. So if you want your binary to work on an older Linux (assuming you link dynamically against glibc) you have to compile it on the oldest Linux that you care to support, so that when it runs, it will ask for the oldest versions of those symbols.

Linux binary deployment is a can of worms which is why I’m interested in new ways to solve this.

1 Like

Long story short: the options are to either 1) statically link (but still use libnss for gethostbyname etc. and fallback to musl’s implementation if libnss is not found etc. – musl started working on this but I don’t know the status) or 2) dynamically link against glibc which most users have but build on an old Linux so you can get decent backwards compat.

1 Like

We should be adding crust/routing soon so will see. I do see getifaddr etc. in musl and it looks complete, but lets see. Thanks for heads up, I personally really favour static these days, I always have but more so now with security issues driving me to look harder at dyn loading and injections attacks etc. It’s a quagmire though as you say. I hope this test will help you as well. We will keep everyone posted for sure.

2 Likes