# BlueQuartz

BlueQuartz ist eine Open-Source-Bedienoberfläche für virtuelle Webserver. Es ist die Weiterentwicklung des Sun Cobalt OS. BlueQuartz' setzt auf dem freien CentOS-Betriebssystem auf, einem zu Red Hat Enterprise Linux binärkompatiblen Linux. BlueQuartz erlaubt es auch Linux-Laien, einen Linux-basierten Webserver zu installieren, zu administrieren und zu verwalten. Die mittels Browser zu bedienende Oberfläche erlaubt es dem Administrator des Servers, Domänen und Benutzer anzulegen, DNS, FTP-Zugänge und E-Mail-Konten zu verwalten. Die Bedienoberfläche steht in Englisch, Deutsch, Dänisch und Japanisch zur Verfügung.

## Geschichte
### Cobalt Networks, Inc.

Cobalt Networks Inc. startete 1996 als Garagenfirma mit drei Mitarbeitern (Mark Orr, Mark Wu, and Vivek Mehra). Zielsetzung war es, einen Internet-Server zu entwickeln, der steckerfertig und vorkonfiguriert geliefert – selbst von Laien – in wenigen Minuten in Betrieb genommen werden konnte. Im März 1998 fruchtete dieses Bemühen mit dem Verkaufsstart des Cobalt Qube.
Dieser würfelförmige Server war zunächst als Arbeitsgruppen-Rechner für kleine und mittlere Unternehmen gedacht, da er sowohl Web- und Intranet-Dienste anbot. Neben E-Mail, FTP, Web unterstützte der Qube auch die Protokolle SMB und AppleTalk, um als Domain-Controller in lokalen Netzen zu fungieren. Nach dem Qube wurde auch ein ähnlicher Server in 19"-Bauweise und speziell für Internet Service Provider zugeschnitten entwickelt. Dieses Produkt nannte man RaQ. Beim RaQ fielen die Groupware Funktionen weg. Dafür bot es die Möglichkeit, bis zu 250 Domänen pro Server zu betreiben. Sowohl vom Qube als auch vom RaQ gab es im Laufe der Jahre verschiedene Versionen. Die letzte Version des Qube war der Qube 3. Die letzte Version des RaQ war das RaQ550.

### Sun Cobalt

Nachdem Sun Cobalt Networks Inc. für zwei Mrd. Dollar aufgekauft hatte, kam die Weiterentwicklung der ehemals von Cobalt Networks entwickelten Server fast komplett zum Erliegen.
Obwohl laut Statistiken von Netcraft im August 2002 über 3 Millionen Hostnamen auf Cobalt Servern liefen, ließ Sun den Verkauf von Cobalt RAQ und Cobalt Qube 2003 ersatzlos einstellen.

### Open Source

Im Juli 2003 veröffentlichte Sun den Quelltext des Qube 3 als Open Source und unter einer modifizierten BSD-Lizenz. Im Dezember 2003 wurde auch der Quelltext des RaQ550 unter einer modifizierten BSD-Lizenz freigegeben.

## Projekt BlueQuartz

Unmittelbar nach der Veröffentlichung der Quelltexte unter der BSD-Lizenz fiel der Startschuss für Projekt BlueQuartz. Die Zielsetzung war es, sowohl für den in Japan sehr beliebten Qube 3, als auch für das RaQ550 Alternativen auf Grundlage des nun freien Quellcodes bereitzustellen.
Bei der Wahl des neuen Betriebssystems setzte man zunächst auf Fedora, jedoch erfolgte Anfang 2004 eine Umstellung auf das gerade veröffentlichte CentOS 4. In seiner Frühphase hatte BlueQuartz mit einigen Problemen zu kämpfen, da die ihm zu Grunde liegende Architektur von Sun teilweise recht unzulänglich dokumentiert worden war, bzw. detailliertere Dokumentation erst später durch ehemaligen Mitarbeitern von Sun bereitgestellt werden konnte. Zudem versuchten sich einige andere Entwickler ebenfalls am von Sun freigegebenen Quellcode und BlueQuartz hatte damit sowohl kommerzielle als auch Open Source Konkurrenten im Kampf um Anwender. Hinzu kam die etwas mühselige Prozedur zur Installation von BlueQuartz in seiner Frühphase. Dazu musste man zunächst das Betriebssystem installieren und anpassen. Danach startete man einen Installer, der das Betriebssystem umkonfigurierte, anpasste und die Komponenten der Browser basierten Bedienoberfläche installierte. Anfang 2005 veröffentlichte Brian N. Smith von NuOnce Networks, Inc. eine kostenlose Boot-CD, die sowohl Betriebssystem als auch BlueQuartz installierte und konfigurierte. Erst dadurch erlangte BlueQuartz eine zunehmend größer werdende Akzeptanz und kam zunächst für alle jene in Frage, die einen RaQ550 durch modernere Server-Hardware ersetzen mussten.

### Kommerzielle Wechselwirkung während der Entwicklung von BlueQuartz

Mitte 2005 fing der Projektleiter von Projekt BlueQuartz (Hisao Shibuya) als federführender Entwickler bei Turbolinux, Inc. an – einem Japanischen Linux-Distributor. Dort entwickelte man auf Basis des von Sun veröffentlichten Quellcodes für das RaQ550 und aus den Quellen von BlueQuartz den Turbolinux Appliance Server 2.0, auch TLAS genannt. TLAS 2.0 wurde im März 2006 veröffentlicht.
Ebenso wie BlueQuartz die Entwicklung von TLAS beschleunigt hatte, fand auch ein Informationsfluss in umgekehrter Richtung statt. Verbesserungen am kommerziellen TLAS fanden auch in den Quell-Code von BlueQuartz Einzug. Dadurch zeichnete sich letztendlich ein Interessenkonflikt ab, denn das kostenlos erhältliche BlueQuartz wurde ebenso ausgereift und bot einen vergleichbaren Funktionsumfang wie das etwa 950 US-Dollar teure TLAS 2.0.

### Verbreitung von BlueQuartz

Zunächst fand BlueQuartz vornehmlich unter ehemaligen Betreibern von RaQ550 Servern Verbreitung – vor allem, wenn es darum ging, veraltete Sun Cobalt Hardware durch neue zu ersetzen. Doch im Laufe der Zeit stießen auch neue Nutzer dazu, die bislang keine RaQ550 Server eingesetzt hatten. Laut Statistiken (Stand 04/2008) von Projekt BlueQuartz laufen mehr als 135.000 Webserver weltweit mit BlueQuartz (die Zahlen wurden durch Zählung von Update-Vorgängen erhoben und sind ggf. nicht repräsentativ).

### Die Entwickler

Zu den ursprünglichen BlueQuartz Entwicklern Hisao Shibuya, Yutaka Yasuda und Makoto Oda gesellten sich Ende 2006 auch Brian N. Smith von NuOnce Networks, Inc. und Michael Stauber von Solarspeed Ltd. hinzu, die beide seit 2000 Zusatzsoftware und Dienstleistungen für Sun Cobalt Server und deren Nachfolgesystemen anboten. Weiter verstärkt wurde das Team durch Taco Scargo, einem ehemaligen Sun Cobalt Mitarbeiter.

### Weitere Entwicklung

Obwohl CentOS 5 bereits im April 2007 veröffentlicht wurde, fanden von Seiten der Projektleitung von Team BlueQuartz keine ernsthaften Bestrebungen statt, BlueQuartz von CentOS 4 nach CentOS 5 zu portieren. Separate Vorstöße einzelner Entwickler in diese Richtung fanden keinen Rückhalt und wenig Unterstützung.
Daraufhin spaltete sich das Entwickler-Team von BlueQuartz und unter neuer Leitung wurde ein Ableger des Codes – unter dem Namen BlueOnyx – auf CentOS 5 Basis entwickelt. BlueOnyx beinhaltet zahlreiche Neuerungen und wurde am 31. Dezember 2008 veröffentlicht.
Während Hisao Shibuya, Yutaka Yasuda und Makoto Oda weiterhin BlueQuartz pflegen, hat BlueQuartz durch den Weggang wichtiger Entwickler und durch die Konkurrenz mit dem Nachfolger BlueOnyx einen zunehmend schwereren Stand.

## Grundlegende Architektur
### Sausalito

Die von Cobalt Networks Inc. entwickelte Architektur nannte man Sausalito. Im Wesentlichen ist Sausalito modular aufgebaut und Funktionen können über Module (z. B. von Drittanbietern) nachgerüstet werden.
Sausalito besteht aus folgenden Komponenten:

### Das Benutzer-Interface (UI)

Die Administrations-Oberfläche von BlueQuartz ist in PHP programmiert. Über sogenannte Skins oder Themes lässt sich das Aussehen der Administrations-Oberfläche anpassen. Die UI läuft auf einem angepassten Apache Webserver, der an spezielle Ports gebunden ist (Port 81 – HTTP / Port 444 – HTTPS). Dieser Webserver läuft als unprivilegierter Benutzer 'apache'. Er erlaubt es jedoch authentifizierten und privilegierten Benutzern, gewisse eng umrissene Funktionen auf dem darunterliegenden Betriebssystem mit Superuser-Rechten (root) auszuführen.
Nimmt ein authentifizierter Benutzer – sofern er über die entsprechenden Rechte verfügt – eine Änderung am System vor (z. B. legt eine neue virtuelle Webseite an), so schreibt Sausalito einen Eintrag in eine interne Datenbank. Diese Datenbank nennt man CODB – oder Cobalt Object Database.

### CODB: Cobalt Object Database

Die Cobalt Object Database ist eine objektorientierte Datenbank zur Speicherung von Parametern, Einstellungen und Daten des Webservers. In der Datenbank gespeicherte Objekte gehören zu Klassen, innerhalb derer man Namensräume und Inhalte über XML Schemata frei definieren kann. Ebenso kann per XML Schemata direkt vorkonfiguriert werden, welche Art von Inhalten in einen bestimmten Namensraum innerhalb der Klasse geschrieben werden kann und welche Gruppe von Benutzern Schreibzugriff auf diese Klasse hat. Ein Namensraum für den der Typ 'emailAddress' definiert wurde, kann zum Beispiel nur Inhalte aufnehmen, die einer gültigen E-Mail-Adresse entsprechen. CODB nimmt beim Speichern von Inhalten eine Prüfung der übermittelten Daten vor. So wird einerseits geprüft, ob der Benutzer für den Schreibzugriff berechtigt ist und andererseits auch, ob die zu speichernden Daten dem erwarteten Typ entsprechen.

### CCE: Cobalt Configuration Engine

CCE (Cobalt Configuration Engine) ist die Schnittstelle zwischen der Administrations-Oberfläche und CODB (Cobalt Object Database). Sie übernimmt die Authentifizierung der Benutzer und gleicht diese mit den Mechanismen zur Benutzerverwaltung des Betriebssystems ab. Ebenfalls verwaltet CCE Datenbank-Anfragen der UI lesend und schreibend.
CCE besteht aus einem Dämon, der ständig im Hintergrund läuft, sowie aus einem Client, der bei Bedarf von der Kommandozeile aus genutzt werden kann, um administrative Funktionen auszuführen.

#### Konfigurationsdateien

Über Konfigurationsdateien lässt sich CCE so konfigurieren, dass es bestimmte Operationen mit Superuser-Rechten ausführt, wenn gewisse Datenbank-Felder angelegt, verändert oder gelöscht werden. Um solche privilegierten Operationen durchzuführen, startet CCE nach Überprüfung der Berechtigung des Nutzers einen Handler, der diese Operation durchführt.

#### Handlers

Ein Handler ist ein in Perl oder PHP programmiertes Script, welches gewisse eng umrissene Aufgaben auf dem Filesystem des Servers mit Superuser-Rechten ausführen kann. Diese Scripte können aus Sicherheitsgründen nur von CCE selbst angestoßen werden. Handler werden zum Beispiel genutzt, um Benutzer oder virtuelle Webseiten anzulegen, oder Konfigurationsdateien des Servers anzupassen.

#### Constructors

Ähnlich wie ein Handler ist ein Constructor ein in Perl oder PHP programmiertes Script, welches gewisse Aufgaben auf dem Filesystem mit Superuser-Rechten ausführt. Jedoch läuft ein Constructor in der Regel nur einmalig beim Start des Servers, oder beim Start des CCE-Dämons. Constructors verwendet man zum Beispiel, um Informationen über das Betriebssystem und seine Konfiguration einzulesen und diese in der Cobalt Object Database zu speichern.

### PHP und i18n

Da die Kommunikation zwischen UI und CCE über ein angepasstes i18n-Modul von PHP erfolgt, gehört PHP zu den wenigen Komponenten auf einem BlueQuartz, die man nur bedingt aktualisieren oder durch neuere Versionen ersetzen kann. Ansonsten wird unter Umständen die Kommunikation zwischen UI und CCE unterbrochen. Möchte man dennoch PHP um mehrere Versionssprünge aktualisieren, empfiehlt sich eine Installation des aktuelleren PHPs in ein separates Verzeichnis.

### Betriebssystem

Generell kann der Quelltext von BlueQuartz leicht so angepasst werden, dass er auf jedem Linux- oder Unix-Derivat läuft. Hierzu sind lediglich kleinere Anpassungen am Quelltext nötig, sowie das Kompilieren der Quelltexte für die neue Plattform. Da alle weiterführenden Funktionen der BlueQuartz Oberfläche modular sind, kann man zum Beispiel für eigene auf BlueQuartz basierte Projekte Module wie die Mailinglisten-Verwaltung, die Benutzerverwaltung oder das Modul zum Verwalten von virtuellen Websites weglassen. Dadurch erhält man ein durchdachtes und ausgereiftes Framework für eine eigene Administrationsoberfläche.

### PKGs

PKGs sind spezielle Pakete, die es erlauben – unabhängig vom Update-Mechanismus des Betriebssystems – BlueQuartz mit zusätzlicher Software auszurüsten. PKGs bestehen aus Dateien, die mittels Tar und Gzip gepackt wurden. Innerhalb eines PKGs befinden sich RPMs, eine Liste mit zu installierenden Files, sowie Scripte, die bei der Installation oder Deinstallation des PKGs laufen.

## Verwandte Projekte

Nach der Veröffentlichung des Quellcodes des Qube 3 und des RaQ550 gab es Bestrebungen verschiedener Firmen und Gruppierungen, auf Basis dieses Codes eine vergleichbare Lösung zu bauen. Nicht alle waren von Erfolg gekrönt.

### Aktiv

* BlueOnyx Weiterentwicklung von Bluequartz
* Aventurin{e} Linux Virtualisierungslösung auf Basis von BlueQuartz.
* Strongbolt Linux BlueQuartz + CentOS Distribution zur Installation auf original Sun Cobalt Hardware.
* Turbolinux Appliance Server 2.0 RaQ auf Turbolinux Basis.
* NetSHAKER BlueRack / Yasukawa Info. systems, Inc. Japanisch, basierend auf dem RaQ550 Code.
* ClassCat Cute Server Appliance / ClassCat, Inc. Japanisch, basierend auf dem RaQ550 Code.
* NetBSD auf Cobalt Servern Englisch, komplett unabhängig von den Linux-Projekten.

### Eingestellt

* Argon Umbenanntes TLAS 2.0 vorinstalliert auf Hardware.
* Efinity F-560 RaQ auf FreeBSD-Basis.
* RaQDevil RaQ auf FreeBSD-Basis.