(warning: this is really long) Studying Freedesktop's shared-mime-info, I noticed a lot of x- mime types, which according to RFC4288 (Media Type Specifications and Registration Procedures), section 3.4
"These types are unregistered, experimental, and for use only with the active agreement of the parties exchanging them." should not be used in a standard specification, as they cannot be interoperable. In particular, it means that Web or Mail applications cannot interoperate safely with the shared mime database, as HTTP and MIME don't follow Freedesktop recommendations (but do follow IETF). There are many of these, but some are more important, because they represent types directly under Freedesktop responsibility and thus should be formally registered with IANA. Also, I noted that for some weird reasons, many types have a non experimental alias listed within them. The database should be changed to expose the official media type, instead of the x- type. So, let's show the result of reading through the database. First of all, the primary media types (before the slash, that is), which require an RFC: - x-content/*: as it is unlikely that IANA will allow registering content/*, it may require renaming to unknown-content/*, generic-content/*, or better to media-support/*, since that is what it is used for currently (as a side note: unix is a registered trademark) - inode/*: this does not use x-, but it is not a registered media type, according to http://www.iana.org/assignments/media-types/index.html - registration is necessary, I think - font/*: I'm not sure font faces can be stuffed inside application/*, a new primary media type may be discussed Secondly, I believe the following need full RFC standarization, as their format is widely used and possibly already a recognized standard - application/x-executable => application/executable - application/x-core => application/core-file - application/x-object => application/object-file - application/x-sharedlib => application/shared-library - application/x-bzip => application/bzip - application/x-gzip => application/gzip - application/x-lzma => application/lzma - application/x-xz => application/xz - application/x-tar => application/tar-archive - application/x-bzip-compressed-tar => application/tar-archive+bzip - application/x-compressed-tar => application/tar-archive+gzip - application/x-lzma-compressed-tar => application/tar-archive+lzma - application/x-xz => application/tar-archive+xz - application/x-cd-image => application/iso-cd-image - application/x-matroska => application/matroska - video/x-matroska => video/matroska - audio/x-matroska => audio/matroska - audio/x-vorbis+ogg => audio/vorbis+ogg - audio/x-flac+ogg => audio/flac+ogg - audio/x-speex+ogg => audio/speex+ogg - audio/x-speex => audio/speex - video/x-theora+ogg => video/theora+ogg - video/x-ogm+ogg => video/ogm+ogg - application/x-pkcs7-certificates => application/pkcs7-certificates - application/x-pkcs12 => application/pkcs12 - application/x-x509-ca-cert => application/x509-ca-cert - text/x-adasrc => text/source-code-ada - text/x-c++hdr => text/source-code-cpp-header (I think + is a reserved char) - text/x-c++src => text/source-code-cpp - text/x-chdr => text/source-code-c-header - text/x-csrc => text/source-code-c - text/x-csharp => text/source-code-csharp - text/x-fortran => text/source-code-fortran - text/x-pascal => text/source-code-pascal - text/x-sql => text/source-code-sql Then, various freedesktop specific x- subtypes should go in the freedesktop vendor subtree. - application/x-xbel => application/vnd.freedesktop.xbel+xml - application/x-desktop => application/vnd.freedesktop.desktop-entry - application/x-theme => application/vnd.freedesktop.theme - application/x-trash => application/vnd.freedesktop.backup-file - application/x-zerosize => application/vnd.freedesktop.empty - image/x-xcursor => image/vnd.freedesktop.cursor (or image/vnd.xorg.cursor) - image/x-xbitmap => image/vnd.xorg.bitmap - image/x-xpixmap => image/vnd.xorg.pixmap Other free software vendor specific media types (for vendors likely to follow the xdg list) - application/x-abiword => application/vnd.abiword.document - application/x-dia-diagram => application/vnd.gnu.dia-diagram - application/x-dia-shape => application/vnd.gnu.dia-shape - application/x-deb => application/vnd.debian.package - application/x-designer => application/vnd.nokia.qt-designer - application/x-e-theme => application/vnd.enlightment.theme - application/x-gettext-translation => application/vnd.gnu.gettext-machine-object - application/x-glade => application/vnd.gnome.glade - application/x-gnucash => application/vnd.gnu.cash - application/x-gnumeric => application/vnd.gnu.spreadsheet - application/x-gnuplot => application/vnd.gnu.plot - application/x-karbon => application/vnd.kde.karbon - application/x-kchart => application/vnd.kde.kchart - application/x-kexi-connectiondata => application/vnd.kde.kexi-connectiondata - application/x-kexiproject-shortcut => application/vnd.kde.kexi-shortcut - application/x-kexiproject-sqlite? => application/vnd.kde.kexi-sqlite? - application/x-kformula => application/vnd.kde.kformula - application/x-killustrator => application/vnd.kde.killustrator - application/x-kivio => application/vnd.kde.kivio - application/x-kontour => application/vnd.kde.kontour - application/x-kpovmodeler => application/vnd.kde.kpovmodeler - application/x-kpresenter => application/vnd.kde.kpresenter - application/x-krita => application/vnd.kde.krita - application/x-kspread => application/vnd.kde.kspread - application/x-kspread-crypt => application/vnd.kde.kspread-crypt - application/x-ksysv-package => application/vnd.kde.ksysv-package - application/x-kugar => application/vnd.kde.kugar - application/x-kword => application/vnd.kde.kword - application/x-kword-crypt => application/vnd.kde.kword-crypt - application/x-mozilla-bookmarks => application/vnd.mozilla.bookmarks - application/x-nautilus-link => application/vnd.gnome.nautilus-link - application/x-oleo => application/vnd.gnu.oleo - application/x-profile => application/vnd.gnu.profile - application/x-rpm => application/vnd.redhat.package - application/x-shared-library-la => application/vnd.gnu.libtool-archive - image/x-compressed-xcf => image/vnd.gnu.compressed-xcf - image/x-xcf => image/vnd.gnu.xcf - message/x-gnu-rmail => message/vnd.gnu.rmail - text/x-vala => text/vnd.gnome.source-code-vala - text/x-emacs-lisp => text/vnd.gnu.emacs-lisp - text/x-gettext-translation => text/vnd.gnu.gettext - text/x-gettext-translation-template => text/vnd.gnu.gettext-template - text/x-moc => text/vnd.nokia.qt-moc - text/x-rpm-spec => text/vnd.redhat.package-spec - application/x-xpinstall => application/vnd.mozilla.xpinstall (I marked every application/x-k* as part of the KDE project, some may actually be independent apps for the KDE platform. Nevertheless, there are a lot of k* mime types, it would be good for those apps to go for standard defined formats) Then the standard Unix file types (beyond those covered by inode/*). In this case, and if this proposal is approved, the Open Group should be asked for a formal registration. - application/x-archive => application/vnd.unix.ar - application/x-awk => application/vnd.unix.awk - application/x-bcpio => application/vnd.unix.binary-cpio - application/x-compress => application/vnd.unix.compress - application/x-cpio => application/vnd.unix.cpio - application/x-m4 => application/vnd.unix.m4 - application/x-reject => application/vnd.unix.patch-reject - application/x-shar => application/vnd.unix.shell-archive - application/x-shellscript => application/vnd.unix.shell-script - application/x-tarz => application/tar-archive+vnd.unix.compress (is this legal?) - application/x-troff-man => application/vnd.unix.manual-page - application/x-troff-man-compressed => application/vnd.unix.manual-page-compressed - text/x-makefile => text/vnd.unix.makefile - text/x-patch => text/vnd.unix.patch I'm not sure about the following - text/x-authors - text/x-changelog (=> text/vnd.gnu.changelog ?) - text/x-copying (=> text/vnd.gnu.license ?) - text/x-credits - text/x-install - text/x-log - text/x-readme - text/x-uri (=> text/vnd.freedesktop.uri ?) A lot more experimental media types exist, but cannot be changed without cooperation with the responsible organization, which should be contacted. I have a full list if someone wants it. I believe this change will help the shared-mime-info becoming the de-facto standard for converting from a file (with a name and some data) to a full media type, helping the adoption of Freedesktop and Internet standards. I know it will require a lot of work, not only changing the database and sending mails to IANA, but also updating the applications accordingly, but I think it is worth it. Any comments appreciated Giovanni _______________________________________________ xdg mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/xdg
