Kupfer is an application that I wrote mostly myself, even though lots of awesome contributors are now coming in to add tons to it; especially testing and more object and application knowledge.
The first features of Kupfer are personal and quite non-random:
- Writing an application for yourself leaves you with a tool that works great. [1]
- Writing an application is an awesome learning experience. You learn about all parts of application design -- interface design, data structures, localization, performance issues, long-term design for error resilience and more stuff I can't think about now.
| [1] | Although it might not be obvious if you're not half-swedish. |
Now, some random reasons Kupfer is awesome:
It understands challenges in naming items. Kupfer will find the song Außer Dir even if you can only type ausserdir; it will find the Sigur Rós song Suð í eyrum even if you can only type sud! You can both enjoy correctly named icelandic, german, swedish or whatever songs from the music library, and still be able to match them when you type their name. I think many Kupfer users using different languages agree that this is an important thing, seeing the number of accents and other letter decorations used in, for example, Polish and Spanish.
The implementation is general (but has a specialization towards the cases I know about myself and tested myself) and can even handle matching "accent"-less japanese characters to "accented" characters; for example 'ヘ' will match an object with 'ペ' in its name.
I think my approach with Kupfer, going for deep and serious localization, has been very successful. (I write the application in English and localize to Swedish in parallel.) (I am still looking for feedback on behavior with Right-to-left languages.)
Sublevels are explicit. Even though most users probably don't care about sublevels (except in the common case of folders, where the concept is already familiar), Kupfer explicitly marks objects with an arrow to show that they contain more objects, and opens a browse window when you enter into them. Subcatalogs all have the action Search Contents available, which adds to consistency (and provides the mandatory "base case" action for that type of object).