12 ms·
Kinto – open-source alternative to Firebase and Parse
- ndesaulniers 11y agoHeh, so last week my buddy Tarek Ziade (one of the developers of this) and I were talking about this (kinto) project he's working on. I asked him what the meaning behind the name was. He said "you know the cloud from Dragon Ball. They don't use it as much in DBZ since they can fly." I asked him if he meant "flying Nimbus?" Apparently, something was lost in translation (I'm in the US, he's in France).
- mikexstudios 11y agoWell, "kinto" is the name for the cloud in Japanese (see: http://dragonball.wikia.com/wiki/Flying_Nimbus http://dragonball.wikia.com/wiki/Flying_Nimbus).
- tarekmoz 11y agoYeah the full name is "Kinto-un" :)
- simple10 11y agoFrom the Dockerfile [1], it looks like it's built on top of postgres. I'm excited to see if anyone uses Kinto for more than a weekend project. [1] https://github.com/Kinto/kinto/blob/master/Dockerfile https://github.com/Kinto/kinto/blob/master/Dockerfile
- rhizome31 11y agoFrom the Overview page: At Mozilla, Kinto is used in Firefox and Firefox OS for global synchronization of settings and assets, as well as a first-class solution for personal data in browser extensions and Web apps.
- sbarre 11y agoSo I read through the docs for a few minutes and something wasn't entirely clear.. It shows "offline-first design" so does that mean I can use it as a local storage in the browser/device, and it can sync later to a server?
- arosequist 11y agoThat's what it looks like [1]. Every operation is done locally via IndexedDB, and then you manually perform syncs. [1] https://kintojs.readthedocs.org/en/latest/ https://kintojs.readthedocs.org/en/latest/
- quantisan 11y agoGreat! We run Firebase in production. Offline-first is one of the most important features for us. (I know, Firebase isn't there yet) I'm surprised this isn't showcased more prominently on their marketing.
- jamest 11y agoFirebase does have offline support for iOS/Android[1]. Web support is coming. [1] https://www.firebase.com/blog/2015-05-29-announcing-mobile-offline-support.html https://www.firebase.com/blog/2015-05-29-announcing-mobile-o...
- chrstphrhrt 11y agoThis looks really cool. Do you have a gitter channel or something? Would love to talk shop about the design decisions! Email me at chris at ramses dot tech. (I'm one of the devs of http://ramses.tech http://ramses.tech)
- vladikoff 11y agoThere is an irc channel, join #storage on Mozilla IRC https://search.mibbit.com/networks/Mozilla/%23storage https://search.mibbit.com/networks/Mozilla/%23storage
- rbranson 11y agoIsn't one of the main benefits of something like Firebase or Parse that you don't have to run it? It's nice that Kinto packages the stack together and provides plug-and-play APIs, but there's quite a bit of expertise and overhead operating a backend stack in production.
- metasean 11y agoWe're actually building an open-source alternative to services like Firebase and Parse. Ours is a fully peer-to-peer, real-time, graph database that doesn't require a lot of expertise or overhead, and is extensible. http://gun.js.org/ http://gun.js.org/ / https://github.com/amark/gun https://github.com/amark/gun / https://gitter.im/amark/gun https://gitter.im/amark/gun
- mxuribe 11y agoI believe, really, its more about being indie and such. Its the same reason many people can just run gmail - or google apps for your domain - as opposed to the heavy-lifting of running your own email server, etc. Not like I'm an expert, but running one's email - and ensuring high degree of deliverability nowadays - is quite difficult. There are those who choose to run something on their own, maybe to learn, maybe for privacy's sake, etc. I'm sure those who do so, dive in with their eyes wide open. ;-)
- aidos 11y agoMaybe, but there are others of us who don't use firebase because we can't outsource our datastore like that. It goes both ways.
- cristoph 11y agoYou can use Parse an Firebase to store sensitive data by applying client side encryption. Of course one of the biggest problem is: how do you query that data since it's encrypted. But lately, there are some start-ups that aim to make encryption searchable. See ZeroDB, CryptDB, IQrypt.- the last one is designed to be used for Parse and Firebase: http://iqrypt.com/docs/Home/ http://iqrypt.com/docs/Home/
- 11y ago
- Raed667 11y agoLooks impressive, but as a Parse user I think that the selling point are the open-sourced SDKs for lots of platforms. EDIT: this seems to be lacking a graphical administration panel as well.
- harunurhan 11y agoI agree with you, but I think SDKs for at least Android and iOS will be available very soon.
- maxwin 11y agoAgree.They should at least have Android and ios SDK.
- tarekmoz 11y ago> this seems to be lacking a graphical administration panel as well we are working on one, that's almost ready. Should be released sometimes during Q1
- Raed667 11y agoGreat, I'm really excited about testing this on my VPS. Hope it handle the load.
- 0k1n 11y agohttps://github.com/Kinto/kinto-admin https://github.com/Kinto/kinto-admin
- deleted 11y ago[deleted]
- vskarine 11y agoWould be nice if they included RethinkDB in comparison as well
- miles_matthias 11y agoI'm a big fan of services like Parse & Firebase so it's cool to see something open source and independent get released. I've never made the jump to use Parse or Firebase in production though because inevitably I have to write some custom server code to do some integration. For example - payments with Stripe. Charges should only occur on your server (not on the client) but I've yet to see anyone allow you to configure a payment trigger in one of these services.
- acgourley 11y agoWe use parse with stripe. The client drives the transaction and then stripe hits your parse cloud function via webhook with the confirmation.
- chuinard 11y agoI've done exactly that - integrated Stripe with our Firebase-backed app (https://play.google.com/store/apps/details?id=com.twansoftware.invoicemakerpro&hl=en https://play.google.com/store/apps/details?id=com.twansoftwa...). My method was to use App Engine as the callback component to handle Stripe webhooks. I also do have custom server code, which was a little bit tough to get going, but it's great having a dedicated Linux box as well.
- subpixel 11y agoBasically, you need a service running on a separate server to implement these sorts of integrations. If Firebase is a long-term part of your stack, I agree that sounds unappealing, b/c the reason you're paying Firebase is so you don't need to wrangle a server. You may think differently if you're using Firebase as the fastest way to get an MVP up and running (that happens to be my use case)
- doczoidberg 11y agoOf course you can use firebase also in combination with server side code. It is no reason not to use firebase because you use server side code. I use firebase and SQL at the same time. It works quite good if you know what you do.
- andreyf 11y agoIt's not really an alternative to Firebase until you have change notification and a similar scaling model (i.e. scale by throwing money at it).
- jondubois 11y agoI'm not a big fan of offline storage for web apps. Any serious app will quickly exceed the localStorage limit which is only 5mb. I would also question the decision to use HTTP for this purpose instead of WebSockets.
- daleharvey 11y agoIndexedDB is not limited to 5MB, its essentially unlimited in Chrome and Firefox. It can be tricky with mobile browsers but they often also have the option of using an unlimited web app wrapper (http://www.html5rocks.com/en/tutorials/offline/quota-research/ http://www.html5rocks.com/en/tutorials/offline/quota-researc...) And as for WebSockets, HTTP is easier to debug and experiment with, in my experience the performance difference for the typical use cases is negligible and when needed it is trivial to wrap the communication in a socket.
- striking 11y agoWebSockets are for fast, low-overhead connections. If you end up making a new HTTP connection for every update, and there are a lot of updates happening, you should be using WebSockets instead. Otherwise, HTTP works best. It has better tooling and will soon be even faster due to HTTP/2.
- Jx271 11y agoIt really is a challenge. I don't think it'll be realistic to build mid-size, fully offline web apps (excluding tools like electron) until indexedDB has wider support. One solution is to garbage collect the oldest data from localStorage and sync with a server when you've got connection, but once you're offline you're kinda stuck with 5mb. However, caniuse.com/#feat=indexeddb is optimistic about the future. The company I work for is trying to make offline/decentralized apps more realistic (gundb.io, github.com/amark/gun) and storage limitations can be aggravating at times.
- wolframhempel 11y agoSeems comparable to http://deepstream.io http://deepstream.io
- sweetiewill 11y agoWould have to throw in Couchbase Mobile for comparisons too. It is Open Sourced as well and it provides the offline component with abstraction to sync-ing which is one of the most difficult features/problems it solves. http://developer.couchbase.com/documentation/mobile/1.1.0/develop/training/build-first-ios-app/index.html http://developer.couchbase.com/documentation/mobile/1.1.0/de...
- fiatjaf 11y agoWhy not CouchDB + PouchDB? It's offline first and replicates over HTTP. For more fine-grained permissions and other features I'm also developing a small Go database compatible with PouchDB at https://github.com/fiatjaf/summadb https://github.com/fiatjaf/summadb I hope it will be able to sync through websockets soon.
- jchrisa 11y agoYou might be interested in https://github.com/couchbase/sync_gateway https://github.com/couchbase/sync_gateway which is the Couchbase Mobile access control and sync layer (compatible with PouchDB etc). It has fine grained access control based on a channel metaphor. And it's also written in Go, so you might be interested in using parts of it. Specifically if you wrap your storage layer in a facade that looks like https://github.com/couchbaselabs/walrus https://github.com/couchbaselabs/walrus you'll be able to use our suite of storage layers, and we'll be able to use yours. That means it'd be trivial to swap out your storage for something scalable like Couchbase Server, or something tiny and embedded like ForestDB or RocksDB.
- fiatjaf 11y agoThank you, jchris. As far as I could understand, basically I must implement the Bucket interface[1]? I don't if that will work, since I'm storing things in a somewhat different manner, but it's definitely worth examining. [1]: https://github.com/couchbase/sg-bucket/blob/master/bucket.go https://github.com/couchbase/sg-bucket/blob/master/bucket.go
- jchrisa 11y agoThat's right. If you find you enjoy that code... Couchbase is always looking for great engineers!
- MCRed 11y agoOr Couchbase + Sync_Gateway + PouchDB / CouchbaseLite? This is a very full featured combination, basically a PaaS/BaaS with sync, and user accounts, out of the box. http://www.couchbase.com/nosql-databases/couchbase-mobile http://www.couchbase.com/nosql-databases/couchbase-mobile Note, while that website is very corporate, the software is open source and the company is very supportive of developers.
- sktrdie 11y agoDoes anybody know about databases that talk WebSockets rather than HTTP? For frontend apps it seems more logical to use WebSockets. Dealing with AJAX and understanding how to manage all of that on the client is still a huge dilemma in the React/Flux/Angular community.
- fiatjaf 11y agoThere's https://github.com/nolanlawson/socket-pouch https://github.com/nolanlawson/socket-pouch. It's Node + LevelDB and optionally offline-first.
- brianzelip 11y agoRethingDB[0] talks WebSockets. [0]http://rethinkdb.com/ http://rethinkdb.com/
- metasean 11y agoGUN defaults to WebSockets - http://gun.js.org/ http://gun.js.org/ / https://github.com/amark/gun https://github.com/amark/gun / https://gitter.im/amark/gun https://gitter.im/amark/gun
- mikaelmorvan 11y agoHi, at zetapush (http://zetapush.com http://zetapush.com), we provide a realtime BaaS with database, file storage, search engine, ... everything with a websocket connection. You can use our javascript SDK to connect to our clusters.
- inlined 11y agoFirebase's JavaScript SDK uses WebSockets when available and falls back to HTTPS when unavailable.
- jonpaul 11y agoI'll throw in an article that I wrote about building an open source Firebase clone: http://procbits.com/2014/01/06/poor-mans-firebase-leveldb-rest-and-websockets http://procbits.com/2014/01/06/poor-mans-firebase-leveldb-re... / https://github.com/jprichardson/iceden https://github.com/jprichardson/iceden. Written in Node.js.
- jamesw6811 11y agoFor creating a customized web API easily, we are considering http://loopback.io/ http://loopback.io/ and https://www.dreamfactory.com/ https://www.dreamfactory.com/ -- I wonder how these compare to Kinto.
- smithclay 11y agoAt this point, are there any major tech organizations who haven't jumped on the Backend-as-a-service bandwagon? Kinto - Mozilla, CloudKit - Apple, Parse - Facebook, Firebase - Google, Azure Mobile Services - Microsoft, Mobile Hub - Amazon, Usergrid - Apache Foundation ... and many, many startups.
- avinassh 11y ago> Kinto is a server allowing you to store and synchronize arbitrary data, attached to your Firefox account. Why does the repo readme says this? What does it mean? I mean, why Parse kinda service is related and attached to Firefox account?
- tarekmoz 11y agoIt was our first use case at Mozilla when we started the tool. This sentence is now a bit misleading. Thanks for pointing this out.
- brodo 11y agoThis isn't really a complete replacement for Parse or Firebase as far as I can see. Apache Usergrid and Baasbox both provide more of the features that Firebase and Parse provide.
- estefan 11y agoIf the parse web site wasn't such useless shit I might actually be able to work out whether this really is a good alternative... :-(
- ametaireau 11y agoWe put together an answer to the questions that arised in this thread. Hope this helps: http://www.servicedenuages.fr/en/hackernews-feedback http://www.servicedenuages.fr/en/hackernews-feedback