An article from John Torjo (found here) states that using directories on computers is a flawed concept. I've found his ideas interesting and made an prototype for windows using his ideas and the really cool dokan library.
THIS SOFTWARE IS A PURE PROTOTYPE! IT'S NOT PRODUCTION-READY AND CAN ONLY BE USED TO TEST SOME CONCEPTS. IT'S EVEN NOT READY TO TEST WITH APPLICATIONS BECAUSE IT DOESN'T HANDLE MULTITHREADING AND STUFF LIKE THAT! ONLY USE THIS IN A VIRTUAL MACHINE!
I've implemented tags, but the tags can contain also values. For example the title-tag of an mp3-file can contain the title of the music-file. With this enhancement it's much easier to filter for tags because you can specifiy two things(tag and value).
Improvements:
- how to find useful values for the tags when browsing the directories? If I browse the directories I see the files as files, and tags as folders, but I don't know which values are possible for the tags. an solution would be to show all values if there is only a tag specified, but then you can't use 'blank' tags.
- include containers? For some things it would be useful to define containers which act as a proxy for the files included in them. For example visual-studio-projects or other 'workspace-like' folders.
- include a revision-control-mechanism Including a interface for distributed revision control mechanism could improve the filesystem alot, especially one that automatically push changes onto drives when they get available (usb-stick, networkdrive).
How to test it
The most important thing: use this filesystem only in in a virtual machine because it's far from beeing
bugfree and useable! It doesn't support reading the files, only browsing is supported!
To run the Filesystem:
- install dokan included in the download-pack(the binaries are compiled against this version)
- put mp3's into 'c:\test' sorry, the path is hardcoded
- run 'metafs.exe c: x:' this will create a new drive x which you can browse via a dos-shell
- to exit the filesystem run 'dokanctl.exe /u x:'
Examples
Verzeichnis von X:\
0 01-makaveli_presents_musza_mil_and_makaveli-political_soldie.mp3
0 02-loon-get_down.mp3
0 03-nas_presents_nashawn_feat._nas-chorus_song.mp3
0 04-house_gang_feat._carlton_fisk_la_banger_and_method_man-h..mp3
0 05-large_professor-rapid_fire.mp3
0 06-layzie_bone_feat._snoop_dog_and_joe_little-smokin_on_info.mp3
0 07-street_life_and_method_man-street_education.mp3
0 08-big_pun_and_peedo-family_tree.mp3
0 09-junior_m.a.f.i.a._feat._notorious_b.i.g._lil_cease_and_li.mp3
0 10-nas_presents_nashawn_feat._lofey-shit_aint_sweet.mp3
0 11-sunz_of_man_presents_hell_razah_and_4th_disciple-one_harm.mp3
0 12-bars_and_hooks_feat._donalon_sabotage_prodigy_and_v12-war.mp3
0 01. einleitung.mp3
0 02. mit dem kopf durch die .mp3
0 01-ferris_mc-der_anfang_vom_ende.mp3
0 02-ferris_mc-duestere_legende.mp3
DIR album
DIR artist
DIR genre
DIR title
Verzeichnis von X:\genre
0 01-makaveli_presents_musza_mil_and_makaveli-political_soldie.mp3
0 02-loon-get_down.mp3
0 03-nas_presents_nashawn_feat._nas-chorus_song.mp3
0 04-house_gang_feat._carlton_fisk_la_banger_and_method_man-h..mp3
0 05-large_professor-rapid_fire.mp3
0 06-layzie_bone_feat._snoop_dog_and_joe_little-smokin_on_info.mp3
0 07-street_life_and_method_man-street_education.mp3
0 08-big_pun_and_peedo-family_tree.mp3
0 09-junior_m.a.f.i.a._feat._notorious_b.i.g._lil_cease_and_li.mp3
0 10-nas_presents_nashawn_feat._lofey-shit_aint_sweet.mp3
0 11-sunz_of_man_presents_hell_razah_and_4th_disciple-one_harm.mp3
0 12-bars_and_hooks_feat._donalon_sabotage_prodigy_and_v12-war.mp3
0 01. einleitung.mp3
0 02. mit dem kopf durch die .mp3
0 01-ferris_mc-der_anfang_vom_ende.mp3
0 02-ferris_mc-duestere_legende.mp3
DIR album
DIR artist
DIR title
Verzeichnis von X:\genre=Hip-Hop
0 01-makaveli_presents_musza_mil_and_makaveli-political_soldie.mp3
0 02-loon-get_down.mp3
0 03-nas_presents_nashawn_feat._nas-chorus_song.mp3
0 04-house_gang_feat._carlton_fisk_la_banger_and_method_man-h..mp3
0 05-large_professor-rapid_fire.mp3
0 06-layzie_bone_feat._snoop_dog_and_joe_little-smokin_on_info.mp3
0 07-street_life_and_method_man-street_education.mp3
0 08-big_pun_and_peedo-family_tree.mp3
0 09-junior_m.a.f.i.a._feat._notorious_b.i.g._lil_cease_and_li.mp3
0 10-nas_presents_nashawn_feat._lofey-shit_aint_sweet.mp3
0 11-sunz_of_man_presents_hell_razah_and_4th_disciple-one_harm.mp3
0 12-bars_and_hooks_feat._donalon_sabotage_prodigy_and_v12-war.mp3
0 01-ferris_mc-der_anfang_vom_ende.mp3
0 02-ferris_mc-duestere_legende.mp3
DIR album
DIR artist
DIR title
This is one (faked)idea to fix the problem with the tag-values not readable:
x:\>dir
Directory of x:\
.... (files)
DIR album
DIR artist
DIR title
x:\>cd album
x:\album>dir
Directory of x:\album
albumtitle1
albumtitle2
...
x:\album>cd albumtitle1
x:\album=albumtitle1>
But with this you loose the possibility to specify tags without values.
Notes about the implementation
Please note that this is a pure prototype and coded like that. I've wanted to test sqlite with this and simply started coding, so I'm providing the source code but be sure that it's really bad written. After all it was meant to test the concept, and for that it works...
Download
Please note that I'm providing the dokan-library here because the program needs this version! But it's not developed by myself, you can find the homepage here: Dokan Library. Other used libraries are the id3lib-3.8.3 and sqlite3.
- Dokan Installer Version 0391191(263kB)
- MetaFS Prototype 04.12.2008(6MB)
There's also a console-application to edit some stuff in the sqlite-database, do not run it when the filesystem-driver is running. And not every function is implemented, but you can add tags to files.