|
FAQ
This is a compilation of the most frequently asked questions regarding the Canopy project. This FAQ should be updated on a regular basis depending on what questions often come back in the groups or on mailing lists. 1. General1.1 What is Canopy? In one sentence, Canopy is a lightweight, secure, multi-threaded Web server. It is lightweight because great care is put into making the structures and codebase as small as possible. Any functionality that is not part of basic HTTP protocol handling is kept in modules that can be loaded at runtime. 1.2 Why should I use Canopy? Right now, the only reason why you would want to try Canopy is if you want to experiment with a small, clean HTTP server and hack on the code (in other words, developers only). The code base still fluctuates a lot and the server has not yet reached the level of stability required to make it run on production machines. 2. Installation, Configuration2.1 I don't see any configure script, how do I configure before building? You don't need to! One of the goals of the project is to keep the build infrastructure as simple as possible to avoid the whole autoconf mumbo jumbo. You will need a BSD-compatible make(1) tool to compile the tree. 2.2 I try to run make and it says "Makefile:5: *** missing separator. Stop." You are probably trying to run the GNU project's version of make, which is not compatible with the BSD version. You need to download a port of BSD make in order to compile the source tree (see Installation for details). 2.3 Will Canopy run on my XYZnix operating system? The source code for Canopy attempts to stay in full compliance of the POSIX and ANSI C specifications. Because most modern UNIX variants conform to these specifications, it is very likely that Canopy will compile and run on a lot of systems which we have not tested it on. 2.4 Does Canopy run on Windows operating systems? No, and it probably never will. I have no interest in working on a Windows port, and there are already plenty of other Web servers out there that will run fine on Windows. 2.5 Can I use my Apache configuration for Canopy? Not directly. Apache and Canopy have slightly different configuration file formats, but they are close enough that it is possible to translate an Apache-style httpd.conf file into a Canopy configuration file by running a small Perl script called scalp and located in the source tree, under src/usr/bin/scalp . 2.6 Can I configure Canopy to run through inetd? Not at this time, and I am not sure that I want to provide this feature, mostly because I don't like inetd. 3. HTTP Protocol3.1 Does Canopy support protocol versions older than HTTP/1.1? To some extent, yes. The HTTP code will understand the request without any problems, but Virtual Hosts complicate the handling a bit because there was no Host header prior to HTTP/1.1, so it is impossible to use Virtual Hosts in that context. See the documentation of Virtual Hosts for an explanation of the problem and possible workarounds. 3.2 Is Canopy tolerant to broken applications? By default, Canopy strictly follows the HTTP/1.1 specification and will reject requests that do not respect the RFC. This is less than ideal in real world scenarios, where developers rarely follow standards correctly, and applications generate messages that do not respect the protocol (such as using a LF instead of the expected CRLF for line termination). For this reason, the HTTP library can be made tolerant to broken applications, according to the tolerance guidellines listed in Section 19.3 of the HTTP/1.1 RFC. 4. Development4.1 How can I help the project? The most obvious way to help the project is to write new code to help support more features and better compliance to the HTTP protocol, but there are other things to do, such as writing documentation (Wiki pages, manual pages, etc.), testing the software for potential bugs, graphics for the default HTML pages that ship with the distribution, etc. Before starting to work on anything, it is a good idea to contact the project members and discuss it with them. This way, we will avoid duplication of work and wasted efforts. 4.2 How do I submit new code to the project? New code for the Canopy source tree can be submitted in the form of patches compatible with the format of the UNIX diff(1) (you must use the -u option to generate unified diffs, which are much more pleasant to the eyes) and patch(1) tools. Before submitting any new code, make sure that it complies with the project's coding guidelines. Code which does not comply with the guidelines will not be considered for review. Project developers are not source code janitors! 4.3 How do I contact the project team members? You can do so through one of the Google Groups that are linked to the project's home page. 4.4 How do I become a member? You can become a project member if you have contributed to the project, whether you submit code patches, valid bug reports or documentation. The project administrators are in charge of deciding who can join the project. 5. Miscellaneous5.1 Your logo is horrible. Can I submit a new one? YES! The logo IS horrible, and suggestions or propositions will be accepted for review. But please stick to the concept of the rainforest canopy. Also, make sure that the logo is in Portable Network Graphics (PNG) format. |