GEDCOM

Das GEDCOM-Dateiformat ist ein Austauschformat für Familiendaten. GEDCOM entstand bereits in den 1980er Jahren und hat sich über die Jahre quasi als Standard etabliert. Nahezu jedes aktuelle Programm der Familienforschung kann GEDCOM-Dateien lesen (öffnen bzw. importieren) oder schreiben (speichern bzw. exportieren) – so auch Ahnenblatt. Will man als Anwender komplett auf eine neue Software wechseln, so muss man nicht alle Familiendaten neu eingeben, sondern speichert in der alten Software die Daten im GEDCOM-Format, um sie in der neuen Software zu übernehmen. Durch dieses einfache Verfahren ist es auch möglich eine andere Software mit den eigenen Daten auszuprobieren oder parallel eine andere Software als „Zweitprogramm“ zu nutzen, um bestimmte Funktionen, die das „Hauptprogramm“ nicht bietet (z.B. Erstellen von Listen, Tafeln oder HTML-Seiten), zu verwenden. Auch wenn man seine Familiendaten anderen Forschern zur Verfügung stellen will und nicht weiß, welche Software sie einsetzen, empfiehlt sich immer das GEDCOM-Format.

Warum ist es dann nicht empfehlenswert mit mehreren Programmen abwechselnd die gleiche GEDOM-Datei zu bearbeiten? Warum gibt es überhaupt andere Dateiformate, wenn GEDCOM alles kann? Diese Fragen und noch andere Behauptungen sollen im Weiteren näher beleuchtet werden.

 

„Was ist das Besondere am GEDCOM-Dateiformat?“

Ahnenblatt Gedcom mini

Das GEDCOM-Dateiformat ist auch nach mehr als 30 Jahren immer noch weit verbreitet und somit haben die Erfinder schon etwas Geniales geschaffen. Es gibt mehrere Punkte, die das GEDCOM-Dateiformat besonders auszeichnen.

1. Einfachheit

GEDCOM-Dateien sind rein textbasiert und lassen sich mit einem Texteditor ganz einfach zur Kontrolle öffnen. Somit sind Fehler innerhalb einer GEDCOM-Datei immer sehr schnell auszumachen.
Die Zeilen sind mit Hilfe einer führenden Nummer strukturiert, wodurch es einem lesenden Programm ermöglicht wird ganze Zeilenblöcke zu ignorieren, ohne an der Gesamtdatei zu scheitern. Zeilen, die vom lesenden Programm nicht interpretiert werden können, werden einfach ignoriert.
Die verwendeten Schlüsselwörter innerhalb einer GEDCOM-Datei, um z.B. Ereignisse zu kennzeichnen, sind Kürzel, die sich aus dem Englischen ableiten. Dadurch ist eine GEDCOM-Datei in einem Texteditor geöffnet auch halbwegs lesbar.

2. Dokumentation

Von je her gab es auch immer eine umfangreiche Dokumentation des GEDCOM-Formats. Diese Dokumentation liegt allerdings ausschließlich in englischer Sprache vor.

3. Erweiterbarkeit

Die Erfinder von GEDCOM haben in ihrer Dokumentation zwar schon sehr viele Kürzel für die verschiedensten Ereignisse eingebaut, aber dennoch auch eine Möglichkeit zur Erweiterung um neue Ereignisse vorgesehen.

4. Zeichencodierungen

Ein internationaler Einsatz von GEDCOM war nur dadurch möglich, da das GEDCOM-Format für den Umgang mit allen Zeichensätzen dieser Welt vorbereitet wurde (osteuropäische Sonderzeichen, aber auch kyrillisch, griechisch, chinesisch, …). Man hat schon recht früh diverse Zeichencodierungen vorgesehen – auch wenn zu diesem Zeitpunkt die Betriebssysteme dieses in gleichem Umfang noch gar nicht unterstützten.

 

„Die GEDCOM-Datei ist angeblich zu alt oder hat die falsche Versionsnummer.“

Ahnenblatt Import Fehler mini

In jeder GEDCOM-Datei wird auch immer die Versionsnummer des verwendeten GEDCOM-Standards abgespeichert. Da das GEDCOM-Format aber erlaubt unbekannte Daten zu überlesen, sind GEDCOM-Dateien abwärts- als auch aufwärtskompatibel. Das heißt, moderne Programme können alte GEDCOM-Dateien lesen und ältere Programme können auch mit neueren GEDCOM-Standards klar kommen. So zumindest in Theorie – bei „sauberer“ Programmierung.
Es macht daher wenig Sinn, das Einlesen einer GEDCOM-Datei gänzlich zu verweigern, nur weil die Versionsnummer keinem bekanntem Muster entspricht oder zu alt ist. In der Praxis kommt es äußerst selten vor, aber dennoch sollen bestimmte Versionen namhafter Programme so verfahren. Ein gutes Programm liest auch aus älteren GEDCOM-Dateien noch zu interpretierende Informationen heraus.

Wie macht es Ahnenblatt?

Ahnenblatt liest GEDCOM-Dateien unabhängig der verwendeten internen Versionsnummer.

 

„Beim Öffnen einer GEDCOM-Datei gibt es immer Fehlerhinweise.“

Ahnenblatt Fehler mini

Da das GEDCOM-Dateiformat Erweiterungen zulässt, die nicht von jedem Programm verstanden werden (weil deren Sinn und Verwendung nicht bekannt sind), wird ein Programm beim Einlesen einer solchen GEDCOM-Datei diese Informationen bzw. Zeilen ignorieren. Es ist durchaus sinnvoll den Anwender darauf hinzuweisen, dass bestimmte Daten nicht übernommen wurden. Die Programme gehen sehr unterschiedlich damit um. Einige Programme erlauben sogar eine Zuordnung der unbekannten Daten zu bekannten Feldern.
Mittlerweile gibt es aber kaum Programme, die gänzlich ohne eigene Datenerweiterungen in GEDCOM-Dateien auskommen, so dass es zur Tagesordnung gehört, dass es beim Öffnen einer programmfremden GEDCOM-Datei Problem- oder Fehlermeldungen gibt. Die Meldungen sind zumeist so kryptisch, dass es dem Anwender schwer fällt, die Auswirkungen zu beurteilen.
Solange man nicht gänzlich auf eine andere Software umsteigen will, kann man getrost diese Meldungen ignorieren. Ansonsten sollte man seine Daten sehr genau im neuen Programm prüfen.

Wie macht es Ahnenblatt?

Seit der Programmversion 2.80 merkt sich Ahnenblatt alle Daten einer GEDCOM-Datei. Unbekannte Daten werden intern gespeichert, auch wenn sie für Auswertungen oder Listen nicht verwendet werden. Erst wenn in späteren Versionen von Ahnenblatt zusätzliche Eingabefelder hinzukommen, werden auch diese Daten sichtbar und editierbar. Werden diese Daten von Ahnenblatt wieder im GEDCOM-Format gespeichert, bleiben auch unbekannte Daten erhalten.
Ahnenblatt zeigt nach dem Öffnen von GEDCOM-Dateien einen Import Bericht (auch separat über „Datei / Import Bericht…“ aufrufbar), wird dort aber eher selten auf Fehler oder Probleme hinweisen, da ja grundsätzlich keine Daten mehr ignoriert werden.

 

„Manchmal werden bei einer GEDCOM-Datei Sonderzeichen nicht korrekt dargestellt.“

GEDCOM Sonderzeichen mini

Viele Programmierer, die vor vielen Jahren den GEDCOM-Standard in ihren Programmen umgesetzt haben, taten das nur anhand der Analyse bestehender GEDCOM-Dateien – ohne jemals die GEDCOM-Dokumentation gelesen zu haben. Dadurch wurde aus Unwissenheit oftmals die Zeichencodierung falsch umgesetzt. So hat sich über die Jahre die Zeichencodierung „ANSI“ durchgesetzt, obwohl laut GEDCOM-Standard gar nicht zulässig. Aufgrund der Beschränktheit vieler Programmiersprachen konnten die Zeichencodierungen „UNICODE“ oder „UTF-8“ erst spät in den Programmen umgesetzt werden. Daher mag es aktuell durchaus noch Programme geben, die nicht vollständig mit Unicode umgehen können.
Die Folge daraus ist, dass vor allem deutsche Umlaute, aber auch osteuropäische Sonderzeichen, nicht korrekt erkannt werden. Viele Programme versuchen dieses zu umgehen, in dem sie dem Anwender die Auswahl der korrekten Zeichencodierung überlassen. Der hat dann die Auswahl zwischen Begriffen wie „UTF-8“, „UTF-16“, „ANSEL“ und diversen ANSI-Varianten – manchmal wird dazu ein Ausschnitt der GEDCOM-Datei gezeigt, um die Unterschiede beurteilen zu können.
Es handelt sich jedenfalls nicht um ein Problem von GEDCOM, sondern um eine mangelhafte Umsetzung von Zeichencodierungen in den Programmen.

Wie macht es Ahnenblatt?

Ahnenblatt verzichtet gänzlich darauf den Anwender mit der Zeichencodierungsproblematik zu konfrontieren. Eine Auswahl der Zeichencodierung ist daher nicht notwendig, da Ahnenblatt intern diverse Zeichencodierungen erkennt – sowohl alle laut GEDCOM-Standard zuässigen, als auch diverse offiziell nicht zulässige, die aber in der Praxis durchaus noch vorkommen. Probleme, dass die in einer GEDCOM-Datei genannte Zeichencodierung nicht der tatsächlich verwendeten Zeichencodierung entspricht, sind in der Praxis kaum noch anzutreffen.
Ahnenblatt arbeitet intern komplett mit Unicode, daher können alle Zeichen korrekt dargestellt werden (ob osteuropäische Sonderzeichen, kyrillische, griechische oder chinesische Zeichen).
Beim Speichern verwendet Ahnenblatt derzeit allerdings bevorzugt noch die laut GEDCOM-Standard nicht zulässige Zeichencodierung „ANSI“, da in der Praxis damit am wenigsten Probleme auftreten. Nur wenn es die eingegebenen Daten erfordern, wird das umfangreichere „UTF-8“ verwendet. Dieses ist der Fall, wenn z.B. deutsche Umlaute und osteuropäische Sonderzeichen gemeinsam verwendet werden.

 

„Beim GEDCOM-Datenaustausch kommen nicht immer alle Daten an.“

GEDCOM Daten fehlen mini

Viele Programme verfahren beim Einlesen einer GEDCOM-Datei nach dem Motto „Ignoriere unbekannte Daten“. Daher werden zumeist nur die Daten übernommen, für die auch eigene Eingabefelder existieren.
Beispiel: manche Programme erlauben die Eingabe mehrerer Elternpaare oder mehrerer Berufe. Eine GEDCOM-Datei aus einem solchen Programm, wird alle Daten korrekt beinhalten, aber wenn das empfangene Programm mit dem mehrfachen Vorkommen nicht umgehen kann, wird es einen Teil davon ignorieren bzw. löschen. Speichert man die Daten wieder im GEDCOM-Format ab, dann wird dieser Teil der Informationen fehlen.
Das ist kein grundsätzlicher Mangel des GEDCOM-Formats. Programme sind in ihren Möglichkeiten nun mal unterschiedlich und entnehmen zumeist nur die Daten einer GEDCOM-Datei, mit denen sie etwas anfangen können. Daher sollte man tunlichst vermeiden eine GEDCOM-Datei abwechselnd mit verschiedenen Programmen zu bearbeiten. Jedes Programm wird andere Daten ignorieren und am Ende enthält die Datei nur „den kleinsten gemeinsamen Nenner“ der Daten.
Ein weiterer Grund dafür, dass Daten nicht korrekt im Zielprogramm ankommen, kann sein, dass der GEDCOM-Standard unterschiedlich bzw. falsch interpretiert wurde. Die GEDCOM-Dokumentation ist sehr umfangreich und nicht in allen Belangen immer eindeutig. Da hilft es miteinander zu reden. Als Anwender kann man nur die Programmhersteller darauf hinweisen, in der Hoffnung, dass diese solche Punkte nachbessern.
Was auch immer berücksichtigt werden muss, ist, dass beim GEDCOM-Datenaustausch zwei Programme beteiligt sind. Wenn es zu Problemen bei der Dateiübertragung kommt, dann liegt es selten am GEDCOM-Standard selbst, sondern an einer mangelhaften Umsetzung bei einem der beteiligten Programme. Nicht immer ist das Zielprogramm schuld.
Jedes Programm sollte immer sämtliche eingegebene Daten in einer GEDCOM-Datei speichern. Dieses muss aber nicht so sein – Ausnahmen bestätigen die Regel. Aufgrund der Einfachheit des GEDCOM-Formats lässt sich dieses mit einem Texteditor relativ leicht überprüfen.

Wie macht es Ahnenblatt?

Ahnenblatt merkt sich alle Daten einer GEDCOM-Datei, selbst die Daten, für die kein eigenes Eingabefeld existiert. Wenn die Daten von Ahnenblatt wieder im GEDCOM-Format gespeichert werden, gehen dadurch keine Daten verloren. Es mag zwar der Eindruck entstehen, dass Daten, die man in den Eingabefeldern nicht wiederfindet, verschwunden sind – dem ist aber nicht so.
Weiterhin werden GEDCOM-Erweiterungen anderer Programme, sofern möglich und bekannt, sinnvoll in Ahnenblatt umgesetzt. So erkennt Ahnenblatt diverse Varianten einer Rufnamen-Kennzeichnung oder mehrere Kennzeichnungen der „Hauptperson“ einer Datei. Beides Dinge, die der GEDCOM-Standard nicht explizit vorsah.
Ahnenblatt speichert grundsätzlich ausnahmslos alle eingegebenen Daten in einer GEDCOM-Datei – eine Grundvoraussetzung dafür, dass die Daten überhaupt in einem Zielprogramm ankommen können.
Ahnenblatt ist zudem auf der Mailingliste GEDCOM-L des Vereins für Computergenealogie e.V. zur vereinheitlichten Nutzung von GEDCOM vertreten. Dort sind über 30 zumeist deutschsprachige Programmhersteller Mitglied, die sich seit Jahren über GEDCOM-Problematiken austauschen.

 

„Beim GEDCOM-Datenaustausch gehen grundsätzlich alle Bilder verloren.“

GEDCOM Bild fehlt mini

Generell werden Bilder nicht in einer GEDCOM-Datei gespeichert. Stattdessen enthalten GEDCOM-Dateien nur Verweise (Verzeichnis + Dateiname) auf die Bilder. Gibt man also eine GEDCOM-Datei weiter, muss man die Bilder separat mitgeben. Das merkt man oftmals gar nicht, wenn man die GEDCOM-Datei am eigenen Rechner prüft – es scheint noch alles zu funktionieren. Die Wahrscheinlichkeit, dass der Empfänger die Bilder im gleichen Verzeichnis ablegt, wie der Ersteller es hatte, ist eher unwahrscheinlich. Manchmal unterscheiden sich Laufwerksbuchstaben und schon werden Bilder nicht gefunden. Das ist z.B. der Fall wenn sich GEDCOM-Datei und Bilder auf einem USB-Stick befinden, der an unterschiedlichen PCs einen anderen Laufwerksbuchstaben zugeordnet bekommt. In der Folge werden Bilder nicht angezeigt, weil sie nicht mehr gefunden werden.
Die Erfinder von GEDCOM hatten zwischenzeitlich vorgesehen, Bilder auch direkt in die GEDCOM-Datei zu speichern (BLOB), aber es dann später auch wieder abgeschafft. Vielleicht wurden GEDCOM-Dateien dadurch einfach zu groß und unhandlich.
Seit einiger Zeit gibt es Internetdienstleister, die ihre Familienforschungssoftware komplett im Internet abbilden. Auch hier kann man seine Daten im GEDCOM-Format speichern, allerdings werden dort die Verweise auf Bilder in Form von Internetlinks abgebildet. Auch wenn diese Angaben nicht mehr rechnerabhängig sind, kommen aktuell nicht sehr viele Programme damit zurecht.

Wie macht es Ahnenblatt?

Ahnenblatt speichert zu Bildern grundsätzlich zwei Dateipfade. Einmal den absoluten Pfad mit Laufwerksbuchstaben und einen zweiten Pfad relativ zur GEDCOM-Datei. Speichert man alle Bilder in einem Unterverzeichnis zur GEDCOM-Datei, dann würden die Bilder auch gefunden, wenn sich der Laufwerksbuchstabe ändern würde – wie es bei Verwendung eines USB-Sticks der Fall wäre.
Sollten beide Pfade nicht genügen, um die Bilder zu finden, dann sucht Ahnenblatt noch im Verzeichnis der GEDCOM-Datei oder im Standard-Bilderverzeichnis von Windows. Reicht auch das nicht, so gibt es in Ahnenblatt die Funktion „Extras / Bilder/Dateien zuordnen…“, um nachträglich das Bilderverzeichnis anzugeben.
Findet Ahnenblatt in einer GEDCOM-Datei Bildverweise als Internetlinks, so wird automatisch das Herunterladen dieser Bilder angeboten.

 

„Einige Datumsangaben wurden beim GEDCOM-Datenaustausch falsch übernommen.“

GEDCOM Datumsformate mini

Die Erfinder von GEDCOM haben ziemlich viele Optionen für Datumsformate vorgesehen. Da sind z.B. hebräische Datumsangaben möglich, aber auch Datumsangaben nach dem französischen Revolutionskalender. Ebenso gibt es im Standard Vereinbarungen für Datumsgaben vor Christi. In der Praxis findet sich soetwas aber eher selten.
Daneben sieht der GEDCOM-Standard aber auch Datumsangaben als Freitext vor (z.B. „am dritten Wochenende im Mai“), der dann in der GEDCOM-Datei durch einfache Klammern gekennzeichnet wird. Leider gibt es immer noch Programme, die entweder die Klammern beibehalten (obwohl nur zur Kennzeichnung eingefügt) oder Freitexte in Datumsangaben gänzlich ignorieren, ohne dem Anwender in irgendeiner Form einen Hinweis zu geben.

Wie macht es Ahnenblatt?

Da Ahnenblatt grundsätzlich Freitextfelder für Datumsangaben verwendet, gibt es keine Probleme beim Einlesen von GEDCOM-Dateien mit Freitextangaben.
Kalenderangaben außerhalb des Gregorianischen Kalenders werden im GEDCOM-Format dargestellt, was aber in der Praxis eher selten verwendet wird.

 

„Ist ein Programm, das nur das GEDCOM-Format verwendet, nicht am kompatibelsten?“

GEDCOM ged only mini

Nicht zwangsläufig. Das Höchstmaß an Kompatibilität bietet das Programm, das alle Daten aus einer GEDCOM-Datei übernimmt, ohne etwas zu verwerfen.
Nur wenn ein Programm beim Lesen einer programmfremden GEDCOM-Datei alle Daten übernimmt, ist sichergestellt, dass beim erneuten Schreiben der Daten nichts verloren geht. Dabei muss nicht zwangsläufig ausschließlich das GEDCOM-Format verwendet werden.
Dagegen ein Programm, das ausschließlich mit dem GEDCOM-Format arbeitet, aber nur einen Bruchteil der Daten einliest, weil es mit dem Rest nichts anfangen kann, wird beim erneuten Schreiben einer programmfremden GEDCOM-Datei viele Daten löschen.
Allein die ausschließliche Verwendung des GEDCOM-Dateiformats ist also kein Garant für den Datenerhalt.

Wie macht es Ahennblatt?

Ahnenblatt versucht möglichst alle Daten – auch Daten, die nicht verarbeitet werden können – einzulesen und zu speichern. Diese Daten bleiben auch im Ahnenblatt-eigenen Dateiformat (.ahn) erhalten – wenn auch größtenteils unsichtbar. Ahnenblatt merkt sich sogar interne Nummerierungen einer GEDCOM-Datei, so dass ein erneutes Schreiben einer GEDCOM-Datei immer sehr nahe am Original bleibt.

 

„Warum überhaupt ein eigenes Dateiformat verwenden?“

GEDCOM Ahnendatei mini

Jedes Genealogieprogramm kann GEDCOM-Dateien lesen und auch schreiben – aber wie bereits beschrieben sind Datenverluste nicht auszuschließen, da die wenigsten Programme darauf achten alle Daten in ursprünglicher Form zu belassen. Entweder werden unbekannte Daten ignoriert oder aber in Notizfelder übernommen (teilweise auch in kryptischer Form). In beiden Fällen werden die Daten, bei abwechselnder Nutzung von unterschiedlichen Genealogieprogrammen, in irgendeiner Form verändert.

Wie macht es Ahnenblatt?

Ahnenblatt verwendet ein eigenes Dateiformat (.ahn), das ausschließlich von Ahnenblatt gelesen und geschrieben werden kann. Dieses Format ist ebenso aufwärts- und abwärtskompatibel wie das GEDCOM-Format. Auch ältere Ahnenblatt-Programmversionen können neuere Ahnenblatt-Dateien lesen und umgekehrt.
Seine Daten nur im GEDCOM-Dateiformat zu haben, ist mit Ahnenblatt durchaus möglich, ich würde aber eher davon abraten. Einmal mit einem anderen Programm die GEDCOM-Datei geöffnet und wieder gespeichert und die Vollständigkeit der Daten kann nicht mehr garantiert werden.

 

„Der GEDCOM-Standard ist veraltet. Nur ein moderneres Dateiformat schafft Besserung.“

GEDCOM veraltet mini

Fakt ist, dass der letzte veröffentlichte Standardentwurf für GEDCOM 5.5.1 vom Oktober 1999 stammt. Das ist in IT-Zeit gemessen schon sehr alt. Ist er deshalb aber schlecht?
Jedes neue Dateiformat hätte mit den gleichen Problemen zu kämpfen, wie GEDCOM. Programmierer, die die Dokumentation des neuen Standards nicht lesen, nicht verstehen oder einfach nur falsch umsetzen. Das Problem, dass Programme nur den Teil einer Übergabedatei übernehmen, den sie auch weiterverarbeiten können, wäre auch mit jedem neuen Format gegeben.
Die Vorteile eines neuen Dateiformats gegenüber GEDCOM wären daher gering bis gar nicht gegeben. Deshalb macht es mehr Sinn das Verständnis für GEDCOM zu schärfen, als wieder gänzlich bei Null anzufangen. Die weltweite Implementierung in so vielen Programmen spricht für GEDCOM.

Wie macht es Ahnenblatt?

Ahnenblatt kann alle Daten auch in den XML-Formaten GEDCOM 6.0 und GedML speichern. Beide Dateiformate wurden als GEDCOM-Nachfolgeformate angepriesen – und auch das ist schon Jahre her. Ich kann nicht beurteilen, ob ich diese Dateiformate überhaupt richtig umgesetzt habe – es gibt schlichtweg keine Programme, die diese Dateiformate lesen können. Selbst Ahnenblatt nicht. Der Programmieraufwand wäre mir zu hoch – der Nutzen zu gering – nachgefragt wurde es noch nie. Intern werden ohnehin fast die gleichen Routinen zur Erzeugung dieser beiden XML-Formate und GEDCOM verwendet.
Also dann lieber das Verständnis für GEDCOM schärfen und mit anderen Programmierern über strittige Punkte des Standards diskutieren. Genau deshalb ist Ahnenblatt seit mehreren Jahren auf der Mailingliste GEDCOM-L des Vereins für Computergenealogie e.V. zur vereinheitlichten Nutzung von GEDCOM vertreten und hält Kontakt zu anderen Programmierern von Genealogieprogrammen – national als auch international.

 

„Wäre es nicht besser direkt die Original-Dateiformate anderer Programme einzulesen?“

GEDCOM Dateiformate mini

Diesen Vorschlag hört man immer mal wieder. Letztlich ändert er nichts an dem Grundproblem. Jedes Programm liest nur die Daten, die es auch weiterverarbeiten kann.
Hier kommen noch zwei weitere Probleme hinzu: die wenigsten Dateiformate sind überhaupt dokumentiert – und wenn doch, keines so gut wie das GEDCOM-Format. Wie sollte ich da sicherstellen, dass Ahnenblatt die jeweiligen Formate korrekt erkennt?
Das zweite Problem ist der immense Programmieraufwand. Für jedes Programm, das es international auf dem Markt gibt, wäre eine eigene Importroutine zu entwickeln und zu testen. Das wäre womöglich eine Einbahnstraße, da umgekehrt alle übrigen Programme dann für Ahnenblatt Importroutinen bereithalten müssten – wovon ich die Programmierer erst noch überzeugen müsste. Zudem gibt es einige Programme, die sich noch äußerster Beliebtheit seitens Anwender erfreuen, aber deren Entwicklung inzwischen eingestellt ist. Die haben funktionierende GEDCOM-Schnittstellen, werden sich aber in keinster Weise auf Ahnenblatt oder einen beliebigen anderen Standard erweitern.

 

Mitglied-GEDCOM-L-seit-2009-mini

Ahnenblatt unterstützen
Ahnenblatt Website