This is a fairly random list of things that apply to desktop "components". "Components" is supposed to mean parts of the desktop, which includes apps for the desktop, supporting libraries/frameworks, tools/daemons/etc. that belong to the desktop, etc.
Should, should not, must, must not, may, recommend with the usual meanings.
Components may assume that AppKit will support tiff, png, and jpeg images.
Rationale: GNUstep may be built with only tiff support, but forcing all components to use only tiff images would be too cumbersome. Thus, we require png and jpeg support.
A component must build with the standard commands make; make install in its top-level directory. It is recommended that the GNUstep makefile system be used. If it is used, all standard flags and options should be honored.
Rationale: To make building and installation easy for users, there should be a consistent and easy way of doing this.
Components must support being installed in any domain.
Rationale: A user might not have write permissions for any other domain than the user domain, but should still be able to install and use the desktop.
It is recommended components use -Wall when compiling, and that they compile without any warnings.
Rationale: Code should be clean. (too pedantic? :)
Components should not use -Werror.
Rationale: Warnings are warnings, not errors. Users are not interested in mere warnings, so forcing them to be errors makes building unnecessarily hard for them.
("obvious" correctness issues? only ascii in constant NSString:s. must work with any cstring encoding. avoid extensions.)
Components must provide an English translation.
Rationale: It should be possible to get a consistently translated environment in at least one language, and English is the only reasonable choice. If we get some dedicated translators, we may want to add a should (or even must) for those languages.