Hi @joshuef, we agree on the imporant issue, but I’m still not sure I’ve adequately explained my thinking so let me know if there’s anything puzzling about my reasoning.
I do agree that any existing CouchApp will assume extra functionally that is not in SAFE REST making it a significant task to port at least the first one, but that’s not the only reason I’m thinking CouchDB is a good choice.
I don’t yet see an advantage in using Firebase over CouchDB, though this may be the case, so I’d like us to examine the pros and cons before you home in on Firebase.
And if anyone reading this thinks there’s another, even better way to go for what I’m outlining here, please say cos right now it’s easy to switch.
Aims
Also, I agree that the priority, and biggest challenge, is to work out what data structures to store and how operate on them with multiple users.
Frameworks
Firebase and CouchDB are roughly equivalent in some areas we care about: both can easily substitute for SAFE REST, both can be run locally for development, and both are easily available as services if we want to open that out to multiple users (although I would expect SAFE REST to be operational before we are in a position to do that, so I’m not sure that will matter).
I don’t know Firebase at all, so there may be things that mean it’s a better choice for our needs, but for now, I’m only aware of plus points for CouchDB.
Server Side Features = Simpler is Best
Our architecture is essentially noBackend = very simple server side functionality.
So for playing with and adapting, we want something as close to this as possible, which means a DB with very little cleverness in the server, and a client app framework that expects little from the server.
CouchDB is very simple on the DB side - it’s server functionality is very limited (because it’s main selling point is doing sync better than anything else). So it’s web app framework is close to what we need, or at least closer than a framework built to talk to a cleverer database server.
So if Firebase is cleverer on the server side than CouchDB, that doesn’t help us, and would mean any client side stuff will expect more from the server and be harder for us to make use of.
So we need to understand how Firebase/CouchDB compare in terms of what each of their client side frameworks/apps expect from the server - as little as possible being the ideal.
CouchApp
The other aspect of using CouchDB that attracted me was, as you know, CouchApp.
CouchApp is a command line interface that helps build and deploy web apps. With one command you can create a template web app that can be deployed to a CouchDB with another single command.
We could fork this to do the same for a SAFE web app framework. So with two “SafeApp” commands a web dev could have a test web app deployed and working on SAFE!
EDIT: And to work locally, they just install CouchDB and deploy to that.
Also, there are many simple CouchApps that we could use for inspiration, or port to SAFE to create a nice suite of examples to inspire other devs.
Firebase Question
I haven’t looked at Firebase, so maybe it can do these or other things that give it advantages we should consider. I know @Viv suggested it would be useful for this kind of project, so maybe you and he could say more about this if you think it has advantages for what we have planned for SAFEpress?
So let’s have a discussion of this, why Firebase rather than CouchDB? before proceeding.
BTW Firebase is Mozilla, and CouchDB / CouchApp is Apache. I’m not sure if this has any bearing.