Zum Hauptinhalt springen

TypeORM – Google Summer of Code (GSoC) Ideenliste

Inoffizielle Beta-Übersetzung

Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →

Dieses Dokument beschreibt potenzielle GSoC-Projektideen für TypeORM. Jede Idee umfasst eine Beschreibung, Ziele, erwartete Ergebnisse und Schwierigkeitsgrad.


Erstklassige polymorphe Relationen in TypeORM

Beschreibung

TypeORM bietet derzeit keine native Unterstützung für polymorphe Relationen (eine einzelne Relation, die auf mehrere Entitätstypen verweist). Nutzer greifen auf Workarounds zurück, die schwer typisierbar, fehleranfällig und datenbankübergreifend inkonsistent sind.

Mentoren

Ziele

  • Entwurf einer erstklassigen API für polymorphe Relationen in TypeORM

  • Gewährleistung der Kompatibilität mit bestehenden Relations-Dekoratoren

  • Unterstützung für Migrationen und Schema-Synchronisierung

Erwartete Ergebnisse

  • Neue Dekorator(en) für polymorphe Relationen

  • QueryBuilder-Unterstützung für polymorphe Joins

  • Klare Dokumentation und Beispiele

  • Abwärtskompatible Implementierung

Schwierigkeitsgrad

Mittel - Voraussichtlich 175 Stunden

Erforderliche Fähigkeiten

TypeScript, ORM-Interna, SQL-Schema-Design


Verbesserte Typsicherheit und Inferenz in TypeORM

Beschreibung

Obwohl TypeORM in TypeScript geschrieben ist, existieren mehrere schwach typisierte Bereiche (Relationen, QueryBuilder-Ergebnisse, Repository-Methoden). Verbesserte Typinferenz würde die Entwicklererfahrung und Korrektheit erheblich steigern.

Mentoren

Ziele

  • Verbesserung der Relationstyp-Inferenz (lazy und eager Relations)

  • Starke Typisierung von QueryBuilder-Ergebnissen

  • Reduzierung von any-Verwendung in öffentlichen APIs

  • Verbesserung der Generics für Repository und EntityManager

Erwartete Ergebnisse

  • Bessere Compile-Zeit-Garantien

  • Weniger Laufzeitfehler

  • Inkrementelle, nicht-breaking Verbesserungen

  • Dokumentation empfohlener Typisierungsmuster

Schwierigkeitsgrad

Mittel - Voraussichtlich 175 Stunden

Erforderliche Fähigkeiten

Fortgeschrittenes TypeScript, Generics, Bibliotheks-API-Design


Vektorunterstützung: Typen, Indizierung und datenbankübergreifende Suche

Beschreibung

Vektoreinbettungen werden in modernen Anwendungen (KI, Suche, Empfehlungen) immer häufiger eingesetzt. Obwohl TypeORM partielle Unterstützung für Vektorspaltentypen bietet, fehlt eine einheitliche, vollständige Lösung für Vektorspeicherung, -indizierung und -abfragen über Datenbanken hinweg.

Dieses Projekt zielt auf eine durchgängige Vektorunterstützung in TypeORM ab, einschließlich Vektorspaltentypen, datenbankspezifischen Mappings, Vektorindizierung und hochrangigen Vektorsuchabstraktionen.

Mentoren

Ziele

  • Vektorspalten-Unterstützung für verbleibende Datenbanken (z.B. Oracle) hinzufügen

  • SQLite-Einschränkungen untersuchen und libsql-Vektoren unterstützen, wo möglich

  • Definition einer konsistenten, datenbankübergreifenden Vektorspalten-API

  • Unterstützung für Vektorindizes implementieren, wo Datenbanken dies erlauben

  • Vektor-Ähnlichkeitsabfragen über den QueryBuilder verfügbar machen

  • Eine Abstraktion auf hoher Ebene für Vektorspeicher auf Basis von Repositories implementieren

  • Optional: Abfragen im Wissensgraphen-Stil erkunden (z.B. SPARQL-inspirierte APIs)

Erwartete Ergebnisse

  • Neue Unterstützung für @Column({ type: "vector" }) über verschiedene Datenbanken hinweg

  • Datenbankspezifische Vektor-Mappings, Fallbacks und Einschränkungen

  • Datenbankübergreifende Unterstützung für Vektorindizes

  • APIs auf hoher Ebene für Vektorsuche und Ähnlichkeitsabfragen

  • Erweiterbare Architektur für zukünftige KI- und suchbezogene Funktionen

  • Klare Dokumentation und Beispiele

Schwierigkeitsgrad

Mittel — Voraussichtlich 175 Stunden

Erforderliche Fähigkeiten

SQL-Dialekte, Datenbank-Interna, TypeORM-Treiberarchitektur, Indexierungsstrategien, Abfrageoptimierung, API-Design


Modularisierung der Entity-Definitions-APIs

Mentoren

Beschreibung

TypeORM unterstützt derzeit zwei verschiedene Möglichkeiten, Entitäten zu definieren: klassenbasierte Entitäten (Decorators) und Entity-Schemas. Im Laufe der Zeit haben sich diese beiden Ansätze auseinanderentwickelt, wobei die Unterstützung für Entity-Schemas oft bei Funktionen und Typsicherheit hinter klassenbasierten Entitäten zurückbleibt.

Dieses Projekt konzentriert sich darauf, die Stile der Entity-Definition in klarere, besser isolierte Komponenten zu extrahieren und zu modularisieren, mit dem Ziel, beide Ansätze synchron zu halten und zukünftige Architekturverbesserungen zu ermöglichen. Anstatt eine vollständige Restrukturierung des Monorepos anzustreben, zielt das Projekt auf eine klar definierte und erreichbare Teilmenge dieser Arbeit ab.

Ziele

  • Die Logik der Entity-Definition in klar getrennte Module oder Pakete extrahieren

  • Die Parität zwischen klassenbasierten Entitäten und Entity-Schemas verbessern

  • Eine funktionsbasierte Entity-Definitions-API mit starker Typinferenz erkunden

  • Redundanzen zwischen den Entity-Definitionsstilen reduzieren

  • Grundlagen für zukünftige Modularisierung schaffen (z.B. CLI, Logging, Caching)

Erwartete Ergebnisse

  • Bessere Synchronisierung von Funktionen zwischen Entity-Schemas und klassenbasierten Entitäten

  • Sauberere interne Abstraktionen für die Definition von Entity-Metadaten

  • Verbesserte Typinferenz für nicht-klassenbasierte Entity-Definitionen

  • Klare Grenzen, die zukünftiges Refactoring und Modularisierung sicherer machen

Schwierigkeitsgrad

Schwer - Voraussichtlich 350 Stunden

Erforderliche Fähigkeiten

TypeScript, TypeORM-Metadatensystem, API-Design, Refactoring großer Codebasen


SQL-Dialekt-Abstraktion für die Entwicklung benutzerdefinierter Treiber

Beschreibung

Das Hinzufügen oder die Wartung von Datenbanktreibern in TypeORM ist derzeit komplex und eng an bestehende Treiberimplementierungen gekoppelt. Die Einführung einer klareren SQL-Dialekt-Abstraktion würde es erleichtern, neue Datenbanken zu unterstützen und Redundanzen zwischen Treibern reduzieren.

Dieses Projekt zielt darauf ab, eine SQL-Dialektschicht zu definieren und einzuführen, die datenbankspezifisches SQL-Verhalten kapselt, um die Entwicklung neuer Treiber zu erleichtern und eine bessere Trennung der Belange innerhalb von TypeORM zu ermöglichen.

Mentoren

Ziele

  • Eine SQL-Dialekt-Abstraktion entwerfen, die datenbankspezifisches Verhalten erfasst

  • Gemeinsame SQL-Generierungslogik aus bestehenden Treibern extrahieren

  • Klare Erweiterungspunkte für die Implementierung neuer Dialekte definieren

  • Dokumentiere, wie man einen benutzerdefinierten Treiber mit dem Dialektsystem erstellt

Erwartete Ergebnisse

  • Eine klar definierte SQL-Dialekt-Schnittstelle

  • Reduzierte Redundanz zwischen bestehenden Treibern

  • Verbesserte Wartbarkeit der aktuellen Treiber

  • Klarer Weg für community-beigesteuerte Datenbanktreiber

Schwierigkeitsgrad

Schwer - Voraussichtlich 350 Stunden

Erforderliche Fähigkeiten

SQL-Dialekte, Datenbank-Interna, TypeScript, TypeORM-Treiberarchitektur


Offener Aufruf für Community-Ideen

TypeORM begrüßt Google Summer of Code Projektideen, die von Mitwirkenden und Community-Mitgliedern vorgeschlagen werden.

Wenn du Erfahrung mit TypeORM hast und Problemstellen, fehlende Funktionen oder Architekturverbesserungen identifiziert hast, ermutigen wir dich, eine GSoC-Projektidee vorzuschlagen.

Vorgeschlagene Ideen können umfassen (sind aber nicht beschränkt auf):

  • Verbesserungen an bestehenden Treibern oder Datenbankunterstützung

  • Leistungsoptimierungen

  • Entwicklererlebnis und Tooling-Verbesserungen

  • Dokumentations- oder Testinfrastruktur-Verbesserungen

  • Neue Funktionen

Vorgeschlagene Ideen sollten enthalten:

  • Eine kurze Problembeschreibung

  • Erwartete Ergebnisse und Umfang

  • Geschätzten Schwierigkeitsgrad

  • Relevante technische Bereiche (TypeScript, SQL, Treiber, etc.)

Community-vorgeschlagene Ideen werden von den Maintainern geprüft und können in die offizielle GSoC-Projektliste aufgenommen werden.


Moderne Migrations-Tools und Snapshots

Beschreibung

Der Migrations-Workflow von TypeORM konzentriert sich derzeit auf die CLI, was in TypeScript-basierten Projekten umständlich sein kann und fortgeschrittene Anwendungsfälle einschränkt. Zusätzlich stehen Projekte mit langer Migrationshistorie vor langsamen und fehleranfälligen Datenbank-Bootstrapping-Prozessen bei der Einrichtung neuer Umgebungen.

Dieses Projekt zielt darauf ab, die Migrations-Tools von TypeORM zu modernisieren, indem eine programmatische API zur Migrationsgenerierung und optionale Schema-Snapshots eingeführt werden. Zusammen würden diese Verbesserungen die Migrationsgenerierung flexibler gestalten und eine schnellere Initialisierung neuer Datenbanken ohne das erneute Abspielen aller historischen Migrationen ermöglichen.

Mentoren

Ziele

  • Einführung einer programmatischen API zur Migrationsgenerierung ohne Abhängigkeit von der CLI

  • Ermöglichung anpassbarer Migrationsvorlagen

  • Entwurf eines Schema-Snapshot-Mechanismus, der die finale Datenbankstruktur repräsentiert

  • Bootstrapping neuer Datenbanken mittels Snapshots ermöglichen, während die Migrationshistorie erhalten bleibt

  • Gewährleistung der Kompatibilität mit bestehenden Migrations-Workflows

Erwartete Ergebnisse

  • Verbesserte Entwicklererfahrung für TypeScript- und Nicht-CLI-Workflows

  • Schnelleres und zuverlässigeres Datenbank-Setup für große Projekte

  • Flexiblere Migrationsgenerierung und Vorlagengestaltung

  • Klare Dokumentation und empfohlene Nutzungsmuster

Schwierigkeitsgrad

Mittel - Voraussichtlich 175 Stunden

Erforderliche Fähigkeiten

TypeScript, SQL, TypeORM-Migrationssystem, CLI-Interna, API- und Tooling-Design


Erste Schritte

Studierende, die an einer Mitarbeit bei TypeORM im Rahmen von Google Summer of Code interessiert sind, sollten frühzeitig einsteigen. Vertrautheit mit der Codebase, dem Beitrags-Workflow und Community-Praktiken wird vor der Einreichung eines Vorschlags dringend empfohlen.

So beginnst du:

  • Tritt unserem Discord-Server bei.

  • Lese CONTRIBUTING.md.

  • Erkunde das TypeORM-Repository und die Dokumentation, um die Architektur und unterstützte Datenbanken zu verstehen.

  • Versuche, ein kleines Issue zu beheben oder die Dokumentation zu verbessern, um mit dem Beitragsprozess vertraut zu werden.