Everything [that is a Tag] is a Tags

For years I was frustrated by web browser book-marks and email folders. They don’t work — not when you have lots of them. I was about to write my own bookmark tool, I did a search and found Delicious that I used for a long time. Then gmail. However I have same problems with them.

  • The protocols need to be open.

    See Earlier post Delicious a Prison. See the rest of this article.

  • If it looks like a tag then it is a tag. Everything is a X pattern (also known as composite).

    There are so many places that use tags now: Web-marks, email, contacts, forums, blogs, etc. But they all use a separate tagging system. (we need open protocols to fix this).

    What is needed.

    • Web sites that displays my tags and bookmarks, to me and the public.
    • Browser integration
    • Ability to configure browser to store on multiple servers of my choice (work/personal/backup)
    • Ability to select server based on tags or uri
    • Ability to host my own bookmarks, at home or work
    • Email client that uses same servers/protocols (emails needs a uri)
    • Email client by default marks bookmarks as private, and email as private, but if bookmark is marked public then email is as well
    • Email client and other clients maintain contacts using same servers/protocols
    • All e-mail is tagged email
    • All contacts are tagged contact
    • All outgoing e-mail is tagged email:outgoing, and all incoming e-mail is tagged email:incomming (all email should have one of these two tags)
    • E-mail also tagged email:drafts, sys:starred, sys:bin, email.spam (we will have to think that is email and what is generic everything else is adhock
    • Bookmarks should be tagged with owning site. site:xxxx. I.e. wordpress.com, gmail.com, stackoverflow.com
    • Tags can be tagged
    • Tags can be nested, e.g. C++, Java, Python under programming-languages under programming under computers. This allows the user to just add one label e.g. Java. (note bookmarks are NOT nested.)
    • The local file system should use tagging, the ext file system on gnu/linux supports labels, so we need better client support (not just gui) and integration with this now system so that it works seamlessly. As this system that I describe must support multiple servers this will not be of grate additional complexity.

gmail — the good, the bad, the ugly.

Introduction

This entry is just about the few thinks I don’t like about gmail. But first let me tell you that I like it. It is easy to use, it has labels (but see below for where they fall short), it has conversations (but see below for where they fall short), it has undo send, etc.

What could be improved in gmail

  • Conversations:

    Sometimes gmail gets it wrong, and there is nothing that can be done about this. However it would be nice to be able to override it. What is needed is a split and join feature. (I have not worked out the exact mechanics of this)

  • Labels/Tags:

    Here I have a little more to say.

    • Gmail does not allow us label email as it is sent unless it is a reply/forward. We can start a new email, save, retrieve from drafts, label, send. ( this is 2 extra steps )
    • Labels are not universal. See post Everything [that is a Tag] is a Tag.

Delicious a prison.

Delicious, a social book marking site, is broken. It was sold to Yahoo, then to AVOS, then AVOS changed it so it no longer works how I and a lot of other people use it. But what do I do?

I should have known better, this is what happens when you let others look after your data without strong controls. You get locked in. Or is it, is there another way?

At work the materials purchasing people tell me that it is cheaper in the long run if we use materials that can be sourced from multiple suppliers (multi-source). If this is not possible then we should have strong relationships with the supplier (see lean manufacturing, the Toyota way. I will not talk about it here.).

So how do I multi-source software?

Most software has a single source. What properties do I need in the software to satisfy my multi-source requirement.

I think there are two paths to multi-source: free-software and free-protocols.

Free-software

free-software is defined as:

  • Freedom 0: The freedom to run the program, for any purpose.
  • Freedom 1: The freedom to study how the program works, and change it so it does your computing as you wish. (Access to the source code is a precondition for this.)
  • Freedom 2: The freedom to redistribute copies so you can help your neighbour.
  • Freedom 3: The freedom to distribute copies of your modified versions to others. By doing this you can give the whole community a chance to benefit from your changes. (Access to the source code is a precondition for this.)

Because of these freedoms it is possible for you or someone else, possibly working for you, to takeover the project. It is possible to study it and design a replacement.

Free-protocols, exportability, reconfigurability

But we need another way. One that is not absolutely necessary if we always use free-software (but still preferable), but is if we choose to use proprietary software.

  • The freedom to change our mind, to not be locked in. This freedom requires free-software or free-protocols, reconfigurability (at least at my end) and exportability of data.
  • Protocols: network protocols, file formats, APIs, etc. need to be free.
  • I need to be able to export my data in a free-protocol, and I need to do regular backups.
  • I need to be able to configure client software, to point at a new server etc.

Summary

I need to be able to change my mind. To get out of unhealthy relationships when a supplier does not treat me well.

So I should use free-software, software that has the three properties listed above, or preferably both.