Unseen Academy

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.