Showing posts with label delicious. Show all posts
Showing posts with label delicious. Show all posts

25 December 2010

God Rest Ye Social Bookmarkers

’Tis the season to be merry and last night, our local troupe, the Bartz Carol singers were out in force. Although I’m not confident I caught the words correctly, my impression is they were singing some slightly non-traditional carols. This was what I think I heard.

God rest ye social bookmarkers
Let nothing you dismay
For Carol Bartz our nemesis
Was brought to clear the way
To save us all from Yahoo’s power
When we were gone astray
While tagging our bookmarks of the web
Of the web
While tagging our bookmarks of the web.

At pinboard in in India
A saviour site was born
And brought to life by Maciej
Upon one blessed morn
The which the other social sites
did tattle and scorn
While tagging our bookmarks of the web
Of the web
While tagging our bookmarks of the web.

From Joshua, the father,
A tweet it emanates
That Yahoo talks to everyone
except he who creates
The Tasty and Delicious things
that Yahoo itself hates
While tagging our bookmarks of the web
Of the web
While tagging our bookmarks of the web.

Fear not then all ye bookmarkers
Let nothing you afright
You export options still remain
Your bookmarks are alright.
Export them now and import them
Wherever you see light
While tagging our bookmarks of the web
Of the web
While tagging our bookmarks of the web.

I think there was more, but by this time the Bartz Carol singers were moving away, the stars were coming out and flickring, and I couldn’t really catch the rest.

I might have been mistaken anyway; perhaps it was all just a dream.

23 December 2010

A Translation of Yahoo!'s "What’s Next for Delicious?" Blog Post

A translation of the Yahoo! blog post on Delicious. [With apologies to John Gruber, who (as far as I know) invented this ‘translation’ format.]

What’s Next for Delicious?

Many of you have read the news stories about Delicious that began appearing yesterday. We’re genuinely sorry to have these stories appear with so little context for our loyal users.

[Shit. This wasn’t supposed to happen. This will affect how much we can get for Delicious.]

While we can’t answer each of your questions individually, we wanted to address what we can at this stage and we promise to keep you posted as future plans get finalized.

[We’re not going to risk another SNAFU like this.]

Is Delicious being shut down? And should I be worried about my data?

  • No, we are not shutting down Delicious. While we have determined that there is not a strategic fit at Yahoo!, we believe there is a ideal home for Delicious outside of the company where it can be resourced to the level where it can be competitive.
  • [Technically, it’s still running. True we laid off the entire Delicious team, and everyone knows that once you get rid of the developers, a system is al but useless, but we’re going to highlight the technicality.]

[Yes, you should be extremely worried about your data.] [1]

What is Yahoo! going to do with Delicious?

  • We’re actively thinking about the future of Delicious and we believe there is a home outside the company that would make more sense for the service and our users.
  • [We’re sunsetting it with extreme prejudice.]
  • We’re in the process of exploring a variety of options and talking to companies right now. And we’ll share our plans with you as soon as we can.
  • [But not Joshua. Anyone but Joshua. Who does he think he is, carping from the sidelines as we kill his creation with that unique Yahoo! combination of neglect and active destruction? It’ll go to the highest bidder; or to the second highest bidder, if Joshua is the highest bidder.]

What if I want to get my bookmarks out of Delicious right away?

  • As noted above, there’s no reason to panic.
  • [There is every reason to panic. But we really don’t want anyone to dump your bookmarks out of Delicious right now. We desperately wanted to keep a lid on this so that the rats wouldn’t desert the sinking ship, thus compromising what anyone might might pay for said ship. Please don’t go.]
  • We are maintaining Delicious and encourage you to keep using it.
  • [We’ll keep the power on in the hope that some of you idiots don’t notice and keep using it till we can sell it. You’d better keep using it too, our we’ll be out of pocket big-time when it comes to the sale.]
  • That said, we have export options if you so choose.
  • [Run! For crying out loud, if you have any sense, grab your bookmarks and run.]
  • Additionally, many services provide the ability to import Delicious links and tags.
  • [Actually, that’s spot on.]

We can only imagine how upsetting the news coverage over the past 24 hours has been to many of you

[“We’re just shutting down delicious, not selling your children to gypsies. Get the fuck over it.”@fakecarolbartz]

Speaking for our team, we were very disappointed by the way that this appeared in the press. We’ll let you know more as things develop.

[Speaking for Yahoo! (not the Delicous team, obviously; they have their pink slips): It’s so not fair. Yahoo! used to have the mojo. Now people treat us like we don’t even get the internet. As if. Just because Carol doesn’t have a flickr account doesn’t mean she still uses 35mm film and a fountain pen, you know. Yahoo!s are people too, and it really hurts when people like Thomas Hawk come up with crap like this:

Do you even realize what you have with Flickr? It’s the largest well organized library of images in the world. Not only that, it has a very strong social networking component. In fact, Flickr may represent (if managed correctly) your single biggest opportunity to launch a much larger and more lucrative social network (and stock photography agency as well). Have you spent any time in any Flickr groups? They are addicting. People live in them. They play games in them. All kinds of activity goes on in them every day. And if you took the time to really explore the social side of Flickr, you’d learn this, and figure out a way to grow it. (Quoted by Charles Arthur at Guardian Technology)

Tom Hawk is full of shit. Flickr’s next, and you can certain there’ll be no leaks this time. I’m sure Ballmer will give us a billion for it. Well, half a billion anyway. Hell, he could do that out of his own petty cash. Ballmer would be perfect for Delicious. He’d probably bring it up to date using Silverlight and ActiveX and make your bookmarks dance like Clippy.]

[1]But in all seriousness, no one who takes any care should lose anything. First, having made this public commitment, Yahoo! would probably face an even bigger backlash if it deleted the data now. Secondly, Delicious has always had some of the best export options around, and just about every other bookmarking site on the web will import Delicious’s exports. Just go here and save the resulting XML file and you’ll be safe. Better still, import the result to Pinboard or another site of your choice.

21 December 2010

Del.icio.us Exporting And Alternatives: An Update

A few days ago, I blogged about some ways to get data out of del.icio.us and into FluidDB, and also about the fact that I was working on a kind-of old-style del.icio.us clone.

Things have moved on a little since then, so I thought I’d update.

First, although bad, the situation doesn’t look as dire as it did. By all accounts, the del.icio.us staff are gone, but Yahoo has made a very public statement that our bookmarks are safe, for the time being, the the service will continue to operate, and that its intention is to sell or otherwise migrate del.icio.us somewhere else, rather than simply to stop it. Given that del.icio.us has always had excellent export options, supported by (as far as I know) all of its competitors, there is certainly no reason why anyone aware of the situation should lose any significant amount of data.

Another way in which the situation has moved on, for me, is that I’ve discovered and signed up for Pinboard and started using that. Pinboard is the first alternative to del.icio.us that has felt like its developer was on the same wavelength as Joshua Schachter (who created del.icio.us). So far, I’m impressed with it. Although I don’t particularly like the aesthetic, I do like the minimalism. Functionally it looks strong and technically it appears credible. Despite some heavy breathing, it appears to have stood up well to a deluge of sign-ups and imports, and clearly has a energy and momentum in a useful direction; something that hasn’t been true of del.icio.us for far too long. It also has interesting and potentially useful extra features both in production and on its (commendably public) roadmap. I definitely wish Maciej Ceglowski and Peter Gadjokov, who run the site, all the best and hope that Pinboard site has a great future. Right now, it looks to me like the best alternative to del.icio.us on the net, and a better medium-term bet than del.icio.us itself.

None of this is to suggest that I don’t still think it’s an excellent idea for people to import their bookmarks into FluidDB, as discussed in previous posts; FluidDB is a completely different kind of system, allowing things it is most unlikely Pinboard will ever even wish to support. But to be clear, FluidDB alone is not a del.icio.us competitor, and could only be so if a client were developed. In fact, FluidDB’s ideal role is as a secondary store for bookmarks from any and all bookmarking sites, so if you use something else (or even just store bookmarks in your browser), that’s something to consider.

Finally, what of my plans? Well, I still fully intend to release a site that will include old-style del.icio.us functionality (not unlike Pinboard’s) with some new twists (mostly rather unlike Pinboard’s twists). The main focus of that site, however, will be content creation, with bookmarking as an organizational paradigm that can be extended to existing web resources, rather than a site developed with the primary goal of supplanting del.icio.us (or Pinboard, for that matter). Inevitably, even if things go supremely well, there will be a bedding down period, and it will be a while before I recommend anyone to use it as a primary repository. But now that the urgency has gone, I’ve decided to wait at least a month before opening it up in any form.. I have all my bookmarks in there (as well as in del.icio.us, Pinboard and FluidDB!), and am really enjoying being able to tune it to operate in the way I think it really should. I remain hopeful that some time fairly early in 2011, some others will come in give it a try. But for now, my advice is:

  1. Export your bookmarks from del.icio.us regularly; (this is good practice regardless; I extract mine several times a week);
  2. Try Pinboard if you haven’t given it a spin and want something in the mould of old-style delicious; (there’s a modest sign-up fee, currently $8.88, and rising in direct proportion to the number of users.)
  3. If you’re so inclined, get a FluidDB account and import your bookmarks in there too, for the powerful query and extended tagging capabilities, the rich permissions and the cool (and useful) visualization that this brings.
  4. Watch this space. I don’t know when, but some time fairly early in 2011 I hope to offer something else for people to try; I have high hopes for it.

20 December 2010

A Conversation with Eliza about Carol Bartz and Delicious

[Eliza is the built in pschotherapist in Emacs, my editor of choice. I thought I’d see what Eliza thought about the delicious situation.]

I am the psychotherapist. Please, describe your problems. Each time you are finished talking, type RET twice.

I think Carol Bartz hates delicious

Why do you say bartz hates delicious?

She plans to kill it

This is not a healthy way of thinking.

It certainly isn’t

What makes you believe it certainly is not?

Well, delicious is wonderful.

Earlier you said bartz hates delicious?

She laid off all its staff, apparently

Maybe your plans have something to do with this.

I don’t think so.

Is it because of your life that you say you do not think so?

I don’t think Carol Bartz knows my plans.

You mentioned that bartz hates delicious?

Yes. And apparently she doesn’t have a flickr account either.

Is it because of the people you hang around with that you are going through all this?

No

Why not?

delicious is an online service

Are you sure that delicious is an online service?

Yes

I see... Well, do you really think this is so?

That it’s an online service, or that Carol Bartz doesn’t get the internet and plans to kill delicious?

Is it because it’s an online service or that carol bartz does not get the internet and plans to kill delicious that you came to me?

Because Carol Bartz doesn’t get the internet and plans to kill delicious

Does it bother you that carol bartz does not get the internet and plans to kill delicious?

Yes

Yes, hmmm... so, what makes you think this is so?

Yahoo bought two of the most important properties on the internet and Carol doesn’t understand them.

Why do you say bartz hates delicious?

She sacked all the staff and plans to get rid of it

18 December 2010

Del.icio.us and I: Reflections and Alternative Alternatives

I’ve been captivated by del.icio.us from the moment I found the site in early 2004. I don’t remember how I found it, but it captivated me immediately. It was so minimal it wasn’t even clear what the site was for, but as soon as I figured it out, I was hooked. I think del.icio.us was (and remains) far more important and innovative than is generally recognized.

The Social Site for Solipsists

An aspect of del.icio.us that is rarely discussed is that while it is the grandfather of all social sites, unlike most others, del.icio.us is ridiculously useful even if you are its only user. When I save a bookmark on del.icio.us, and tag it, I do so entirely selfishly. I get two intense benefits from storing bookmarks on del.icio.us, even if no one else uses it. The first is that I can access my bookmarks equally easily from different browsers and different machines. The second is that I can organize them using tags, which are dramatically more useful than folders.

Hierarchical Storage vs. Tags

The trouble with hierarchical folders is that, in practice, they force me to choose a single place to put something. This was a serious problem for email, and remains so, to a lesser extent, for files. Since I have currently about 2,000 bookmarks, it’s also a problem for them.

The problem is perhaps clearest with email. All of the people I know who are good at finding old emails, without exception, chose, fairly early in their lives, a single organizational paradigm. I know some people who store email strictly by date. I know others who store it strictly by sender. And I know still others who store it by subject (though they are generally less successful at retrieval the the people who use one of the first two methods). I never decided, and I have always struggled to find old emails. It has always felt to me as if I need to put emails in multiple places, to reflect the fact that I will probably only half remember one detail when I’m searching for an email, and it’s very hard to predict what that thing will be.

This is the problem that del.icio.us solved for bookmarks with tags. By allowing me to attach as many relevant tags as I like to a bookmark, I almost never have any trouble finding it. Whereas I find it very difficult to anticipate the single category I will need to retrieve it in the future, it is remarkably easy to attach a handful of tags that will almost certainly mean that when I come back to look for it, I will find my bookmark quickly. As a result, since I started using del.icio.us, I have almost never struggled to find a website I’ve saved and tagged. It is remarkable, and it works for emails (and could work for files) as well.

(Search isn’t as good.)

(Many people claim that the advent of full text search has eliminated the need for organization. I disagree. While there is no question that Spotlight, on the Mac, full-text search in gmail, and equivalent solutions elsewhere, have been enormously positive, I find that I still struggle to find email, particularly, because I tend to get thousands of results when I search. The brilliance of tags is that not only can I identify bookmarks (or emails) of interest by using a tag; I also exclude all the items to which I didn’t attach that tag. This turns out to be almost more important.)

The Social Solipsist

The cross-browser/cross-machine accessibility of bookmarks and the organizational power of the tag are the two most important benefits that del.icio.us brings for me, but that is not to suggest that the social aspect is unimportant. It is also remarkable.

With del.icio.us, of course, bookmarks are public by default. (In fact, I’m pretty sure there were no private bookmarks initially.) Anyone can go to del.icio.us/njr and see all but a handful of my bookmarks. And anyone interested to see the bookmarks I have tagged with Fluidinfo, need only visit del.icio.us/njr/fluidinfo to see them. (Notice the zen-like, RESTful, perfect URLs.)

But there’s more. To see what anyone has tagged with fluidinfo, I can go to del.icio.us/tag/fluidinfo. And here something truly remarkable happens.

Despite the complete lack of any organizing principle or oversight, there is rich structure in the tags. The tagsonomy, or folksonomy, as it is called, simply emerges, and is useful. When Google fails me, I often go to del.icio.us, and look up what I want using a few tags. The results are often better than Google’s, because everything in del.icio.us tagged with a given word has been chosen by someone, in vast majority cases, for his or her own selfish (or at less, non-altruistic) reasons. There is no voting on del.icio.us. It is not like reddit, or digg; there is only saving and tagging. And though you might think that this would lead to chaos, it doesn’t. It is true both that words are ambiguous, and that there are many words with similar meanings. But this hardly seems to matter. If you look at a tag with multiple meanings, you may find bookmarks for sites covering each meaning, but that isn’t a big problem, and you can search on tag intersections anyway. It’s also true that the first tag you search on might not be the one most people use. That also turns out to be a largely unproblematical. The tagsonomy that emerges from millions of selfish actions is surprisingly clean, regular, and useful. It is almost mirac.ulo.us.

for:alex with love

Before the site even supported for: tags, I started tagging sites that I thought would be of interest to my son, Alex, with an alex tag. (Did this mess up the tagsonomy? Not obviously.) And he would periodically go to del.icio.us/njr/alex and find the sites I’d saved for him. I save origami sites for my mother, who folds, at del.icio.us/njr/origami. It works.

But del.icio.us then made this even better by introducing for: tags. I can now actually send bookmarks to Alex with a simply by using a for:alexradcliffe tag. When he goes to the site, he sees them. It’s mar.vello.us.

Love at First Site

Since adopting del.icio.us, I have used it more-or-less daily and have found it so spectacularly useful that I have built a number of aspects of my digital life around it. One of these is that I have a dense home page, for all of my browsers, that is built by extracting everything I’ve tagged with home and structuring them into a dense page that has all my most important sites. I have over a hundred links on this single dense page, and it serves most of my common internet needs, both on computers and (reformatted) on my phone. (Read this to see it, and get the code by following the instructions here , if you’d like your own).

Christmas Carol

Joshua Schachter, the banker-turned-internet-entrepreneur who built del.icio.us to solve his own need to organize and share bookmarks, sold delicious to Yahoo a few years ago. He stayed a while but quit when it was clear that Yahoo didn’t get delicious. It was apparently Joshua we have to thank for the tags in flickr as well, for (as I understand it) he spoke to Caterina and suggested that flickr needed tags. Flickr, of course, is also owned by Yahoo, and, from my perspective is the only other part of Yahoo that deserves any kind of future. But John Gruber at Daring Fireball reports that Carol Bartz, who unfortunately doesn’t get the internet, fired the entire del.icio.us team a couple of days ago as part of her plan to dump del.icio.us. (I think almost every change that team has made to del.icio.us since Joshua left has been retrograde; but I’m still not celebrating.) Charles Arthur, who does get the internet, nailed the Yahoo fiasco in the Guardian’s Technology Blog yesterday:

The trouble with all this? It’s on the internet, so Carol Bartz isn’t going to see it. If only there were some way to make it physical so she could read it . . .

Maybe she’ll dump flickr next; Charles Arthur reports that she doesn’t even have a flickr account.

Enter Terry Jones (@terrycojones; not the Python)

For much of the eighties and nineties I did research in the somewhat obscure and (then) emerging field of genetic algorithms. At conferences, I tended to spend time with Terry Jones, who worked directly with John Holland, the MacArthur genius who founded the field. Terry and I both went onto other things and we lost touch. But he was interesting, and I looked him up on the internet one day. He had a very eclectic home page that, among other things, included a set of papers he had written about computer storage mechanisms. He tried and failed numerous times to get these published. I read them and was captivated by the brilliance and beauty of the ideas in them.

In the papers, Terry discussed search and an embryonic form of tagging as the two core organizing principles that he thought should the basis for computation storage and retrieval. This was before del.icio.us, and before search assumed the prominence that it now enjoys. Terry’s tags (which he then called attributes) were more complex than del.icio.us tags, in that they carried values. So while in most tagging systems you can attach tags as labels to objects, in Terry’s mind you should be able to attach any information to anything using a tag. So at the simplest level, you could attaching a rating to something (I rate Fugitive Pieces, by Anne Michaels, 10). Or you could go further and attach an image or a webpage or anything at all, to anything else. It was extremely innovative, and the fact that he couldn’t get them published says a lot more about peer review than it does about the papers. (The papers are available here, here and here; the last was eventually published [1].)

Terry tried twice to build versions of his idea, but struggled and basically failed. I got in touch with him after reading his papers, and enthused, and I think he said I was essentially the first person who had ever liked his work in this area. He sounded quite depressed.

A bit later, another friend of his, Russell Manley (@rustlem) told him about del.icio.us, and this was the spur that made him try a third time to build his vision. This time, he sold his flat, created a company (Fluidinfo, in which I have invested and to which I am an advisor) and went for it. The result is Fluidinfo Inc, and its main product, FluidDB.

FluidDB

I think of FluidDB as like del.icio.us on steroids (though Terry doesn’t like that description of it). Seen through my permanent lens of del.icio.us, you can get to FluidDB through a series of generalizations of a social bookmarking site.

First, instead of just URLs, in FluidDB you can tag anything. FluidDB contains objects, and the objects can represent anything at all. They are identified by a special tag (the about tag, fluiddb/about) that can be used to identify the object. So I have bookmarks for websites in FluidDB, which are stored on objects whose about is the URL to which they refer. For example, I have a bookmark for entry in this blog describing how to tag books from the Guardian’s 1000 books everyone must read in FluidDB. In a modern, standards-compliant browser (essentially anything except Internet Explorer), you can see an image (generated live from FluidDB) showing my tags on that object by clicking this link. (FluidDB is completely compatible with Internet Explorer, but my graphical image generator for FluidDB is not.) Here’s a static snapshot of the same thing.

blogpost.png

The next thing you add when transforming a social bookmarking site into FluidDB the ability (but no requirement) for tags to have values. For example, this image shows the FluidDB object corresponding to Mars, and an application called MirĂ³ has added a bunch of tags to it, with information about Mars. (If you had a FluidDB account, which you could, you could add your own information about Mars to the same object.) Again, here’s a static snapshot of the object.

Mars.png

The third thing you have to add to get FluidDB is a fine-grained permissions system. In del.icio.us, almost everything is shared, though there is the ability to mark a bookmark as private (which means that only you can see it.)

In FluidDB, every tag has its own permissions, with separate controls for reading and writing and an access-control list. For each of your tags, you can choose who can read them and who can write them, either including or excluding people, or making them completely private or completely public. It’s very powerful (see Permissions Worth Getting Excited About) and The Permissions Sketch for more details.)

The fourth thing you add to produce FluidDB is a simple but rich query language. For example, you can find all the planets heavier than Earth with the FluidDB query

miro/planets/Mass > 1.0

There are lots of tools around that let you issue queries against FluidDB (though it doesn’t really have its own interface yet). I have a command line tool that talks to fluidDB, and the command

fdb show -q 'miro/planets/Mass > 1.0' /miro/planets/Name

results in this output.

4 objects matched
Object e06bea33-a000-4294-a7b2-d3245f1481ca:
  /miro/planets/Name = "Saturn"
Object e9b022e6-c770-44ad-abaa-1a2cde9a3224:
  /miro/planets/Name = "Uranus"
Object 2994f561-8efe-4e13-9374-bf3f9436eac6:
  /miro/planets/Name = "Jupiter"
Object 72144788-a59e-4819-a9c9-6b8577e2695b:
  /miro/planets/Name = "Neptune"

You can see them in a modern browser by following the hyperlinks on the miro/planets/db-next-record-about tag on the live version of the image. You can also use a more point-and-click tool like @paparent’s FluidDB Explorer by visiting http://explorer.fluidinfo.com/fluiddb/ and typing miro/planets/Mass > 1.0 into the query box at the top right. (Don’t omit the .0; FluidDB is distressingly strict at the moment, though I am promised it will change.)

In a bookmarking context, this allows you to do queries like Show me all the pages that Terry and Russell have tagged with the tag fluiddb that I haven’t. This is considerably more flexible than del.icio.us or other bookmarking tools.

The last major thing you add to a social bookmarking site to get FluidDB is an API to allow applications to talk to it. Of course, del.icio.us has a (rather good) simple API, but you can’t do very much with it because part of del.icio.us’s excellence is that it can’t actually do very much. By definition, anything that you can do in FluidDB you can do through the API because the API is the only supported way to access FluidDB at all (though, as I say, there are lots of libraries and applications built on FluidDB that use the API). Technically, the API is a RESTful, pure HTTP API that uses JSON when necessary for exchanging data. It is documented here.

FluidDB as a new, more powerful alternative to del.icio.us

FluidDB has the potential to be a very interesting alternative to deli.cio.us. Or perhaps a more accurate statement would be, FluidDB should be considered as a very serious and flexible place to rehouse data currently in del.icio.us. The power and flexibility of its information architecture can allow users to store more kinds of information, about more things, and to query and recombine that information in more flexible ways. (In fact, Joshua Schachter is an investor in Fluidinfo, though I don’t know whether he would endorse anything I’m saying here.)

Today, however, there are some important limitations worth noting.

The main limitation is that there is no application like del.icio.us for FluidDB. There are (at least) two ways to import data from del.icio.us to FluidDB, preserving everything in the export, but until some work is done building a del.icio.us-like client application, it will be awkward to use the data and to add new bookmarks. I’m confident that over the coming weeks and months, applications will be built that will provide basic social bookmarking using FluidDB, but until that time, FluidDB is only really a suitable alternative for technical users.

There are two other minor limitations today. The first that although FluidDB has a much more powerful permissions system than del.icio.us, its design (for rather fundamental and deliberate reasons) does not make it very easy to support private bookmarks in the ‘natural’ way. To be clear, it is entirely possible to have completely private bookmarks in FluidDB: but you need to organize your data in a slightly more complex structure to achieve this and native FluidDB queries on private data will have to look slightly different from native queries on public bookmarks. Such complexity can easily be hidden from the user by an application, and again, I suspect that applications that do this will appear. But they don’t exist yet.

If you do want to import information from del.icio.us to FluidDB, there (are least) two published ways to do so.

Some months ago, I published some python code to github that takes a very direct approach, creating a FluidDB tag for each of your del.icio.us tags and attaching them to objects whose fluiddb/about tag is the URL for the bookmark. At the moment, that script doesn’t upload any information about private bookmarks to FluidDB, but it could obviously do so, and I imagine I’ll add that capability some time over the next few weeks when I decide what I think the best way to do it is. I think this approach mirrors del.icio.us most directly and naturally and is a good choice if you want to use FluidDB primarily for social bookmarking, perhaps expanding to take in tags with values. It requires you to install two python packages, both available on github. You can find information in this blog entry.

But there's a simpler and better alternative from Nicholas Tollervery (@ntoll), who works at Fluidinfo. He has written a single script that just prompts you a few questions before it does the upload. It also uploads all the information, rather than just the tags, as mine does.

I imagine we’ll simplify both approaches over the coming weeks.

This diagram shows the object for a webpage Nicholas and I have both bookmarked

shared-bookmark.png

I found this bookmark my using the FluidDB query

has njr/fluidinfo and has ntoll/delicious/tags/fluidinfo

I had a single del.icio.us tag for this, whereas Nicholas had several. Nicholas has chosen to prefix all his delicious tag names with delicious/tags, which is why the are so long, but by default both his and my script put all the main data in the top level, so that a del.icio.us tag njr/fluidinfo becomes a FluidDB tag njr/fluidinfo, and the title and notes attributes are stored using FluidDB tags title and >notes respectively. Like my script, Nicholas's currently doesn't tag anything in the case of private bookmarks, but his script does create all FluidDB tags that you use, even if some of them are only used for private bookmarks. So if the existence of a particular tag you have is secret, that would be a reason not to use his script. Nicholas's code is available from github and also (perhaps more easily) from the python package index PyPI, at this location. This allows you to install it with setup tools or easy_install etc. I imagine he'll blog about it soon.

An “old del.icio.us” alternative

As will be clear by now, del.icio.us has been pretty influential in my life. A few weeks ago I had an idea for a web site not initially very similar to del.icio.us, which I have been developing slowly. I don’t want to go into details now, but it’s in the general area of checklists, allowing users to find, create, share and use checklists of various kinds. It’s a social application on exactly the del.icio.us model (by which I mean, it has no explicit ratings and is useful even if no one else uses it). More generally, you can think of it as a kind of del.icio.us for user-created and re-mixed content, specifically around checklists for now.

A week ago today I realised that since I was effectively building almost everything you need for del.icio.us, I could easily extend my new website to include an actual del.icio.us alternative, i.e. I could allow users to save bookmarks for websites as well as for content they create in the application itself. I’m generally nervous about extending small ideas and making them more complex, but this seemed like a very minor extension, and I have become increasingly nervous about the future of del.icio.us ever since Yahoo acquired it. News of Yahoo’s intention to divest itself of del.icio.us prompted me to stop wondering and start implementing on Thursday night. I hope to make a limited service available in the next few days. (I’ll update this post and create a new one announcing it when I do.)

Its functionality will be limited at first, but will include (does include, in fact) the ability to import all bookmarks and tags from del.icio.us (private and public) and maintain their state, and all the most basic functionality (creating, editing, deleting bookmarks). There will also be limited social functionality (looking at tags across users etc.) and, of course, the ability to export your data in the same XML format as the one del.icio.us uses.

Over time, I’ll try to make it ever more like the pre-Yahoo del.icio.us, as far as I can remember that. And I think it’s very likely that I will also offer users the option of duplicating bookmarks in FluidDB, to allow for richer sharing, and to provide exactly the del.icio.us-like FluidDB client that I would love myself.

Of course, I realise there are a dozen or more del.icio.us alternatives already up and running, and they are clearly a more stable, safer bet. But I hope that at least a few people will think this approach is interesting enough to try. I will probably add an option to hide all the non-bookmarking functionality, from my site, though I don’t think it will really distract much anyway. (I’ll probably turn it all off until it’s ready, next year, for now anyway.)

Carol Bartz may not be bringing much Christmas cheer at Yahoo, or to del.icio.us users, but I hope that my embryonic del.icio.us replacement and FluidDB can be part of an ecosystem of alternatives that will end up being more empowering for users and will allow hard-core del.icio.us fans to have a future more like the del.icio.us of old.

Maybe, it will be glor.io.us.

[1]New Approaches to Information Management: Attribute-Centric Data Systems, R. Baeza-Yates, T. Jones, and G. Rawlins. Seventh International Symposium on String Processing and Information Retrieval. SPIRE 2000 pp. 17-27.

25 August 2009

Delicious and FluidDB (redux)

Preamble

This article discusses the relationship between the social bookmarking site, del.icio.us, and the new online database FluidDB. It also talka about a utility that can be used to transfer bookmarks from del.icio.us to FluidDB, and a little about what else you can do with FluidDB.

This article is an HTML version of the PDF posted previously posted here.

Some examples in this article use the command line version of fdb.py. This is a client library for FluidDB, available from GitHub at http://github.com/njr0/fdb.py

The delicious importer described here is also distributed with fdb.py.

Delicious and FluidDB

A simple mental model of a bookmark in del.icio.us (http://del.icio.us) [1] looks something like this:

google-delicious-simple.png

This represents the site www.google.com, and I have tagged it with my search, google and home tags.

Perhaps the simplest way to map this to FluidDB is as follows. This is what delicous2fluiddb.py currently does.

google-fluiddb-simple-short-about.png

Everything looks very similar except that the address (ID) of the object we store the information on is more prominent and the subject of the bookmark (the URL) is placed on the special about tag. This address (id) is real (it exists in FluidDB and is permanent).

$ fdb show -a "http://www.google.com/" /id
Object with about="http://www.google.com/":
  /id = "6c1d7519-35c2-42c0-8b8c-08ffbbc5990d"

Unlike the other tags, the about tag is not owned by njr, but is system-wide. So we often abbreviate it to just about.

google-fluiddb-simple-short-about.png

The about tag is special in that (a) its value can never be changed and (b) it is unique. [2] This one is permanently associated with the object having the ID 6c1d7519-35c2-42c0-8b8c-08ffbbc5990d. So by attaching these tags to this object, we can be entirely confident that they will always be associated with the URL http://www.google.com/.

Del.icio.us actually allows us to store a little more information in a bookmark—a title, some notes and an update date. We can also think of the URL as a tag itself, but as in FluidDB, it’s owned by the system, not by njr. So a more complete picture of a del.icio.us bookmark might be:

google-delicious-bigger.png

Note that in del.icio.us, the tags are just names, but the other four items of information on the bookmark have values.

Replicating this in FluidDB is trivial, because all tags can take values, which can have various types—strings, numbers, dates and much more.

google-fluiddb-simple-bigger.png

Although delicious2fluiddb.py doesn’t do this yet, it would be trivial for it replicate the delicious title, notes and update fields, to produce the structure shown above; soon, it will.

There are many other ways we could represent information from del.icio.us in FluidDB. Since the value of a tag in FluidDB can be a set, another obvious way to represent the tags would be as a set of strings on a tag called tags (or perhaps delicious-tags).

google-fluiddb-simple-tags-as-values.png

Of course, once in FluidDB, we can also add as many other tags as we like to the object, and these tags may or may not have values.

Privacy, Sharing, and Permissions

But before we get onto that, there’s one more crucial bit of information that del.icio.us stores about a bookmark—whether it is shared (meaning anyone can see that njr has the bookmark, and what tags I’ve put in it), or private (meaning that only I can see it).

google-delicious-shared.png

Right now, delicious2fluiddb.py only uploads the shared bookmarks to FluidDB. But how would it make information shared or private?

As well as allowing the arbitrary tagging of objects, and providing a query language, FluidDB also possesses a rich permissions structure. In fact, there are fine-grained permissions associated with every different tag name in the system (njr/google, njr/title, terrycojones/rating etc.) [#fc]

abstract-attribute-tag.png

To illustrate this, we can use fdb to query FluidDB and check this.

$ fdb show -a "Object for the attribute njr/title" /id
Object with about="Object for the attribute njr/title":
  /id = "a6e022bf-14e9-4033-aa91-39789dc11b23"

This command asks fdb to show the /id (which is fdb shorthand for the object’s ID), for the object whose about tag is the string “Object for the attribute njr/title”. The -a means that we wish to specify the object by it’s about tag rather than, for example, by ID or by a more general FluidDB query. If you have fdb and a username and password, you should be able to run this query and get exactly this result.

While this isn’t the place to go into all the detail, the key thing is that while all objects in FluidDB are shared, all data in FluidDB is subject to a strong, fine-grained permissions system.

A user can control various kinds of read and write access for each of their tags, with separate permissions for tags having each name (njr/title, njr/google etc.)

Beyond Simple (Valueless) Tags

Of course, the whole point of FluidDB, is not to imitate del.icio.us, but to enable more powerful things. Some of the power comes when different people tag the same object, which doesn’t have to be about a URL.

object-about-fugitive-pieces.png

This object is guaranteed to be about isbn:978-0747534969, since the about tag can never change. So if we query FluidDB looking for books that both njr and terrycojones have rated 10, we will find this and can retrieve any information on the object, subject to the permissions on the tags.

fugitive-pieces-with-ratings.png

The FluidDB query terrycojones/rating=10 and njr/rating=10 would allow this object to be retrieved, and its title could be found with the FDB command:

$ fdb show -q "terrycojones/rating=10 and njr/rating=10" /njr/title

(For more details of the FluidDB query language, see http://doc.fluidinfo.com/fluidDB/queries.html.)

Notes

[1]del.icio.us, now often delicious.com, is the original social bookmarking site. It is now owned by Yahoo.
[2]There can, however, be many objects with no about tag; and there are.
[3]Each tag name used in FluidDB actually has a corresponding object in the system; we sometimes call this the “abstract tag”, to distinguish it from real tags attached to objects in the system. The permissions system operates on these abstract tags, and permissions set on an abstract tag apply to all the tags used with that name.

23 August 2009

On the Relationship between Delicious and FluidDB

I've drawn lots of pictures and written a few words to try to illustrate similarities and differences between Delicious (http://del.icio.us) and FluidDB as part of the process of trying to document and explain what delicious2fluiddb.py actually does.
It would be nice to post this directly on the blog, but turning it into HTML and PNGs etc. will take a while, so for now I'm just linking to the PDF, which you can get below.

22 August 2009

What the homepage generated from del.icio.us looks like

Homepage.png

del.icio.us integration with FluidDB though fdb.py 0.8

My fdb.py library (available at GitHub) includes the ability to upload bookmarks and tags from del.icio.us to FluidDB. It also (just because that's the old code I based it on) has the ability to create a home page consisting of all your bookmarks tagged with a particular tag or set of tags (home by default) in a dense grid.
This post is currently a verbatim dump of the new README-DELICIOUS file I wrote as documentation for how to use it. But I might reformat it later, and will almost certain write some posts on the relationship between del.icio.us and FluidDB.
CODE FOR WORKING WITH DELICIOUS DISTRIBUTED WITH FDB
====================================================

Because FluidDB shares some characteristics with del.icio.us
(http://del.icio.us/ or http://delicious.com), some code for
working with del.icio.us is distributed with fdb.

There are four files:

  1. delicious2fluiddb.py
     This imports data from del.icio.us to FluidDB.
     It uses library code from delicious.py (below).

  2. delicious.py
     This uses the delicious API to extract bookmarks and tags from
     delicious, as an XML feed, and then to create a web page
     (normally a home page) with a fairly dense set of links to
     pages tagged with a paricular tag (normally 'home') on delicious.
     It also caches the data it extracts (in files).

  3. deliconfig.py
     This configuration file controls the behaviour of delicious.py.
     It partly provides information about paths for various data,
     and partly controls formatting of the home page created by delicious.py

  4. delicious.cgi
     This is a CGI script that can be used to run delicious.py.
     The typical usage mode is:

        Add or modify some bookmarks on delicious
        Run the cgi script (usually by clicking a link on the home page).
        Return home

     This updates the home page.



IMPORTING BOOKMARKS FROM DELICIOUS TO FLUIDDB
=============================================

This should be straightforward.
First, make sure that fdb.py is working by running
the tests.   (See README file.)

Then edit deliconfig.py and at the very least set the
cache path to an xml file name in location you
can write to and set credentials to a file containing
your username and password for delicious on separatelines.
Like this:

username
password

You probably also need to set the homepage to a writable
location.

If all you want to do is upload your bookmarks and tags
to FluidDB, you can probably ignore the rest.

(Though if you don't have any bookmarks tagged home, it
might be a good idea to set tags to a bookmark that you
do have.)

If you have already downloaded your delicious bookmarks
in xml, just set the cache variable to point to the relevant
XML file and run with -c.

Then, to download your data from delicious, run

    python delicious.py

If you have already got them in the file, you can skip
this stage.   (delicious2fluiddb.py reads from the cache.)

Then, to upload to FluidDB, type

    python delicious2fluiddb.py


WHAT IT DOES
============

It creates an object for each of your shared bookmarks with
the about tag (dluiddb/about) set to URL of the bookmarked page.

Then, for each tag you have, it created a FluidDB tag under
your username with the same name as the delicious tag.

It currently ignores all other fields, though I will fix that
in a later release.


KNOWN PROBLEMS
==============

Contrary to the FluidDB documentation, tags with colons
in the name (notably, tags that start for:) fail.
This is because FluidDB currently bans colons in tag names.
This is fixed in the sandbox (as I type), and should go live
soon, so I don't plan to alter this functionality.


NOTE ON DELICIOUS BACKUPS
=========================

Because the author is paranoid, delicious.py never overwrites
an XML dump from delicious, but simple renames the old one with
a datestamp.   I have about 180 backups of delicious.
Obviously, you can delete them if you don't like keeping backups.


CREATING A HOME PAGE
====================

When you run delicious.py, it creates a web page in the location
specified by the homepage location in deliconfig.py.
This basically consists of links for all your bookmarks tagged
with 'home' (or any any space-separated list of tags you set
in the variable tags).

The body of the link will be the title from delicious unless you
put something in the notes field, in which case that will be used
instead.   This is particularly useful if the title is long.

There's some special functionality allowing two related links
to be put in one position.   This is achieved, given one link
call "foo" bu having the notes field of another set to "foo +bar".

If you do this, a single position in the grid will get two links,
the first called foo, pointing to its URL, and the second called
bar, pointing to its URL.   For example, Google.com with title
Google and Google UK with notes set to "Google +UK".
This produces two adjacent links, the first of which is called Google
and the second of which is called UK, pointing at the two Google
sites.


CREATING A LINK TO REFRESH YOUR HOME PAGE
=========================================

If you really like the delicious tag-based home page, you might
want to install delicious.cgi to run this from a link in your
browser.   All you really need to do for that is to stick
delicious.cgi, delicious.py and deliconfig.py into your cgi-bin
directory, suitably configured, get it running, and then bookmark
that link from delicious, tagging it with home.
If you're doing this, you need to make sure that some of the locations
in deliconfig.py are writable by your Apache (or any other web server
you might be using.)

When you run it successfully, you get output like this:

Reading entries from del.icio.us
Writing cache /Users/njr/Sites/cache/delicious.xml
Building home page /Users/njr/Sites/cache/index.html
Home page built and backed up
Completed OK.

Labels