[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

.desktop files need better categories



Hi!

Exciting developments lately, since both Debian and KDE have been involved
in the discussion!

I think the VFolder proposal is good technically, but I do not like the
list of Standard Categories in it. It mixes descriptions of different
aspects of programs under the same label (the Categories label). I think
this is a big mistake. It is important to have better structure in the
metadata, and if this is done more carefully it will be easier to
experiment with other kinds of user interfaces.

I did some research on this, and I suggest a look on the Trove spec, that
Eric Raymond wrote several years ago (http://www.tuxedo.org/~esr/trove/).
Among other things, Trove tried to come up with a way to browse
applications on FTP archives, but much of the thinking can very well be
applied to browsing installed applications. In it he describes something
he calls discriminators. Discriminators are keywords that describe certain
aspects of a program in order from general to more specific. They look
something like this: /topic/graphics/viewers/gif or
/interface/toolkit/motif. This way, there is a separation between
different aspects, and it is possible to make advanced queries in order to
find intersections between different sets of discriminators.

In an example in the spec that describes his own program fetchmail, the
discriminators look like this:

Discriminators: system/mail/{pop, imap},
              	audience/{end-users, sysadmins},
              	status/production,
              	embedding/application,
              	interaction/utility,
              	license/GPL,
              	platforms/{Linux, BSD}

It is of course possible to come up with more discriminators in order to
describe other aspects. Something about "usability complexity" would
perhaps be a good thing for a desktop system, to separate vi from notepad.
On the other had, information about license for example is not as vital.

Both Sourceforge and Freshmeat applies this thinking when you browse their
software archives. Note also that since a large amount of software is
categorzied in a similar way in these archives, it should be feasible to
bring the same kind of categorization to the desktop.

Below is the best list of discriminators I could find on the net, it was
also from Eric, but is a couple of years old. It makes interesting reading
actually, I think he makes a good job of separating different aspects. In
adddition to this list, I suggest extending the audience hierarchy like
this: audience/end user/{artist, student, gamer, professional} etc. Also a
"domain" hierarchy makes sense, which could hold discriminators such as
domain/{science, engineering, economics, religious, music, art} etc.
Intersections between audience and domain would make good categorization
for applications that previosly only ended up in some generic
"Application" collection.

I think that the discussion about the technical merits of the VFolder
proposal is best detached from the definition of Categories, because they
are somewhat separate.

Regards,
Claes


# This file is a GNU outline-mode file defining the Trove domain model
# for categorizing software.  It will be compiled into a pickled Python
# structure that can be used for selecting and validating descriptors.
#
# Lines led with `#', or blank lines, should be ignored.  Descriptive text
# should consist of a self-contained summary line followed by an optional
# explanation.
#
# There are some patterns programs interpreting this file should be aware of:
# 1. URLs are enclosed in <URL:> as per W3C standard and may be interpretable
#    as hyperlinks.
# 2. Text of the form "`foo'" in descriptions describes a crosslink
#    from the current node to foo that may be appropriately be expressed as
#    a hyperlink.
# 3. Text of the form -> <name> describes a hard crosslink or alias.  The
#    current node should acquire all the subnodes of the target node.

* Audience
  The main class of people likely to be interested in using it.
** End Users
   Programs and resources for people who use software.
** Developers
   Programs and resources for people who write software.
** System Administrators
   Programs and resources for people who administer computers and networks.
** Distributors
   Programs and resources for people who make operating-system or
   archive distributions.

* Development Status
  An indication of the development status of the software or resource.
** Pre-Alpha
   Development effort is still forming or in early start-up phase.
** Alpha
   In early development; probably seriously incomplete, or buggy, or both.
** Beta
   In late phase of development
   Deliverables are essentially complete, but may have significant bugs.
** Production
   Deliverables are complete and usable by the intended audience.

* Kind
  The kind of resource we are describing.
** Database
   Structured machine-readable data in a format designed for fast access.
   Databases are optimized for access by machines and not designed to
   be editable by human beings without special tools.
** Document
   Human-readable data.  Subcategories describe the document format.
# These subnodes are duplicated under Topic/Documentation/Format
*** DWB
    Documenter's Workbench markup: the nroff/troff/groff/tbl/pic/eqn family.
**** man
     Unix man page format.
*** DVI
    DeVice Independent format (generated by TeX).
*** FAQ
    USENET FAQ format.
*** Texinfo
    Texinfo format.
*** HTML
    HyperText Markup Language.
*** Info
    Free Software Foundation's Info format
*** Postscript
    Postscript page description language.
*** SGML
    Structured Generalized Markup Language.
*** TeX
    TeX formatting language, including LaTeX.
*** Text
    Unstructured text.
*** XML
    Extensible Markup Language.
*** Other
    All other document formats.
# Nodes duplicated under Topic/Documentation/Format end here
** Graphic
   Graphics, clip art, images, logos, and collections of same
*** Class
    Class of the graphics resource (human view)
**** Animation
     Computer animation sequences
**** Icons
     Small bitmaps and pixmaps for use as program icons.
**** Logos
     Logos, badges and stickers.
*** Format
    Format of the graphic resource.
**** EPS
     Encapsulated Postscript
**** GIF
     Graphic Interchange Format.
**** JPEG
     Joint Photographic Experts Group format for photo-quality stills.
**** MPEG
     Motion Picture Expert Group format for digital movies.
**** Photoshop
     Adobe Photoshop native format.
**** PBM
     Portable Bit Map and relatives (PBM, PGM, PNM, and PPM).
**** PNG
     Portable Network Graphic.
**** TIFF
     Tagged Image File Format
** Software
   A program or program component.
*** Class
    The kind of software this is.
**** Standalones
     A standalone executable program.
**** Applets
     An executable extension that runs inside another client or application.
**** Clients
     A front end that requires another (server) program to function.
     Examples: an FTP client, Web browser, or database front end.
**** Libraries
     A collection of functions that can provide services to other programs.
     A library is not generally useful by itself.
**** Servers
     A service program that must be accessed through another (client) program.
**** Device Drivers
     Service code to be linked directly into an operating-system kernel.
*** Interaction
    Interaction Style
**** Utility
     A program that doesn't interact with the user after it's launched.
**** Component
     Filter, sponge, or other component designed to be used in pipelines.
**** Command Interpreter
     Program that conducts a command dialog with the user.
**** Selection Interface
     Menu-based or point-and-shoot-based interface
*** Interface
    Interface style; how the program interacts with the user.
    If your program has multiple interfaces (e.g. both curses and X, or both
    command-line and curses) select them all, but don't include test harnesses.
**** Line-oriented
     Uses a console or terminal in the simplest dumb-teletype mode.
**** Screen-oriented
     Uses character-cell text and graphics on a console or terminal.
     Programs that use curses or slang belong here.
**** Direct Graphics
     Programs that set up a graphical user interface going direct to hardware.
     SVGAlib programs belong here.
**** X
     Programs that set up a graphical interface through the X window system.
     Subcategories describe the X toolkit the program uses.
***** Xlib
      Bare X.
***** Motif
      The Motif toolkit or its clones (such as Lesstif).
***** Qt
      The Qt toolkit from Troll Tech.
****** KDE
       Program uses Qt and the KDE desktop.
***** GTK
      The Gimp Tool Kit
****** GNOME
       Program uses GTK and the GNOME desktop.
**** Microsoft-Windows
     Programs that set up a graphical user interface through Microsoft Windows.
*** Environment
    The runtime environment required for the software to run.
    May be an operating system, or a cross-platform interpreted
    language, or a combination of both.
**** Operating System
     What operating system the program requires to run, if any.
***** POSIX
      POSIX plus standard Berkeley socket facilities.
      Don't list a more specific Unix-like OS unless your program requires it.
****** Linux
       Any version of Linux.
       Don't specify a subcategory unless the program requires a particular
       Linux distribution to run.
******* Red Hat
******* Debian
******* S.u.S.E
******* Other
        Some particular Linux distribution, specified in the description.
****** BSD
       Any variant of BSD.
       Don't specify a subcategory unless the program requires a particular
       BSD distribution to run.
******* FreeBSD
******* NetBSD
******* OpenBSD
******* BSD/OS
****** Sun
       Any Sun Microsystems OS.
******* SunOS
******* Solaris
****** SCO
****** HP-UX
****** AIX
****** Other Unix
***** MS-DOS
*** Windows
****** Windows 3.1
****** Windows 95
****** Windows NT
***** OS/2
***** Macintosh
***** Other
**** Language
     Interpretive environment required for program.
*** Emacs Lisp
    The extension language for the Emacs Lisp programmable editor.
*** Java
    The cross-platform Java language from Sun Microsystems.
*** Perl
    The Perl scripting language; see <URL:http://www.perl.com>.
*** Tcl
    The Tcl scripting language; see <URL:http://www.tcltk.com>.
*** Python
    The Python scriipting language; see <URL:http://www.python.org>.
*** Other, specified in description

* Sound
   Sound files and resources.

* License
  License terms under which the resource is distributed.
  The license terms control how the resource may be used and redistributed
  and modified.  If your package has components under multiple licenses,
  list the most restrictive one (GPL and LGPL are more restrictive than BSD,
  which is more restrictive that MIT.)  Any license which prohibits commercial
  use or redistribution, or requires an additional license or fee for same,
  should be listed as `/License/Proprietary'.
** GPL
   Any version of the GNU General Public License.
   Do not use this category if you have added any additional restrictions
   in the license.
** LGPL
   Any version of the GNU Library General Public License.
   Do not use this category if you have added any additional restrictions
   in the license.
** Artistic License
   The Perl Artistic License.
   Do not use this category if you have added any additional restrictions
   in the license.
** BSD
   The BSD (Berkeley Software Distribution) license.
   Permits free redistribution, use, and modification.  Requires retention
   of original copyright, and has an advertising requirement.  If the license
   does not have an advertising requirement, please list it as `/License/MIT'.
** MIT
   The MIT (Massachusetts Institute of Technology.)
   Permits free redistribution, use, and modification.  Requires retention
   of original copyright, and has no an advertising requirement.  If the
   license has an advertising requirement, please list it as `/License/BSD'.
** MPL
   Mozilla Public License.
** OSD
   Any license conforming to the Open Source Definition.
   Use this for any license that conforms to the Open Source Definition (see
   <URL:http://www.opensource.org/osd.html>) but is not one of the standard
   types like GPL, LGPL, Artistic, BSD, or MIT).  Includes the old Sunsite
   "FRS" category.
** Public Domain
   Copyrighted, but with no restrictions at all.
** Proprietary
   Any license not conforming to the Open Source Definition

* Topic
   What the software is useful for.
** Appliance
   Home appliance control, including consumer electronics
*** Radio
    Programs for running radio (AM/FM) cards.
*** X-10
    Support for the X-10 protocol for home appliance control.
** Archiving
   Tools for maintaining and searching Internet software or document archives.
** Communications
   Programs intended to help facilitate communication between humans.
   For programs to help computers communicate, see `/Topic/Networking'.
   For programs to help you use the Internet, see `/Topic/Internet'.
*** Chat
    Programs to support real-time communication over the Internet.
**** ICQ
     Programs to support ICQ
**** IRC
     Programs to support Internet Relay Chat
**** Netphone
     Programs which let you exchange speech over IP.
**** Talk
     Programs to support Unix Talk protocol (one-to-one text chat).
*** Conferencing
    Software to support real-time conferencing over the Internet
*** Email
    Programs for sending, processing, and handling electronic mail.
**** Filters
     Content-driven filters and dispatchers for electronic mail.
**** MUA
     Mail User Agents.  Programs for interactively reading and sending mail.
**** MTA
     Mail Transport Agents.  Email transport and gatewaying software.
**** Post-Office
     Programs to support post-office protocols, including POP and IMAP.
***** POP3
     Support for POP3 (Post-Office Protocol, version 3)
***** IMAP
     Support for IMAP (Internet Message Access Protocol)
*** IP-Radio
    Support for audio broadcast over IP.
*** Netnews
    Software to support USENET news.
** Cryptography
   Tools for encryption, descryption, digital signatures, and authentication.
** Development
   Programs for writing programs.
*** AI
    Artificial Intelligence.
*** Building
    Make programs and other build-process tools.
*** Compiler Generators
    Tools for generating language parsers.
*** CORBA
    Common Object Request Broker Architecture development tools.
*** Debuggers
    Programs for controlling the execution of compiled binaries.
*** Language
**** ADA
**** APL
**** Assemblers
**** C
**** C++
**** Eiffel
**** Euler
**** Forth
**** Fortran
**** INTERCAL
**** LISP
**** Logo
**** ML
**** Modula-2
**** Modula-3
**** Oberon
**** Objective C
**** Pascal
**** Perl
**** Prolog
**** Python
**** Rexx
**** Sather
**** Simula
**** Smalltalk
**** Tcl
**** Other
     Development tool for a language specified in the description.
*** Literate
    Tools for authoring programs as documents with executable parts.
*** Cross-Development
    Tools for cross-developing programs, categorized by development target.
**** MS-DOS
     Unix to MS-DOS cross-development tools.
*** Profilers
    Tools for measuring and tuning the performance of programs.
*** Version Control
    Tools for managing multiple versions of evolving sources or documents.
*** Windowing
    Development tools, toolkits and resources for window systems
    Toolkits, class libraries, interface builders and extensions go here.
**** Fonts
     Fonts and font tools for window systems.
**** Interface Builders
     Tools that generate front-end code for window applications
** Desktop
   Accessories, managors, and utilities for your digital desktop
*** Clocks
    Time displays.
*** Color
    Color pickers and palette table editors.
*** Demos
    Demonstrators, idle hacks and eye candy.
*** Screensavers
    Screen savers and lockers.
*** File Managers
    File managers and file-centered application launchers.
*** Toolbars
    Toolbar and application-dock programs.
*** Utilities
    Utilities for manipulating and changing the behavior of your desktop.
*** Window managers.
    Programs that provide window control and application launching.
** Editors
   Programs for interactively editing code or documents.
*** Emacs
    GNU Emacs and its imitators, a family of extensible editors.
*** vi
    The BSD Visual Editor and its imitators.
** Database
   Front ends, engines, and tools for database work.
*** Tool
    Role of the given database package.
**** Converters
     Converters between database formats or query languages.
**** Engines
     Programs that manage storage under the control of a query language.
**** Front-Ends
     Tools for generating queries and processing responses from engines.
*** Type
    Type of database
**** Exotic
     Exotic and research databases.
**** Flatfile
     Flat-file (simple retrieval by name or key; no relations).
**** Relational
     Relational databases using query languages other than SQL.
**** SQL
     SQL (Structured Query Language) support.
** Documentation
*** Format
# These subnodes are duplicated under Kind/Document/Format
*** DWB
    Documenter's Workbench markup: the nroff/troff/groff/tbl/pic/eqn family.
**** man
     Unix man page format.
*** DVI
    DeVice Independent format (generated by TeX).
*** FAQ
    USENET FAQ format.
*** Texinfo
    Texinfo format.
*** HTML
    HyperText Markup Language.
*** Info
    Free Software Foundation's Info format
*** Postscript
    Postscript page description language.
*** SGML
    Structured Generalized Markup Language.
*** TeX
    TeX formatting language, including LaTeX.
*** Text
    Unstructured text.
*** XML
    Extensible Markup Language.
*** Other
    All other document formats.
# Nodes duplicated under Kind/Document/Format end here
*** Tools
    Tools for document, hypertext and multimedia formats.
**** Composition
     Composition tools for document and hypertext formats.
**** Conversion
     Format conversion tools
**** Display
     Display, browsing and viewing tools.
** Education
   Programs for educating yourself or others with
*** CAI
    Programs for authoring or using Computer Aided Instruction courses
*** Language
    Vocabulary, grammar, & usage drill software for various languages.
** Emulators
   Emulations of foreign operating systems and machine, categorized by target.
** Engineering
   Engineering software, including CAD and Electronic Design Automation.
*** Electronic
    Tools for electronic design, including VLSI and circuit-boards and PLAs
** Financial
*** Accounting
    Checkbook balancers and accounting programs.
*** Investment
    Programs for assisting financial investment program.
*** Point-Of-Sale
    Point-of-sale applications.
*** Spreadsheet
    Spreadsheet programs.
** Games
*** Amusements
**** Divination
**** Fortune
**** Life
*** Arcade
**** Invaders
**** Asteroids
**** PacMan
**** Tetris
*** Cards
*** Combat
**** Doom
**** Quake
*** Dungeon
*** MUD
*** Multiplayer
**** Empire
**** Netrek
**** Tank
*** Roleplaying
*** Solitaire
*** Strategy
** Graphics
   Tools and resources for computer graphics.
   Anything under this category should probably also specify one
   or more discriminators rooted at `/Kind/Graphic/Format' to indicate
   the kind of images it can process.
*** Tools
    General-purpose graphics programs.
    Scientific visualization lives under `/Topic/Science/Visualization'
    Anything under this category should probably also specify one
    or more discriminators rooted at `/Kind/Graphic/Format' to indicate
    the kind of images it can process.
**** Capture
     Support for scanners, video capture, graphics capture from desktops.
     Anything under this category should probably also specify one
     or more discriminators rooted at `/Kind/Graphic/Format' to indicate
     the kind of images it can generate.
**** Conversion
     Programs which convert between graphics formats.
     Anything under this category should probably also specify at least two
     or more discriminators rooted at `/Kind/Graphic/Format' to indicate
     the kinds of images it can convert among.
**** Editors
     Drawing, painting, and structured-editing programs
     Anything under this category should probably also specify one
     or more discriminators rooted at `/Kind/Graphic/Format' to indicate
     the kind of images it can edit.
**** Modeling
     3D modeling tools
**** Morphing
     Programs for morphing images.
     Anything under this category should probably also specify one
     or more discriminators rooted at `/Kind/Graphic/Format' to indicate
     the kind of images it can process.
**** Ray-Tracing
     Ray-tracing programs.
     Anything under this category should probably also specify one
     or more discriminators rooted at `/Kind/Graphic/Format' to indicate
     the kind of images it can generate.
**** Presentation
     Tools for generating presentation graphics and slides.
**** Stereograms
     Generator programs for random-dot stereograms
     Anything under this category should probably also specify one
     or more discriminators rooted at `/Kind/Graphic/Format' to indicate
     the kind of images it can generate.
**** Suites
     Complete graphics toolkits including utilities and linkable libraries
     Anything under this category should probably also specify one
     or more discriminators rooted at `/Kind/Graphic/Format' to indicate
     the kind of images it can process.
**** Viewers
     Display from various graphic file formats
     Anything under this category should probably also specify one
     or more discriminators rooted at `/Kind/Graphic/Format' to indicate
     the kind of images it can display.
** Ham Radio
*** AX-25
*** Conversation
*** Logging
*** Morse Code
*** TNOS
** Internationalization
   Software to adapt your computer for non-English-language operation.
*** Chinese
    Tools for displaying and editing Chinese text.
** Internet
   Tools to assist human access to the Internet.
   For tools mainly for human-to-human use, see `/Topic/Communications'.
   For computer-to-computer networking support, see `/Topic/Networking'.
*** FTP
    Programs and tools for bulk file transfer via FTP.
*** WWW
    Programs and tools for the World Wide Web
** Mathematics
   Software to support pure and applied mathematics.
   Function-plotting programs live under `/Science/Visualization'.
*** Calculation
    Calculatord an number-crunching programs
*** Fractals
    Programs for plotting fractal objects.
*** Graphs
    Graph-manipulation (not plotting!) tools
*** Matrix
    Matrix manipulation programs (ala MATLAB)
*** Symbolic
    Programs for doing symbolic mathematics
** Office
   Integrated office suites (wp/presentation/spreadsheets/database combos).
** Sound
   Tools for generating, editing, and playing sounds.
   Look for Internet Radio under `Communications/IP-Radio'.
   Look for speech-over-IP support under `Communications/Netphones'.
   Look for cards for controlling radios under `Appliance/Radio'
*** Analysis
    Various frequency (spectrum) analyzers for signal processing.
*** CD-ROM
    Programs to play and manipulate audio CD-ROMS
**** Suites
     CD-player/database/mixer combination kits
*** Conversion
    Conversaion between various sound formats.
*** Editors
    Tools for manipulating and creating sound waves.
*** Hardware-Control
    Sound-card control utilities
*** Lightshows
    Map sound to pretty graphics
*** MIDI
    Various programs for MIDI music (not just sound).
*** Mixers
    Audio mixers.
*** Players
    Sound file players.
*** Speech
    Various speech manipulation tools
** Terminals
   Terminal emulators, terminal programs, and terminal session utilities.
*** Serial
    Programs for dialup and emulation over serial lines.
*** Telnet
    Support for TELNET: terminal sessions across Internet links.
*** Virtual
    Programs to handle multiple terminal sessions.
    Includes terminal emulations for X and other window systems.

# Local variables:
# mode: outline
# fill-column:79
# paragraph-separate: "[ 	]*$"
# end:









[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]