SAFEpress is a website building application for SAFE Network, which is a brand new decentralised internet.
SAFE Network achieves unparalleled privacy, security and anonymity for users and content publishers. One of the ways it does this is by eliminating the centralised servers that make the internet so vulnerable, another is through end-to-end encryption of all services.
So with SAFE Network, web applications and their users get unrivalled security and privacy out-of-the-box, and with much less code to write which is always good! (No need to register or authorise users for example, as this is taken care of by the network. The SAFE Network Wiki has more details).
Without any servers, there is nowhere on SAFE Network to install WordPress or the code for any hosted web application, and that's where SAFEpress comes in.
SAFEpress can then enhanced to provide Content Management: interactive creation of pages, blog posts and other document types, so that will be our second target.
Finally SAFEpress can develop to provide dynamic and interactive customisation of not just the content, but the user interface, theme and design, even beyond where WordPress is at this point.
I have a simple remoteStorage.js App (screenshot below) talking to the SAFE Network (NFS API) using SAFE Launcher. It is buggy, but successfully authorises with launcher, creates directories and stores files, and can retrieve the content of stored files. I'm using "mock routing" to do this which makes development much easier as it simulates the network and so I'm not dependent on what the testnets or the developer network are doing, internet access and so on.
To get here I have had two goes at creating a SAFE backend for remoteStorage.js (a reference client for the remoteStorage protocol). My first attempt was based on an extension to the rs.js client that supports DropBox and the second is based in their GoogleDrive version. (Note: there is also a reference server that implements the RS protocol. RS servers are available commercially, or users can install it on their own hosting or servers, so you don't need to use a commercial service or even a third party - this is what unhosted.org is about).
I'm now looking into how to handle versioning (which rs.js expects but is not yet available in the SAFE NFS API). I hope to be able to work around the bugs I'm seeing - some of which are almost certainly due to my not having worried about versioning or file metadata yet!
Read the full status update here: Status Update - 13th July 2016
I've slowly been finding more time to work on software and with it to explore both the SAFE API and ideas for how to bootstrap SAFEpress.
As an interim goal - a step towards a SAFE CMS (Content Management System) - I'm looking into creating a backend for remoteStorage.js to use SAFE Network to host application data. This would be a very useful feature in itself: a foundation on which to build powerful cross platform web apps, with offline-first support built in.
Offline-first means the application can work without an internet connection and synchronises with your online data when you next go online. remoteStorage.js has built in offline-first capability, and gives users control over where their data is stored, including with any hosting service or server that supports the remoteStorage API.By extending remoteStorage.js to use SAFE Network for data storage, any remoteStorage.js web app will automatically be a SAFE Network web app too. From there it will not be hard to begin building first a file based CMS, and then begin to extend this by adding a built in editor, website templates and so on, until a full SAFEpress Web CMS is born.
Today I completed the first stage in the SAFE API / remoteStorage.js investigation: building a dummy remoteStorage.js backend for SAFE API which is effectively a copy of another backend ready to be converted to use the SAFE Launcher API. Here's the branch for remoteStorage.js and the My Favourite Drinks demo app, which for now just displays a crude SAFE Network icon next to the other backend options (Dropbox and GoogleDrive).
SAFEpress has been a bit quiet lately - other team members have not been checking in so I'm assuming they've lost interest or lack time, though new people have also joined and started getting up to speed. At the same time there is continued interest and support, so we need more Devs!
Personally I've been busy with other work, so not spent any time with code, but I've still been thinking.
Reading about similar projects on the SAFEnetwork forum got me rethinking my ideas on the back-end and data architecture. This involved both throwing things up in the air so to speak, and coming up with plans for building something simple to help test ideas and experiment with the SAFEnetwork API.
I'm held back by time and also uncertainty about implementation - particularly about how Structured Data can be used on SAFEnetwork to represent relational documents such as blog-post / blog-comment.
So for now I don't have enough time or knowledge to push this sized project along without a lot of help, so we're really in need of more people doing more things to establish a what and a how, and begin doing it.
So if you are interested in creating dynamic web apps for SAFEnetwork and contributing to the early phase of a "WordPress for SAFEnetwork" please get in touch and join our Google group (also see the other resources below).
Mostly quiet due to holidays n stuff, and trying out some stunning developments in SAFEnetwork: the "Uploader" safe_dns example can be found here and allows you to create a demo website on a local vault network!
Also planning some things to do in October while waiting for news on the SAFE REST API, particularly how Structured Data can provide some backend functionality.
The team has shrunk a little due to distractions and other priorities so there is plenty of scope for people to get involved. We could do with input on how to make a nice front end, how to do a client side CMS, poking around to make a versatile backend in the client, that talks to SAFEnetwork, etc etc. But don't be shy, with this project anyone can help out - from chatting about us on social media, enhancing this simple website, or telling us what you'd like to do with SAFEpress, and of course asking us questions: it all helps!
We submitted some ideas to MaidSafe for how to support dynamic websites entirely on the client side (no server means no server side scripting!). We wait with baited breath for feedback, readily expecting some neat solution that we didn't think of ;-).
Our task lists are now on Trello.com/safepress so anyone can claim something or record what they are working on and keep others updated. Its really your choice, if you think something is useful, add a card and do it!
We now have a SAFEpress Google Group for team and community discussions. Join us or just drop by to say hi!
The SAFEpress vision was announced on the SAFE Network forum as a community endeavour, free (as in free) open source with GPLv3 licensing. No shareholders, but the possibility of rewards for contributors, generated by SAFE Network itself.
The announcement quickly received a lot of positive comment and discussion about how to do this, so we're already attracting people offering to work on the different parts of the project. Not just programmers, but also designers, front-end developers, website builders, enthusiastic users and plain fans. If you want to learn more or think you might also contribute, see contact us.
The SAFEpress github repository was set up, and an Outline Design published. This enables contributors from anywhere to collaborate on any aspect of the project, including the vision, its design and of course development. You can begin contributing by cloning the repository, picking a task, and submitting your work and updates as a pull request... even to this website! This is just a standard template, so if you want to improve it, or create a whole new website go ahead: add it to the task list in the README.md with your github name, a pull request to update the task list and off you go.
The SAFEpress twitter feed went live, as did this website. It begins...