Proposal for Exceptions to the ARB Process
The purpose of this document is to propose a set of exceptions to the current requirements for an application submitted to the community-driven evaluation board (ARB) for review.
Some key points:
- Refinements and changes to the original process specification were always anticipated, to be approved by the Ubuntu Technical Board.
- Gaps in existing technology make it difficult or impossible for applications to meet some requirements.
- Changes to existing tools, currently underway, will make it possible to meet all requirements, so only temporary exceptions are needed.
The approved process for the ARB includes the requirement that "The application and its files should be packaged under /opt." In the process of reviewing the initial applications to the ARB, we have encountered several obstacles to this requirement in current tools and system configurations on Ubuntu.
- The menu doesn't look for .desktop files in /opt.
- The panel doesn't look for applets in /opt.
- There is no support in Quickly, python-distutils-extra, python-distutils, and python-support for installing Python binaries and libraries in /opt. Specifically, they cannot generate the compiled .pyc files, and cannot generate the symlinks needed to work with different versions of Python. Quickly also needs to include another python_path to work with libraries installed in /opt.
Rather than delay all ARB applications until after the Natty cycle, we would like to relax some of the requirements for ARB applications in Maverick. The volume of ARB proposals is currently quite low (only 4 so far), so it's possible for the ARB to spend a much greater amount of time on each individual proposal to ensure that it is safe, even with relaxed restrictions.
The ARB proposes that the Tech Board temporarily waives the requirement for /opt installation until the 11.04 release, in cases where it is technically impossible to install in /opt.
To increase the separation of extras from regular applications, files installed outside /opt will be required to either prepend "extras" to their name (e.g. "extras-<appname>.desktop"), or to add "extras" to their path (e.g. "/usr/lib/python2.6/extras/...").
- The packages quickly, python-distutils-extra, python-distutils, and python-support will be modified to support generating .pyc files and Python version symlinks during installation (by adding a "--prefix=" option to specify the /opt/extras.ubuntu.com/ path).
- Quickly will include a python_path to work with Python libraries installed in /opt/extras.ubuntu.com/lib.
Quickly will not directly support Python libraries (private submodules) installed in /opt/extras.ubuntu.com/<appname>/lib, but we will provide developer documentation on how to do so.
- Quickly will automatically perform name-mangling on .desktop and panel files after Natty, until system packages support these files living in /opt.
A broader set of system packages will need to be modified to support other files installed in /opt. The current estimate is at least 30 core packages in main would require changes. Are these changes that the Tech Board and the community as a whole want to make? As an example of where extended path searching is required:
- Check /opt/extras.ubuntu.com/applications/ for .desktop files in addition to /usr/share/applications/
- Check /opt/extras.ubuntu.com/application-registry/ for .applications files in addition to /usr/share/application-registry/
- Check /opt/extras.ubuntu.com/xdg/autostart/ for autostart desktop files in addition to /etc/xdg/autostart/
- Check /opt/extras.ubuntu.com/xdg/menus/ for menu items in addition to /etc/xdg/menus/
- Check /opt/extras.ubuntu.com/dbus-1/services/ for dbus services in addition to /usr/share/dbus-1/services/
- Check /opt/extras.ubuntu.com/unity/places for unity places in addition to /usr/share/unity/places/