remoteStorage

What apps work with remoteStorage?


#1

I’m looking for synergies between user controlled data platforms and SAFE Network (http://maidsafe.net) because I’m looking for ways to support exsiting Apps on SAFE Network, and to assist developers in creating new Apps for SAFE.

I’m having trouble finding apps that work on remoteStorage. So far I found two which I think are remoteStorage apps:

And two which I’m not sure about the status:

Also, this one which seems dormant but was planning support:

I also found this list: https://github.com/unhosted/website/wiki/State-of-the-movement but it is out of date (Jan 2013) and has few working apps listed. Unhosted.org itself shows very little, and I also found IndieHosts which appears to be an alternative approach, making it easy to move conventional web apps between IndieHosting services, rather than developing portable apps based on the open App storage API.

I see there is some life here on this forum :smile: but am unsure the status of remoteStorage apps. I’d like to know if there are, as appears, very few remoteStorage apps available right now, or if there is a more up to date list somewhere?

Thanks.


#2

Welcome!

You can find a list with some more apps, incl. source links, in our new wiki (which is WIP and not linked anywhere yet): https://wiki.remotestorage.io/index.php/Apps

That one also isn’t complete.

The most popular apps at the moment are probably Litewrite and Laverna. The latter is in the middle of a rewrite and currently has rather outdated RS support, but people still use it with RS, because they like the option so much.

My personal favorites are my own apps, of course: Webmarks and Sharesome. I wouldn’t consider adding SAFE support, though.

Generally speaking, the amount of apps is still small, while we’re progressing slowly towards a stable spec as well as 1.0 of our client library.


#3

Thanks, this is really helpful :-).

I think remoteStorage is a great feature, but as with SAFE, there is problem getting it adopted, and I guess the IdieHosts is a recognition that giving users control over where their data is hosted is not going to be easily solved with a handful of new apps when most users are going to want the massive range of apps available on existing hosting. Step one was I guess things like Softaculous, and hopefully IndiHosts can add to this on the migration side.

Much as I like it, I think its difficult to “sell” remoteStorage to app developers or to hosting services. I’m still going to consider adding support for it on SAFE though, so long as it is fairly straightforward - fingers crossed :-). I’m also looking at noBackend and offlineFirst frameworks, as well as CouchApps. My aim is to simplify building web apps, and make it easy for devs to port or write for this new backend. If you know of any others I might consider, please let me know - I’m not very knowledgable here so researching from scratch.

As for your apps, well I might add SAFE support myself ;-). Thanks again for your help.

By the way…

Glad you have heard about SAFE :slight_smile:


#4

If you can add remoteStorage support to SAFE itself, that’d be super-uber awesome!

I haven’t really looked into how SAFE would integrate in web apps, but in remoteStorage.js we do have experimental support for other backends, namely Google Drive and Dropbox, which we want to stabilize. I’d like it infinitely more if it were possible to proxy to SAFE via a standard remoteStorage API, but if it’s fairly straightforward (and possible), we could add support for that backend to the library as well.

Frankly, I have not only heard of SAFE, but I was quite excited at first. Unfortunately there was nothing to see for so long, that I lost interest mostly. Glad to see it’s alive and you guys are reaching out to developers.


#5

I’ve been looking at the API and so far it doesn’t look onerous to extend to SAFE as it provides a RESTful API (being implemented by the team right now, so details will be available soon).

I’ve not looked at the remoteStorage.js code yet, but from the API docs what I understand is that I would add a WireClient class (SAFE), which appears only to mandate the #get/#put/#delete methods which is good. There are potential limitations I think regarding SAFE because it is a key/value store rather than a filesystem, but we should be able to implement something useful. Let me know if what I’ve written is rubbish! :smile:

Forgive me if you already know some of this… SAFE has its own internet protocols (for routing, DNS etc) and is not part of the web. So to access SAFE storage would require the user to have a SAFE client running and authenticated, and to use a web browser with a plugin that understands SAFE URLs (e.g. safe://blah as opposed to http://blah). The latter will be built by MaidSafe, leaving us just needing to add the required backend classes to your RemoteStorage library. I’m not committed to doing this, just evaluating at this point.

I’ll take a look at the RemoteStorage code next, and then probably disappear for a while to look at other web app frameworks.


#6

Look what I just found: Maidsafe (proxy?) :smile:

The idea of a proxy would be that you have a remoteStorage API in front of SAFE via a server program that can speak the SAFE protocol. That way it would just be entirely compatible with plain remoteStorage, as long as you’re using an account on such a server.

That’s okay, because remoteStorage is also just a key/value store, yet with the additional feature of directory listings in JSON.


#7

Nice post :smile: - I didn’t think to search for MaidSafe here… doh!

If the proxy ran on the client that would be ok, sortof, but having it on a server defeats the security and anonymity provided by SAFE. We’d have to call it an unSAFE proxy :wink:

It would also not be easy to implement, because the proxy would have to be a SAFE node logged in as the user, exposing his SAFE credentials as well. Reallly not good. A browser based solution that keeps the SAFE client and user credentials on the client machine is best I think.


Maidsafe (proxy?)
#8

Alright, will wait for Web access to be released then.

If you want to implement it as an additional backend in remoteStorage.js, we’ll gladly help you do that. The library is a bit rough still and needs refactoring in a lot of places, so if something’s unclear, undocumented or not working as expected, just ask us here on the forums or in #remotestorage on Freenode anytime.


#9

Thanks @raucao you’re a star :smile:

I’ve just had a peek at your dropbox.js and it seems to confirm my wild assumptions about what would be involved, and given the equivalence between the get/put/delete interface you require on a remoteStorage.backend with SAFE’s REST API I’m assuming its easy (no doubt a bit rash but hey!)

It will certainly be worth me trying to implement this in conjunction with MaidSafe’s work on the browser extension and it will be very neat if I can use it to run the RS apps from the list you gave me. We could have them ready for the SAFE launch.

In case you want to check in with our activity in this area, there’s a topic I started over on the SAFE Network forum (also Discourse): Putting Web Apps on SAFENetwork by Adapting Existing Frameworks

Many thanks for your help so far. I’m keen to do this so I will take you up on your offer to help me when I get to it! :smile:


#10

Ok, cool.

You should also be aware of the fact that we’re in the process of extracting the widget and implementing a new design for it (which we already have) in order to optimize it for use with multiple backends. Multi-backend support is still an experimental, hidden feature and not integrated into production apps currently. I hope we have this ready within the next few weeks, but it might take a little bit longer.

What date is the SAFE launch planned?


#11

Thanks, all good. I think we’ll be fine whether ready or not. You can see the latest SAFE Network development roadmap which is due to have more detail (but no dates, we don’t do dates :-)), though detailed progress is visible in the maidsafe repo, which all have their own todo lists. Lots of PRs going on and libraries building - all ported to Rust in a few weeks - which has produced lots of benefits over the old C++.


#12

@raucao I’m revisiting this as SAFEnetwork (MaidSafe) has started running testnets and app developers are getting live access to the SAFE APIs. I haven’t much time but would love to try creating a simple CMS perhaps based on an existing remoteStorage app if I can find the time or more likely, some helpers over at the SAFEnetwork forum. Doing a quick search I see Laverna looks interesting - if you know of any others I should look at please let me know.

Anyway, the reason for this post is to ask about the status of remoteStorage - particularly as there has been so little activity here on the forum. Above you mention some re-factoring of the protocol, an experimental multi-backend etc. Can you give me a very brief update?

Thanks


New remotestorage.js backend: Safestore.js for SAFE Network
#13

I’m not sure I understand your question really. What exactly is it that you’re looking for? You want to port apps with RS integration to use MaidSafe instead?

Again, not sure what the exact question is here, so I’m just going to answer the points you mention:

Other than that, if you haven’t seen it yet, there’s now a server written in Rust, which might interest you, as MaidSafe is mostly written in it afaik. Also, php-remote-storage is now stable and up to date, so it’s our new recommended solution for self-hosting.


#14

Thanks - that’s what I wanted to know.

FYI I would need to extend remoteStorage.js to add support for the SAFE API (which would be on the client - accessed over an http proxy provided by an app which the user runs called, SAFE Launcher).

With that, obvs any existing apps would be able to use the user’s SAFE storage like a personal cloud server (from any device they use which is running the SAFE Launcher).

I would then be looking to build a CMS application that uses remoteStorage, and this would then provide a CMS for SAFE Network users (as well as users using other remoteStorage servers).

Since my post above I’ve found Litewriter as well as Laverna, so either might be useful. Also, I found some other tools that I’ve yet to look into which might also be useful in creating a website CMS: http://createjs.org and http://hatchjs.com/ (though the latter uses Redis so might be one for later :smile:

So I’m still trying to work out options, and then will look more into getting remoteStorage.js working with the SAFE API. Finger’s crossed it has everything we need.


#15

Ah, got it. So basically like we add Dropbox and Google Drive as options. Would actually be an exciting new option I think, as it’s both another open-source one, as well as the first one using a completely decentralized network as storage back-end.

There’s not really a CMS app based on RS yet. @michielbdejong was publishing his website on his storage in the past, and someone once created a TiddlyWiki RS integration iirc, but Laverna and Litewrite are note-taking apps (although Litewrite does have a share/publish option, so I guess one could call it a lightweight CMS for simple text content pages).

Let us know if/when we can help with that anytime!


#16

That’s why I need to create one :wink: I thought those were worth looking at to bootstrap me, and perhaps adapt. I have very little time available so will do quick and dirty and hope it gets others on board once they see what can be done and I can give some guidance.

Thanks for your help! :smile:


#17

@raucao where would you recommend I start with adding SAFE Network support to remoteStorage.js … github? Is there an guide on extending remotesStorage.js I can read.

I’ve found most of the docs including the API (here) but I haven’t yet found the code I know I saw previously for adding support for other services (Dropbox and Google Drive I think) which I think would be a good place for me to start. Do you have something like this?


#18

I guess a good place to start would be to peruse the Dropbox implementation, which is documented in its source code: https://github.com/remotestorage/remotestorage.js/blob/master/src/dropbox.js

It’s implementing its own WireClient basically, so that’s also a good place to look: https://github.com/remotestorage/remotestorage.js/blob/master/src/wireclient.js

If you search the whole src for dropbox you will also find some widget code which goes around and calls the connect function from the Dropbox class, when the Dropbox icon is clicked in the current widget. All of that is going to be removed, but the general concept (i.e. implementing a connect in the custom backend class) will stay the same.


#19

I added a new page to the wiki, which we could fill with content while adding MaidSafe to rs.js:

https://wiki.remotestorage.io/RemoteStorage.js:Adding_a_new_storage_back-end


#20

I moved a post to a new topic: Setting up a remoteStorage.js development environment