Interesting (old) post concerning BFS, tracker, and categorizing media files

Here is an old BeOS related post I saved from years ago (which was likely from one of the now defunked BeOS forums) that discussed in detail concept concerning leveraging the unique properties of BFS to categorize media content. Instead of having media content listed per physical location or file type in tracker, it uses BFS live queries to categorize and list general media types in views (e.g. Music, Video, Image etc).

I can’t take credit for the post, I just thought it was had some insightful ideas and others in the Haiku community would find it interesting.

I apologies in advance for not sighting the original author, but I could not find the origin of the post.


Filesystem Follies

We’ve got some ideas, we just don’t know what to do with them.

Preface

Being a regular PC, and thus Windows’ user, I have recently become
disenchanted with the product. Obviously not the only one, I decided to look
around at alternatives and needless to say I stumbled upon Beos. A purchase
and install later and I, like everyone else who has done the same, was
immediately impressed. A subsequent read of Scot Hackers’ ‘The Beos Bible’
inspired me further - the list of , incredible’ features and advantages that belong
to Beos are quite extensive and impressive.

However, it is here I hit a problem. The list of great things with Beos simply
remains just that - a list! Though I am no programmer, I feel I am a good ‘end
user’ (?) and have used a Windows computer for several years, extensively and
exhaustively. And when I read of very stable system such as Beos that includes
innovative features such as the ‘database-like’ file system, replicants,
translators, multiple workspaces, etc. etc. I am of course very interested (I
know there is a lot more to that list but things start getting a little technical and I
get confused!). The thing is I am not going to use any of it because, as an end
user, I expect people to write the programs and applications that take
advantage of this stuff and I buy their programs. And so everyone’s happy!
But as far as I can see this has yet to happen. Obviously programs are being
written (and it is nice to see the shareware scene for Beos appears to have
gathered some momentum recently) but the ‘built-in’ features of Be os still, in my
mind, go unused. So I started thinking recently about how to use these things to
show the power of Be os and make computing life easier. There is also
something else …

As I said earlier, I am a user of Windows (I must confess to hardly ever
touching a Mac) and I have been thinking over the past few months exactly
what I do when I use my computer. Without going into detail, I basically find
myself spending a large proportion of my time simply wrestling with the OS. By
this I mean carefully maintaining my file system, making sure everything is in
order, running every crappy Norton product under the sun just to keep my
computer alive. Oh yeah, and of course, tweaking!

There is something about Windows that encourages me to while hours away
using ‘power tweaking’ programs to mess about with the most tedious of
options buried deep in the registry. You only have to look at the number of
tweaking programs on shareware sites to see how popular these things are. In
reality, these things are a waste oftime and should not be necessary.
So now (at last!) we turn to why I am writing this document. I strongly feel that
we need to take a look at the role of operating systems and remind ourselves
that the user wishes to use programs and applications that run on the operating
system - and not necessarily use the operating system itself! It should really be
as invisible as possible and only make itself ‘known’ when absolutely necessary.

And, bizarrely, I think Beos can achieve this! My aim is to highlight things I
would like to change, use, improve, (whatever!) … propose a solution … and
provide everyone with an opportunity to reply to me or discuss on a forum
(preferably) and come up with a better solution. But this is important. I really
want everyone to have a good think about some of the problems because I
honestly believe some real changes can be made to Beos that would improve it
immeasurably - making it even better then it is now!
Oh, and by the way, I am writing this using Beos 4.5. IfBeos 5 has all this stuff
that I am going to start banging on about then I shall be most annoyed … : -)

Introduction

Before moving on I just want to first make a few random points. First an
apology to hose who do not use Windows as I will be constantly making
reference to Windows. It’s the only operating system I have used (apart from
AmigaOS) but it is obviously the most widely used so hopefully I want be
alienating many.

As I said before, despite the great features of Be os there is no real evidence of
them being used. They need to be shown in such a way their benefits are
immediately obvious to the wider public - essentially each feature has to be
’sold’ to the majority. Now this (kind of) means showing them how these
features can make life easier, better, more efficient etc. instead of just talking
about them.

By the way, I have no intention of suggesting a route taken by Linux. I have no
problem with Linux - however I feel in this day and age that operating systems
can be much easier to use without loss of ‘power’. Even the most ardent of
Linux fans will admit that it is more difficult to use than Windows.

Finally, I intend to add to this document if people show enough interest in the
first part. I actually have in mind about 5-6 parts (including this one) but I am
too lazy to write them all at once. As I say, I will write them if people show
some evidence of interest in this stuff. Might I tempt you though in that the best
is yet to come … :wink:

Objective

To devise a system that allows a user quick and easy access to their own files
without wading through countless windows and does not require constant
maintenance like the ‘Be’ menu does.

Rationale

All operating systems rely heavily on the user having some degree of
knowledge of the file structure peculiar to that OS - so for Windows there is a
’Windows’ directory which keeps the important files; a 'My Documents’
directory which (doesn’t) look after your personal files; a 'Program Files’
directory where programs (might) uninstall themselves to, etc. etc. And as
everyone knows, the better you know the file structure the better you know the
operating system. The two are synonymous.

So when it comes to using a new operating system (er … called Beos!) I find myself breathing a weary sigh at the prospect of having to learn a new file structure. Where can I save files? Where can I not? Where are the configuration files kept? etc. etc. I imagine I am not alone in this. But the thing
is, I really can’t be bothered. I don’t see why I should have to make the effort –
an operating system should be working for me and capable oflooking after
itself.

And, as fanciful as it may sound, I think Beos might be able to do this though it
will require a canny implementation of Be os queries and file attributes.

A possible solution?

To use the Beos query system in constructing a ‘logical’ file system that is more
’human’ friendly. It should be self-maintaining, allow access to all files yet be
quick and dynamic.

Basically, I am suggesting using queries to scan the Beos hard drive and group
all files that are of the same type - so for a graphics directory there would be
further sub-directories for each graphics format you have on your drive. For
example, the following table shows a snapshot of of such a system. The
’Graphics’ main directory would contain sub-directories pertaining only to those
picture file types found on the hard drive. Similarly, the same would be done
for the ‘Sound’ main directory and indeed there would be enough ‘Main
Directories’ for ALL files on the hard drive to be categorised in.

Main
Directory
File Types
Graphics
JPEG
Links to all JPEG files on Beos partition
GIF
Links to all GIF files on Beos partition
TIFF
Links to all TIFF files on Beos partition
Sound
MP3
Links to all MP3 files on Beos partition
WAV
Links to all W A V files on Beos partition

And that is basically it! Except, of course, it isn’t. How could such a thing be
implemented? How exactly would it work? In the following section, I have
written a list of questions I asked myself when I first started to think about this
and with them I have written the answers that I came up with. So I suppose the
following is essentially the ‘nuts and bolts’ of the idea.
By the way, I am not a programmer so don’t take the piss out of any stupid
methods I may come up - if you can think of a better idea, tell me! This is the
whole point of the exercise (to stimulate debate in improving Beos - not telling
me I’m crap).

Questions

Is it really worth the effort?
Yes, I think so (obviously!). While operating systems have been updated in
many ways since Apple (essentially) kicked it off back whenever, the actual
way of using them has largely stayed the same - messing around with files
and/or icons that are ordered in such a way for a computer to read and not a
person. And you, the user, are expected to work within this unnatural
framework.

The fact remains though that, at present, to use a computer you have to deal
with files in some way. All that I am proposing is that using the Beos query
system to scan all files on the physical hard drive and ‘re-order’ them for the
logical file system in a more natural order for a person to use. And, if done
well, it should be possible for most users to avoid ever having to access the
physical file system.

This means that it will no longer be necessary for the user to care where they
save their files and eliminate the need to remember in which directory the files
are saved. As soon as the ‘Save’ button is pressed, it will pop up in the correct
directory on the logical file system.

Before I go on, I am the first to admit the organising files by filetype is not the
most user friendly way to organize things (alphabetically, for instance, is an
obvious alternative). But there is a reason I have chosen filetype which should
hopefully be more obvious in later parts.

So how would it work?

Ideally, something like this. A query or a batch of queries are run for the first
time creating an initial logical filesystem in the form described earlier. Then, any
changes made (a new file created for example) will be automatically detected
and updated in the relevant sub-directory (which should be easy given that
Beos queries are ‘live’).

Within each filetype, there will be a ‘Repository’ directory - this is the actual
query that searches the hard drive and stores the results of that filetype.
However, the user is encouraged to drag the files from the ‘Repository’ of that
filetype to user named directories within that filetype such as ‘back grounds’,
‘textures’, etc. The following table will hopefully make things a little clearer …

Main
Directory
File Types
Sub-Directories
Graphics
JPEG
REPOSITORY
Backgrounds
Textures
GIF
REPOSITORY
Backgrounds
My mate John
TIFF
REPOSITORY
All
Sound
MP3
REPOSITORY
The Beatles
WAV
REPOSITORY
All
Admittedly, dragging files from the Repository to directories implies some
degree of maintenance but it should be minimal and easy (think of it as putting
away a new essay you have just written in the ‘right’ drawer). You could leave
them in the Repository of course but would you really want to have all of your
JPEG’s grouped together in a non-descriptive Repository? Note that
’Backgrounds’ would be a completely different directory to the 'Backgrounds’
in GIF.

Once a file has been moved from the Repository to a directory within that
filetype then that move will be made ‘permanent’ presumably by use of a file
attribute (called ‘Location’ say) - the query will only gather files which the file
attribute ‘Location’ has not been set. And obviously, because these queries are
dynamic, files created during a Beos session will be updated immediately in the
relevant Repository ready to be filed away by the user.
From this logical filesystem, you should also be able to delete files as well as
the results are the actual files and not symlinks.

How are these ‘sub-directories’ constructed?
Hmm … not too sure really. Ideally, I would like the sub-directories like
’Backgrounds’ and ‘Textures’ to be queries to keep up with this idea of the
logical file system for which there is no permanence (in terms of the file order-
the queries them selves will physically exist). However, as all of the
sub-directories other than the Repository ones are determined in content by the
user, they are then obviously not queries which creates a problem.
I can only think of2 other solutions for this problem. One is that the
sub-directories are symlink directories (?) where the files within are symlinks to
their original files. However, for me this is the worst possible option as I really
dislike symlinks - or indeed any of the linking systems you find on other
operating systems. Whilst trying to do the opposite, they simply underline the
relative stupidity and linearity of computers. I mean, does anyone leave a note
for themselves in the living room telling them the bread is in the kitchen?

Basically, symlinks are too stupid and fragile to be of any practical use.
Which brings me to the other possible solution - have the sub-directories
physically exist on the hard drive as any other regular directory and when you
drag the files from the repositories to the sub-directories you in fact move
(copy?) the real file to this new location. I don’t particularly like this either but …
… can anyone think of a better idea (please)?

Filesystem Follies

How will we manage what could be a huge list of filetypes?
Not all filetypes need to be listed - there could be a group repository which
collects those filetypes that the user is not interested in (file under ‘Mise’ eh?).
Or indeed they may simply be ignored. I suppose not all filetypes need to be
picked up by the queries, only those requested by the user. This does destroy
the idea of an all-encompassing ‘logical’ file system that contains all files on the
hard rive but would reduce the overheads by having substantially fewer queries
running at once.
Good point, what will be the effect on my computer of having (potentially) a hundred queries running at once?

No idea … er nothing? :wink:

Will my queries have to rescan every time I reboot?

I hope not though I imagine the answer at present would be yes as closing and
re-booting Beos obviously means closing and re-starting the queries which
means they would ‘run’ again. Does anyone know of a way to force a query to
remember its results on shutdown show that it avoids a re-scan on the next
boot?

What about files from other partitions (Beos or otherwise)?
I would envisage for other partitions that you can choose to scan them as and
when necessary - as this may take some time you would probably not want this
to happen every time you reboot.

If it is another Beos partition then there is no reason to have another ‘logical’ file
system for that partition much the same as I have described previously. If the
other partition is not Beos (Windows for example) then a similar approach
could be employed except that you would only have Repositories for each file
type and not the associated user sub-directories (as files on other systems
cannot handle the extra file attributes as used in Beos). This would still be
beneficial as it will still group all filetypes together into one place.

What about if! want to group different filetypes in the same directory
corresponding to a particular project I am working on? This system
would then go and separate them back to their filetypes.

Yes it would but I have another idea (?) that will solve that and should also
bring extra benefits. Unfortunately I am a little vague so I will try and outline
what I have in mind and hopefully someone else can fill in the blanks (or simply
explain that it is not possible).

I see something along the lines of one file (for one project) that simply 'points’
to the relevant files within that project. So one can click a JPEG image for
instance and assign it to an existing project. Then, when one opens the project
file, the icon for that JPEG appears in its list (could this project file be a query?)

There would actually be no real information in this project file except pointers
to the relevant files. This would bring several benefits such as …

a) No repetition of files. A file (such as a company logo) can belong to several
projects at once just by simply assigning them to the different projects.
b) Easier handling. For example, should you need to e-mail the project to
someone you should be able to attach the project file only and (luck?) would
ensure the relevant files were sent. Or, you could spell check at once several
text files simply by spell checking the project file (to which these documents
belong).
c) There are some more which I will come to in later parts.
Alright, perhaps getting a little fanciful there with part b) but there is no reason
why we should not think along these lines. Always go for glory - that’s what my
demented Grandma always used to say.

Conclusion.

Actually, I do have other things to say about this system but I have probably
already inspired/angered/bored you enough so I shall turn things over to you. I
would really like some good feedback on this and maybe we can turn this idea
(or whatever comes out of discussions) into a reality.
And if that ain’t enough, wait until you see the rest of the crap I’ve thought
about in future parts …
( … Oh, by the way, apologies to Scot Hacker who, judging by his comments in
his ‘Beos Bible’ already disagrees with this. Sorry … )