31 July 2011

The End of the Fish Wars: The Fluidinfo Shell Version 4.0

A funny thing happened. Terry (Jones; Fluidinfo creator, founder, CEO etc.) started using Fish and declared that he preferred using Unix-style paths in it. Given that the whole reason for adding support for non-Unix-style paths was the distress Unix-style paths appeared to cause Terry, this was a happy surprise. It turns out that I slightly misunderstood his position.
So with his complete blessing, the latest version of Fish defaults to Unix-style paths, i.e. except in queries, if a tag path does not start with a leading /, it is assumed to be in the authenticated user’s namespace; paths for tags and namespaces of other users are introduced with a leading /. So if I use fish, my rating tag is rating, but Terry’s is /terrycojones/rating.
If you already use fish, this affects you only if you have been using Fluidinfo-style paths without setting that explicitly in your ~/.fluidDBcredentials file. If that’s the case, and you want to continue using Fluidinfo-style long paths, add a third line to that file as follows:
unix-style-paths false
Users of te online version, Shell-Fish, won’t see any difference when they’re logged in as the preference will be remembered. But if you use the fish user, it now uses Unix-style paths.
The new consensual goal is to make Fish report as much as it can using Fluidinfo-style paths, but to default to unix-style for input. So the abbreviated form is seen primarily as a shortcut for input (which is, indeed, what it is). The complication is that this makes it harder for Fish to consume its own output; so I will make changes slowly, trying to ensure that things like command substitution with left quoting are facilitated as much as possible.
There are a few minor improvements to Fish in 4.00 as well as the paths change. It’s gained exit and quit commands to leave the interactive shell (though ^D (unix) and ^Z (Windows) still work). And it’s gained a get command, which is like show, but more minimal, returning the information you request with no extras. Compare and contrast:
$ fish show -a Paris rating /about
Object with about="Paris":
  /njr/rating = 10
  /fluiddb/about = "Paris"

$ fish get -a Paris rating /about
The get form is motivated partly, again by, a desire to make it as simple as possible for Fish (and other things) to consume the output.
There’s also better mobile support in the online version, Shell-Fish, but that’s another blog post (coming shortly).

No comments:

Post a Comment