April, 2010


27
Apr 10

Questions for the Diaspora

So lots of friends were tweeting this morning about Diaspora, a project to raise funds to get a summer’s worth of hacking done on a distributed, Libre social network. A distributed, Libre social network would be a terrific thing to have; I’d love to support it. And I love the eager energy I’m seeing around Diaspora.


Questioned Proposal, by Eleaf, used under CC-BY

But I’m also keenly aware that distributed social networks are hard, and so I’d only give of my money (or my time) to someone who looks like they have what it takes to take a serious stab at the problem. They’re hard:

  • as a design question: how do you make a social network whose UI doesn’t suck?
  • as a technical question: the code involved is complex, particularly if you want to interoperate robustly with other platforms, and doubly so if you want to do that with proprietary platforms.
  • as a social question: getting users to migrate is not easy.

So here are some questions for Diaspora, or really for anyone working in this space. These are not questions with right answers, necessarily. But anyone serious about solving this problem probably has at least some answers for them, so showing that you’ve given them some thought will go a long way towards convincing people that you’re serious about attacking the problem. If you haven’t given them thought yet, I could think of worse places to start. :)

  • What do you think are the most important features a social network should have? How would you prioritize them? Do you plan to Build Less or go big? If building less, what is the minimal set of features you can get away with?
  • DiSo is now two-plus years old. Any ideas why it didn’t get off the ground? Bonus points: same question for Mugshot.
  • What standards, if any, do you plan to work with/build on? (just to throw out a couple, all of which have strengths and flaws to consider: webfinger, oauth, xauth, the buzz APIs.)
  • What other services, if any, do you want to interoperate with? why? how will you prioritize?
  • Any other Libre code bases in the same space you’d like to work with? GNU Social? StatusNet? What ones are you aware of, and why will you/won’t you build on/work with those?
  • Would a smarter client (like Mozilla Contacts) be useful to you? If so, how?
  • What is the strategy to get to a critical mass of users (or avoid having to get a critical mass?)
  • What are your three favorite books on software development? three favorite essays? what about on design?

I don’t mean to ask these questions to piss on anyone’s parade; I deeply want to believe. Heck, what I want to do is fly to New York, sit down in a room, and help you brainstorm and plan. But unfortunately I’m a pragmatist with a day job. I can’t directly help out. So instead I offer these questions. Answer these1 and you’ll begin convincing people that you are also pragmatists: that you’ve thought hard about the questions at hand and you are worth investing in. And I’ll be first in line to do that.

(I should note that unlike some I don’t need code; I think code that is created without much thinking is all too common and frequently damaging. But if you don’t have code, I suggest doing planning- and talking about it- before doing a PR week. :)

  1. or questions like these- you’ll note I skipped some hard ones like ‘business model?’ []

22
Apr 10

three features I’d love in leechblock

I love leechblock. It really helps keep my life sane. I was working some with it this morning to tweak my settings, and it seemed like a good time to write about three features I’d kill for, even to the point of putting up money for them if there were a way to sponsor features (or sponsor third-party hacking- bounties, if you will):

  1. ‘block all sites except this one for ____ minutes’- a button that blocks the browser from going to any other domain for ____ minutes. Sort of like Freedom but with an out for one specific website (and obviously only for your browser.) Goal would be to allow you to focus on one site for 45-50 minutes, so it should probably close or block access to other tabs as well.
  2. ‘no, I really need this’- give an option (probably a popup of some sort?) that allows you to break through leechblock in the off case you really need something. For example, I like to block nytimes.com all the time, but (when I was editing a journal) I often needed to access a times article to confirm a claim in an article. This would obviously require some sort of time-consuming task in order to prevent you from ‘just’ clicking through all the time- probably something like a series of captchas, or just typing in a specific series of random characters that can’t be copied/pasted.
  3. ‘this page has an RSS feed: subscribe to it and add it to leechblock? [yes/no/don't ask again for this domain]‘- one of the strategies that has helped save me over the past few years is aggressively subscribing to feeds, blocking the actual domains, and then only visiting them when I’m in feedreading mode. Making that semi-automatic, and easy to do, would be terrific.

It may well be time to port leechblock to jetpack and rethink the UI as well, but those are bigger projects that I can’t randomly beg (or bribe) people to do.


13
Apr 10

a quick vent about the structure of online agreements

I completely understand why many startups have terms of service with terrible content- providing terms of service whose content is fair to the user is incredibly risky and/or expensive (though it isn’t unheard of).

But there is just no excuse for terms of service with terrible organization, especially when you’re trying to sell services to real companies who might (gasp) actually have someone read the damn things. Having a well written document doesn’t cost you anything. If it should be two separate documents, make it two separate documents, and not one (which is what set me off on this rant). If it should be five documents… wait, it should never be five documents.

So please, think of the lawyers. Write your terms of service in a comprehensible, sane structure today.

This has been a public service announcement; we now return you to your regularly scheduled kvetching.


4
Apr 10

building software to let me read more and less at the same time?

There are lots of sources of links these days- delicious, twitter, and blogs. Many of these are interesting, but not so interesting that I want to read them all the time. Currently I have to decide either to read or not read these people.

I’d like to add a third option: to have a ‘middle’ pool of sources who I don’t read directly, but who are monitored and serve as pointers to other, interesting things. I think having such a third option would let me read less (because I’d stop skimming these intermediate sources), but still also give me fairly good confidence that I’m not missing important things that I should read.

The outline of the software in my head goes something like this:

Step 1: User provides a list of RSS feeds (a mix of blogs, twitter/identica, and delicious feeds).

Step 2: A harvester collects the contents of said RSS feeds.1

Step 3: Parse the content of those feeds for URLs and dump them in a db.2

Step 4: Unshorten the URLs if necessary. 3

Step 5: When a particular url has been mentioned X times in the past Y days4, fetch the URL5, find the content within it6, and jam it in an RSS feed for consumption along with the rest of my top-level RSS feeds.

Bonus step: mash up snippets from the posts/twitters/delicious feeds to provide context for the URL’s content, similar to what Google Reader does when friends comment on a feed item.

I feel like someone must have done this already. If not, the pieces are available (see the footnotes for details on many of the pieces); I sure wish I had the time/skill to put them together myself. :/ This project is one of the things I wish we had more reliable bounty infrastructure for- I’d actually put money up for it if I thought there were a reliable way to get some matching funds and find good developers for it.

Ideas, either about the rough feature sketch, existing software that fits this need, or about methods to make it happen, are all welcome.

  1. Planet is an example of infrastructure that does this. []
  2. Planet’s meme plugin can do this. []
  3. There are scripts and web services available for this; the basics aren’t that complicated. []
  4. again, meme plugin has this concept already implemented []
  5. not in memeplugin- it only provides links []
  6. not trivial, but source is available that does this via readability []

This work by Luis Villa is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States.