6 ms·
ShowHN: buddycloud, a distributed social network
Today we’re releasing a dev-preview of buddycloud and would love your feedback.
buddycloud is an extensible open source distributed social network. A user’s identity looks like user@domain.com and users share content in "channels".
We started buddycloud because of the growing “closed-ness” of existing social networks. For example Twitter’s increasing API contortions about what one can and can’t do with their API or which quadrant one is supposed to operate in. We also think it’s important to build services against a known protocol that works against any buddycloud instance on any domain (not paid-for APIs). Naturally this called for a completely decentralised design built on open standards like Atom, Activitystrea.ms and XMPP.
Each buddycloud-enabled domain runs a suite of servers. Each buddycloud server uses DNS to find, connect, and sync content in realtime with other buddycloud servers. This content can be any kind of structured data or large files.
Today we are releasing open source implementations of the following buddycloud servers: the buddycloud-channel server (shares your channel / your activity stream with trusted followers), a media server (shares anything from a small avatar to a multi-TB file), a push-server (email and mobile updates), and a taste engine (“channels you might like”). Some of the team are working on more servers that will let you suck content in and out of existing social networks.
Our reference implementations are written in Java and node and use Postgres for storing data. The web-client is built on backbone.js. There’s also a console client written in Python.
Next tasks: client speedup using IndexedDB. Following permissions, Android, iOS and Firefox OS clients and release buddycloud.js.
We really hope that some of this could be useful for your project:
- https://github.com/buddycloud
- wiki https://buddycloud.org
- demo instance at https://demo.buddycloud.org
- channel https://demo.buddycloud.org/team@topics.buddycloud.org
- Sami_Lehtinen 14y agoWith secushare security is one of the starting points. Simply having a distributed network doesn't mean it would be secure. If authentication and access management isn't done correctly, distributed network could be real security nightmare. See: http://secushare.org/ http://secushare.org/
- abcd_f 14y ago> ... a magically simple way. I'm sorry, but the only person who could plausibly pull off "magically" in a product description was Jobs. I would strongly suggest rewording this part so not lose people in the first 3 seconds on the site.
- imaginator 14y agoI had been meaning to change that. Thanks https://github.com/buddycloud/webclient/commit/d7cc1f43103dded57b56697d06006fcc145e9ed9 https://github.com/buddycloud/webclient/commit/d7cc1f43103dd...
- deleted 14y ago[deleted]
- kbateman 14y agoExcellent news, good luck and good progress. Good to see such rapid progress to this release !
- jqueryin 14y agoClickable links to save you keystrokes: Repos - https://github.com/buddycloud https://github.com/buddycloud Wiki - https://buddycloud.org https://buddycloud.org Demo - https://demo.buddycloud.org https://demo.buddycloud.org Channel - https://demo.buddycloud.org/team@topics.buddycloud.org https://demo.buddycloud.org/team@topics.buddycloud.org
- imaginator 14y agoSimon (https://demo.buddycloud.org/simon@buddycloud.org https://demo.buddycloud.org/simon@buddycloud.org) from the buddycloud team here. Happy to answer any questions about the bc architecture or our approach.
- daenney 14y agoObvious question maybe but how does BuddyCloud compare to (and perhaps integrate with) Diaspora?
- Narretz 14y agoI remember another effort in distributed social networking, from some months ago. Forgot the name though.
- premasagar 14y agohttp://tent.io http://tent.io ?
- imaginator 14y agoThere's two three things that count when building a distributed social network: easy to use client APIs, Server APIs (how do servers find and connect, catch up, etc) and a reference implementation. I'm not sure that Diaspora has a defined server-to-server API or a client API (can someone more aware of their progress comment). On buddycloud Each domain runs an HTTP API server (https://buddycloud.org/wiki/Buddycloud_HTTP_API https://buddycloud.org/wiki/Buddycloud_HTTP_API) that clients can connect to on their home domain (eg if you are james@giantpeach.com, you connect to something like http-api.giantpeach.com). And servers use XMPP to exchange between one another. Then there is Tentd. I like what they are doing. I think their approach is that every user is a server (your id is http://me.domain.com http://me.domain.com). I'm not quit sure how they federate or resync messages when nodes go down. Can anyone comment on how they federate?
- deleted 14y ago[deleted]
- Nux 14y agoYet another thing nobody will use, but I guess at least it's a nice learning experience for the devs. Good luck!
- sauteedbiscuits 14y ago"Yet another thing nobody will use" said a active member of the incredibly popular centos remix, stella. When asked about whats next for stella, nux was heavily focused on just getting his first dollar in revenue. translation: Do not be a dick about other peoples stuff, especially when you have built things yourself which are less than noteworthy. * http://li.nux.ro/stella/ http://li.nux.ro/stella/
- Nux 14y agoFirst, calling someone a dick while being a dick yourself is not very funny at all. Second, it may be hard to believe, but I was not actually being malicious. I _really_ want one of these projects to succeed, but I've learned to hold my horses ever since Diaspora. Third, leave my Stella alone.
- carloc 14y agoI second this. Negative opinion has no place here. Worrisome facts, yes. Potential problems and helpful strategies, yes. Discouraging opinion with nothing to back it up, no. Facebook is a huge, ugly blob and we urgently need something to replace it that is not organized from the top down. Yay to buddycloud!
- gbraad 14y agoSimon, great news! Things have moved along since our last talk at FOSDEM. :-)
- e12e 14y agoVery nice, from a quick look this looks closer to my design sketches for an open social network than the earlier contenders. It wasn't entirely clear from a quick look at the wiki: What is postgresql used for? Metadata on media? How is authentication handled? Apologies if I overlooked some obvious documentation (I confess I haven't looked at the code). Are there any good comprehensive design overview documents? I'd be interested in how much would be needed to (re)implement a stand alone version, running on a single technology for easy low-scale deployment (eg: running xmpp, mediaserver and api(?)-server all on top of nodejs, or via simple go-based servers)?
- imaginator 14y agoPostgreSQL is used for storing channels (users posts, subscriptions, etc.) and metadata on media. Authentication is handled by the XMPP server - Prosody, ejabberd, OpenFire, etc. The XMPP protocol is documented on https://buddycloud.org/wiki/XMPP_XEP https://buddycloud.org/wiki/XMPP_XEP, and the HTTP API on https://buddycloud.org/wiki/Buddycloud_HTTP_API https://buddycloud.org/wiki/Buddycloud_HTTP_API. Right now if you want to use a single technology I think the best would be to use nodejs: the channels server and HTTP API are running on it. The problem will be the XMPP server (I don't think node-xmpp can handle that). The media server is written in Java, so a complete rewrite would be needed (but the media server is optional). And I'd love to see all of that in Go, but last time I checked its XMPP libraries were not usable enough for what we'd need.
- adrianwaj 14y agoAny way you can make it more appealing to bitcoiners?
- imaginator 14y agoI like bitcoin: it started out as a protocol and reference implementation. That's what we are trying to do today. And I wouldn't be surprised if there is a a large overlap between bitcoin-ers and buddycloud-ers. Encryption (Client to server connections are encrypted. Server to server connections are also encrypted.) And Decentralised. And built around a common protocol.
- mtgx 14y agoIf you can add more encryption protocols in the future like OTR for chats, and so on, please do. But of course don't let this distract you right now. Your #1 goal now is actually get people moving away from the closed networks like Facebook, and I guess you can add more encryption/anonymity stuff later on. But it could be important to keep this in mind while you build the service up, so you don't need a major overhaul later to add them.
- imaginator 14y agoThe difficult part is always key management: making a service that my mom can understand and manage and "just works". Our federation layer is built on XMPP. That gives us a pretty solid layer to extend chat and interoperate with gtalk and other chat services including video via Jingle.
- adrianwaj 14y agoYeah, nice work. My own thoughts: you want to have people coming together to engage in commerce on buddycloud with btc as the preferred currency, like what paypal is to ebay. Maybe make the server appealing to install on bitcoin servers and have the network as the preferred way to discuss transactions and record a list of transactions and interactions.
- Giszmo 14y ago
- juanbyrge 14y agoAre any of my friends on it ?
- imaginator 14y agoSo we have to solve three big problems: build a distributed architecture, build great reference clients, get massive adoption. We've almost solved two of those and have a team working on the third problem: https://buddycloud.org/wiki/K-Factor_Project https://buddycloud.org/wiki/K-Factor_Project tl;dr * find existing friends on buddycloud using other social networks as pointers * post out to existing social networks * give users a way to invite Twitter, FB etc friends in * build a build a Facebook vacuum-cleaner that helps move a users existing content over (depending on API restrictions).
- earroway 14y agoGreat idea. Wish the project much success. Once it is further along, my startup will give this product a shot -- in particular the java server integration is of interest to me. Whenever a module/feature gets completed, please consider creating short how-to docs/videos. This is a consumer oriented product, so friction to deploy should be minimal.
- imaginator 14y agoGood idea. Thanks. We're also working to solve the problems by keeping the design as intuitive as possible. Media sharing should be just a question of dragging and dropping the file in to the channel posting box (we're going to work on this frontend bit next). The java server (https://github.com/buddycloud/buddycloud-server-java https://github.com/buddycloud/buddycloud-server-java) is nearly feature complete and being implemented by a company called Surevine who plan on using it for "enterprise" customers.
- flyinRyan 14y agoHow will you generate revenue?
- imaginator 14y agoWordpress is free and open source - and help users that don't want to host their own blog with a simple way to host a blog on wordpress.com. If a user can spin-up a hosted buddycloud instance on their domain, that's got to be useful for them.
- ojr 14y agoThe one luring problem with these distributed social network sites are the transparency with the target audience and its creators, most of your most potential audience is not going to care much of how the backend is constructed, rather your users will focus on the design of the app and what they can see, the field of distributed networks is an interesting one and wrangling with apis and libraries is where I feel web programming will be heading for a long time, good luck in your distributed/startup endeavors!
- imaginator 14y agoAgreed: we have to focus on two levels - users and devs: This post has a more dev focus but we know that the look and feel and functionality for users is really important. To see what we are working on check out our prototypes that are now being incorporated: https://demo.buddycloud.org/prototypes/ https://demo.buddycloud.org/prototypes/ and Felix's paperfold effect: https://developer.mozilla.org/en-US/demos/detail/paperfold-css https://developer.mozilla.org/en-US/demos/detail/paperfold-c...
- ojr 14y agoI've seen the paperfold effect a while ago, very nice , count me in as an early adopter, the non-distributed model works though and I dont understand why it is so frown upon among the hackernews circles. I for one care more about the frontend than the backend, in which both for buddycloud is nice, the team is talented o@buddycloud.org ;)