Safe-CMS - Censorship is a thing of the past

Rust can do this , you can check the examples in the rust client libraries on maidsafe’s github, some are outdated and commented out, but some do work in the current state.
I managed to authenticate a bare rust hello world test a few weeks ago. I’d be glad to share the code if you like, but be warned this is amateur tinkering :slight_smile:


That would be really, really useful. @AndyAlban is in the process of building a basic SafeNet spider and search indexer at the moment, and being able to do it through a CLI mechanism instead of an electron app would be invaluable to us.


I’m looking forward to having Java FFI bindings and some time to use them in the summer. It has been a long metaphorical winter since the REST API of alpha 1 could be integrated with.


best would be to take a peek here, rather than my ugly test :

What I did is basically stripping out everything that creates and fills mutables, leaving only the authentication part. This example can then be used as a base for whatever you see fit.

You need a working crust config file in target/debug, too, so your program actually connects to alpha2.

I did not push it to github as it was just learning purpose, but if it is of interest I can !


@jlpell was looking at this recently too so he may be interested in your code @nice

I’d love a set of simple CLI tools or a library to help build the using python scripts or such. I’m sure they would be very useful to a lot of people.


here it is :
to test :

git clone

cd rust-alpha2

edit your credentials in src/  lines 170-171

cargo build
cargo run

I’ve been keeping it hush hush for about a month now as I learn what I needed to learn and experiment, but if I can get enough time in and figure out a few trouble spots before schedule ramps up I’m going to try and have what we both want ready soon… don’t want to make promises and not deliver though… FUSE is a little tricky, so that will be phase 2.

I think @Shane and @Traktion might like it too if they use linux.


This update is a little bit earlier than expected, just another little teaser since @AndyAlban uploaded a fancy video in his Safe-Search post and I got video envy. The simplicity of creating public names with the Safe-CMS app:

In the video above, I’m creating a domain (public name) safe://hellosafeforum, showing what happens when you try to create it again (and it already exists) and then showing that visiting that new public name in the safe browser (it elicits a 106 error - because we didn’t create a service under it). After that, I attempt to load a public name which doesn’t exist (which elicits a 103 error, because the public name doesn’t exist), before finally returning to the safe://hellosafeforum domain.

You may also notice a full authentication cycle with the Safe-Authenticator. :slight_smile:

I’ll post another teaser showing service creation in the run-up to my major update post this weekend showcasing the creation of draft posts, publishing of posts, previewing them locally, etc.

Based on where I’m up to at the moment, I believe I will have the first official “template” for blog pages done some time in the next 10 days and I’m well ahead of my expected release schedule (so we may possibly be releasing a week earlier than I expected).

Thanks all!


Hi guys, this update is tiny, but it’s one that I’m really excited about!

Above is some flat HTML content I’ve uploaded to a public name / service combination, all done entirely within the application! What this means is that we have full integration with the SafeNet libraries and everything from this point forward is purely an exercise in user interface creation. (the service is shane4 because I’ve spent the night bugfixing and increasing performance and reliability, so some testing was needed.)

As minor as it might seem to simply see a few words of text on a page, it marks an absolutely huge milestone for the project and guarantees that I’ll be able to deliver with the expected features before the expected delivery date of the project.


you really are doing a marvellous job here :slight_smile: i can’t wait to test the CMS =)


aaannd we have lift off !! :rocket:


Hello all, first of all I just want to say a massive thank you to all of you for your continued support, publicity, etc. It’s really appreciated and makes working on this much easier for me. I’ve been working on this project for 3 weeks now and your support during that time has been amazing. :slight_smile:

The video below showcases the creation of a public name, a service within it, then the creation (and upload) of a simple, template-less bog post at the address index.html, you can verify this all yourself by visiting safe://www.hellosafeforum2/ in your SAFE browser.

This is all obviously a little bit rough, there are no indicators for when things are loading / saving and the “timeline” on the post edit page doesn’t update to “published”, but it’s very nearly there. From here, the only things I have left are as follows:

  • Add some nice loading indicators as said above
  • Create the template compiler
  • Create a few “default” templates for our lazier users to take advantage of

Finally, I’m confident in the work done so far - enough to finally set an official release date: February 24th 2018.


Really great work! I think this helps to demonstrate how decoupled the client can be from the resulting content. It feels much more like how people treat apps on mobile phones and tablets, rather than how desktops tend to revolve around the browser more for this sort of thing.

IMO, this is actually quite an interesting differentiator. It could mean people expecting a richer client experience, more akin to what mobile users expect. I suspect it may mean people will explore different client side tech stacks too. Anyway, it is just interesting to see this process evolve.


This is amazing work, Shane. Congrats on the blazing progress. The SafeNetwork community is lucky to have you, and your work will be extremely helpful to many projects.


Thanks. Good shane your post.


Yeah, you’re right about that.

I thought it was important to abstract away the complexities of the SafeNet - at its core it’s difficult for a lay-person to understand, but if we (app developers) can make it work in as few inputs as possible from the user’s perspective, it won’t seem quite so daunting. Breeding familiarity was really my goal with the user experience.

I hope it’ll serve as a decent, simple entry point for new users to try out publishing on the safe net before they move on to tools with more depth.


Again, wow just wow! The rate of progress is amazing!

To this end I think it essential to provide additional explanatory pop ups for those that might be confused by the service field and it’s orientation on the left of the URL as opposed to the right. From my understanding subdomains traditionally fall the right. The “post domain” field imo could either use further explanation or rewording to something like “Post this to which domain?”. Finally The “post URL” field might be the most confusing of all for new users. Where the need to specify an HTML and the index at that isn’t obvious.

With your goal in mind I’m sure making this grandma easy will naturally happen :wink:


I’m not sure of the reasons, but MaidSafe use the terms profile and public-name, as in safe://profile.public-name and you can support different services (www, LDP, etc) on each public-name by associating each service with a profile.

In the absence of any other convention, I’m using the term host in my SAFE Web API
to refer to the whole profile.public-name.

1 Like

All really valid points - like I said above, it’s all a bit rough at the moment, the focus until now has been network features, but now I have a few weeks to really nail the user interface.

With regards to domains, however, traditionally the domain structure of a website is as follow:

PROTOCOL://SUBDOMAIN.DOMAIN.GTLD/PATH, for example: - as you can see, subdomain is oriented to the left of the domain. :slight_smile:

@happybeing I assume by profile you’re describing the TYPE_TAG defined in RFC41? Wherein 15002 is used to refer to a WWW service and 15001 is used for a DNS service?


No I mean exactly as I described, so it’s the Maidsafe term for subdomain.

However, as I say, I don’t know if that is significant - but as it’s used in their RFCs, I’ve followed their convention in my API.

1 Like