| Title | Revise ports / package system database backend and implement unified interface |
|---|---|
| Student | Garrett Cooper |
| Mentor | Kirill Ponomarew |
| Abstract | |
|
What is FreeBSD?
From the front page <http://freebsd.org>: FreeBSD® is an advanced operating system for x86 compatible (including Pentium® and Athlon™), amd64 compatible (including Opteron™, Athlon™64, and EM64T), UltraSPARC®, IA-64, PC-98 and ARM architectures. It is derived from BSD, the version of UNIX® developed at the University of California, Berkeley. It is developed and maintained by a large team of individuals. Additional platforms are in various stages of development. How does it run? Using a unified and integrated kernel / userland, providing a large amount of functionality to a large userbase. For any applications not included in the base system (kernel / userland), the applications must be installed via an infrastructure called "ports", which are maintained by a group of volunteers. The ports system is constructed of multiple makefiles, predefined variables, and other items. A similar analog are packages, which are versioned tar files containing precompiled ports binaries, as well as system / userland precompiled binaries. Issues: Speed: There has been a great deal of discussion on the hackers at freebsd dot org list about the speed of the package / ports database being too slow (uses standard Binary Tree with BDB). One request (the primary one) is to take the Binary Tree based storage algorithm and convert it to a Hash Table format with BDB, which would greatly increase the search / insert time, to O(c) instead of O(log(n)) or O(n) in the worst case scenario. No unified frontend: There currently isn't a unified frontend in ports, requiring admins / users to install either management applications that require ruby (which depend upon perl, not in the base system) and tend to be slow, or a unix shell script version which provides ports management, but tends to break periodically. Base / ports dependencies break other ports: There are a number of different packages included in the base system as well as in ports, and there's some confusion in the underlying ports system when it comes to which installed system to use. Some examples are OpenSSL, OpenSSH, Kerberos 5, etc. There should be some simple virtuals / entries created to the underlying ports system to allow base and ports versions of libraries / applications from not conflicting with one another. |
|