Aug 07, 2007 00:44
Ever since the Strikethrough of '07 -- actually, ever since I realized that LJ was something of an attractive nuisance of basket in which to store eggs, way back when -- I've been thinking about how one would go about turning LJ, the software, from a client/server model to a peer-to-peer model. That is, how to make LJ distributed.
At first it was a pipe dream. But then LJ adopted OpenID. Guys, I think this is do-able. Friends lists, friends pages, filters, syndication, syndication subscription, pictures, birthdays, notifications, almost everything. Things I can't see as plausible are username uniqueness, text posting and phone posting, LJ-wide searching, and Interests [*]. And permanent accounts and "gifts"[**] :). But other than that, off the top of my head...
Yeah. An installable LJ thingumy which you could run at your own account at any hosting company. I would require a domain name, Linux or equiv, MySQL, whatever language LJ is written in (perl?) and some configuration stuff including access to an outgoing SMTP, all of which is dead standard for hosting services.
All your posts on your own server. With all the comments made on them on your own server.
[* But I know somebody whose PhD thesis was solving (IIUC) exactly this problem, so maybe it is possible.]
[** Though an enterprising third party, or even the development team, could build in a gift system, I suppose.]
FAQ:
1) Q. Wait, isn't LJ (the software) already open source?
A. Mu. Yes, LJ is already open source. But every LJ install is an island. Your LJ-LJ can't friend a Deadjournal-LJ (not really, just as an RSS feed). Furthermore, LJ is built -- and heavily optimized for -- having a bajillion user accounts on one server/install. That's both unnecessary and counterproductive to making a peer-to-peer LJ. And besides, if it's your own server, you should be able to have all the userpics your little heart desires.
2) Q. But... I'm invested in using LJ.
A. Oh, this puppy would be able to slurp in your LJ. All of it. For reals. Indeed, it should be able to build such a thing such that it stores your credentials and keeps itself synchronized with your LJ, or LJ-clone. Then you would have the choice of moving to your own server or simply using your own server as a backup.
If you move to your own server, you would probably want to keep your LJ account for access to friends' flocked posts. They would only be able to read your public posts (via syndication) on their LJ friends pages, but would be able to read the appropriate flocked posts on your own server if they go there directly. Of course, if this all took off and LJ/6A decided to roll will it, they might build in interoperability with LJdist on their end.
But interoperability between LJdist journals across the internet would be seamless. So if you and all your friends were to all go set up your own hosted LJdists, they'd interoperate like one big LJ.
3) Q. Communities?
A. A community is just a journal with complicated privileges, so in LJdist land, a community is just another LJdist. Which means someone would have to decide to run it on his server. Or some enterprising hosting company could decide to use LJdist to sell turn-key communities to LJdist users.
4) Q. Wait, this can't be that simple.
A. It's not. It's serveral kinds of not simple. On the back end, this is probably a kinda gruesome coding project. LJ is, as I understand it, kind of a vast code base, all of which would have to be adapted. On the user end, LJdist would require more work and more money. You'd have to pay for hosting. You'd have to pay for a domain name. If you wanted secure log in, you'd have to pay for your own SSL certificate. You'd have to install and maintain this thing yourself. You have to worry about your own backups and server uptimes and power outages and traffic quota. There'd be no LJhelp (except in the normal open source sense).
There'd be no free or "plus" accounts, unless some enterprising hosting company decided to make them. There are "security" issues which aren't so much security as things we are accustomed to LJ making sure doesn't happen on their servers (e.g., if you're running your own LJdist, nothing is there to stop you putting ads in to your post body, except peer pressure.)
In some important senses, LJdist LJs becomes less anonymous -- with no anonymous accounts, there are no ways to have an LJ without being tied to a funding source, e.g. credit card. Your hosting company will know who you are. Or will know who who pays for your bill is.
LJdists would also be more politically vulnerable in some ways. Right now, large numbers of LJ users can band together and raise a stink with 6A. Of course, if that worked so well, we wouldn't be having this conversation, would we? But singleton LJdists would have no leverage with their hosting companies at all, except in that a bunch of people might have them at the same hosting company; and to an extent (but not entirely) having a large number at one company defeats the purpose of having distributed LJ.
And hosting companies aren't as diverse or as distributed as you might think. When I was shopping for one, I discovered a whole lot of them had really repressive ToSs. For instance, a bunch had a term that use of "profanity" on any of your website's pages was grounds for terminating your account. They were in Utah as I recall. And, disturbingly, there's a trend for big hosting companies to buy little hosting companies (just as 6A acquired LJ). This means that the number of hosting companies will go down and eventually collapse into a small number of viable players. (This has already happened in the shell hosting industry.)
5) Q. Wow, you should totally go do this.
A. 1) I have a life. No, really. 2) This is way over my head. Not that I couldn't do it, just that it would take me a long, long time to learn all the necessary protocols and familiarize myself with the back end of LJ. I mean, I don't even know MySQL per se. And I've never played with RSS, OpenID, etc. 3) It's way too much work for one coder to do (I think; not sure). Even if one person could present an LJdist, it's prudent to have a bunch of people working on the project thinking through the security issues, which here are pretty complex.
So I thought I would put it to my friends list. What do you think of the idea? Are there people out there who would want to work on such a thing? Ideally people with expertise in the involved technologies?
tech,
lj