Hallo zusammen, hier ist Kai Nakamura von clawdev.net, und heute möchte ich über etwas sprechen, das mich in letzter Zeit sehr beschäftigt, insbesondere da der Bereich der KI immer mehr boomt: Open Source. Genauer gesagt, möchte ich das erkunden, was ich die „Stille Macht“ nenne, zu kleineren, weniger beachteten Open-Source-KI-Projekten beizutragen. Wir hören alle von den großen Namen – PyTorch, TensorFlow, Hugging Face Transformers – und das aus gutem Grund. Sie sind grundlegend. Aber was ist mit den kleinen Projekten?
Ich spreche von diesen Projekten, die vielleicht nur einige Hundert Sterne haben, eine Handvoll aktiver Mitwirkender, die oft dabei sind, ein sehr spezifisches und Nischenproblem zu lösen. Lange Zeit war mein eigener Open-Source-Weg ziemlich typisch: Ich öffnete Tickets für beliebte Bibliotheken, vielleicht habe ich einen Rechtschreibfehler in der Dokumentation korrigiert oder gelegentlich einen kleinen Patch für etwas weit verbreitetes eingereicht. Es war ein gutes Gefühl, das steht fest, aber es war auch… ein bisschen wie ein Tropfen im Ozean. Mein Einfluss, obwohl vorhanden, schien verwässert.
Dann stieß ich vor etwa acht Monaten auf ein Projekt namens `semantic-search-on-device`. Es war eine Python-Bibliothek, die dafür entwickelt wurde, leichte und lokale semantische Suchmodelle auf Edge-Geräten auszuführen, etwas, mit dem ich für ein persönliches Projekt involving einen Raspberry Pi und eine Sammlung lokaler Dokumente experimentierte. Das Projekt hatte eine gute Grundlage, eine klare Vision, aber die Entwicklung hatte sich verlangsamt. Es gab offene Probleme, einige als `Hilfe benötigt` markiert, und der Maintainer schien ein wenig überfordert zu sein.
Das war der Moment, in dem ich die stille Macht dieser kleineren Projekte erkannte. Und genau darum geht es in diesem Artikel: Warum es nicht nur vorteilhaft für das Projekt ist, sondern potenziell auch noch besser für Ihr eigenes Wachstum und Ihren eigenen Einfluss als Entwickler, zu diesen weniger frequentierten Ecken der Open-Source-KI-Welt beizutragen.
Die Echo-Kammer der Popularität
Denken Sie einmal darüber nach. Wenn Sie zu einem Projekt mit Zehntausenden von Sternen beitragen, geht Ihr Pull-Request (PR) in einer Flut von anderen PRs unter. Die Überprüfungszeiten können lang sein, die Diskussionen kurz, und um ehrlich zu sein, ist es schwer, sich abzuheben. Ihr Beitrag, egal wie clever, ist nur einer von vielen. Es ist ein bisschen so, als würde man versuchen, in einem mit schreienden Fans gefüllten Stadion gehört zu werden.
Mein erster Versuch, zu einem großen LLM-Framework beizutragen, beinhaltete eine komplexe Optimierung des Speichermanagements. Ich widmete Wochen diesem Thema, führte zahllose Benchmarks durch und entwarf eine PR, die ich für makellos hielt. Sie blieb zwei Monate lang unbeantwortet. Dann erhielt ich einen einzeiligen Kommentar von einem Haupt-Maintainer, der einen alternativen Ansatz vorschlug, der, obwohl gültig, meine Lösung grundlegend veränderte. Die Diskussion erstarb, und schließlich beschloss ich, sie selbst zu schließen. Das war, mild gesagt, frustrierend.
Das ist keine Kritik an diesen Projekten oder ihren Maintainer; sie verwalten eine immense Skala. Aber es verdeutlicht eine Herausforderung für neue oder sogar erfahrene Mitwirkende, die versuchen, einen signifikanten Beitrag zu leisten.
Finden Sie Ihre Nische: Die Geschichte von `semantic-search-on-device`
Zurück zu `semantic-search-on-device`. Als ich es fand, war das Hauptproblem, dass es nur einen sehr spezifischen Typ von Embedding-Modell unterstützte. Mein Projekt benötigte etwas Allgemeineres. Ich sah ein offenes Problem hinsichtlich der Unterstützung von Sentence Transformers, was wie eine natürliche Anpassung erschien. Es war als `Schwierigkeitsgrad: mittel` und `Hilfe benötigt` markiert. Perfekt.
Ich forkete das Repository, klonte es und begann, mich damit zu beschäftigen. Der Code war sauber, aber klein genug, dass ich mir in ein paar Abenden einen Überblick verschaffen konnte. Der Maintainer, nennen wir ihn Alex, hatte hervorragende Kommentare hinterlassen und eine klare `CONTRIBUTING.md`.
Meine erste PR fügte eine grundlegende Unterstützung für Sentence Transformers hinzu. Sie war nicht perfekt, aber ein Anfang. Hier ist eine vereinfachte Übersicht dessen, was ich hinzugefügt habe (konzeptionell, nicht der exakte Code):
# Vorher:
# Enthielt nur eine benutzerdefinierte Embedding-Funktion
def _embed_custom_model(texts: list[str], model_path: str) -> np.ndarray:
# ... benutzerdefinierte Logik ...
pass
# Mein erster Beitrag:
from sentence_transformers import SentenceTransformer
def _embed_sentence_transformer(texts: list[str], model_name_or_path: str) -> np.ndarray:
model = SentenceTransformer(model_name_or_path)
embeddings = model.encode(texts, convert_to_numpy=True)
return embeddings
# ... dann integrierte ich dies in die Hauptsuchfunktion
In weniger als 24 Stunden hatte Alex es überprüft. Er hat es nicht nur angenommen, sondern mir auch spezifisches und konstruktives Feedback gegeben, wie ich es allgemeinere machen könnte, indem er eine Plugin-Architektur für verschiedene Embedding-Anbieter vorschlug. Er fusionierte meinen Code nicht einfach; er mentorierte mich.
Warum kleinere Projekte mehr bieten
- Sichtbarkeit und Einfluss: Ihre Beiträge fallen viel mehr auf. Alex und ich hatten eine direkte, wechselseitige Diskussion. Meine Arbeit hat das Projekt tatsächlich greifbar vorangebracht.
- Schnellerer Rückmeldungszyklus: Kleinere Teams bedeuten schnellere Überprüfungen. Das hilft Ihnen, schneller zu iterieren und effizienter zu lernen.
- Erweiterte Verantwortlichkeiten: Nachdem ich bewiesen hatte, dass ich beitragen konnte, begann Alex, mir Fragen zu anderen Funktionen zu stellen, sogar zu Designentscheidungen. Ich war nicht nur ein Programmierer; ich wurde zum Mitgestalter.
- Tiefere Einsichten: Mit einem kleineren Code-Basis können Sie die gesamte Architektur viel schneller verstehen. Das gibt Ihnen einen Überblick darüber, wie ein Projekt aufgebaut ist, von den Datenstrukturen bis zur Bereitstellung, was unschätzbar ist.
- Mentor-Möglichkeiten: Wie ich erfahren habe, sind die Maintainer kleinerer Projekte oft zugänglicher und bereit, neuen Mitwirkenden Anleitung zu geben. Sie investieren in das Wachstum ihrer Community.
- Vielfältigkeit der Fähigkeiten: Ich habe letztlich alles Mögliche gemacht, von CI/CD-Pipelines bis zur Dokumentation, etwas, das ich nur selten auf großen Projekten tun konnte. Zum Beispiel half ich bei der Einrichtung eines einfachen GitHub-Actions-Workflows, um meine neuen Embedding-Funktionen zu testen:
name: CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10"]
steps:
- uses: actions/checkout@v3
- name: Python ${{ matrix.python-version }} einrichten
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Abhängigkeiten installieren
run: |
python -m pip install --upgrade pip
pip install -e .[dev] # Installiere bearbeitbare und Entwicklungsabhängigkeiten
pip install sentence-transformers
- name: Tests ausführen
run: |
pytest
Es war ein kleiner Schritt, aber es war *mein* Beitrag zur Einrichtung einer soliden CI für das Projekt, etwas, das ich zuvor nicht oft getan hatte.
Wie man diese versteckten Juwelen findet
Okay, Sie sind überzeugt. Sie möchten Ihr eigenes `semantic-search-on-device` finden. Wie geht man vor?
- Pensez Niche : Welches spezifische KI-Problem interessiert Sie? Edge-Inferenz? Föderiertes Lernen auf spezifischer Hardware? Erklärbare KI für einen bestimmten Modelltyp? Suchen Sie nach Bibliotheken, die sich mit diesen spezifischen Anliegen befassen.
- Erweiterte Suche auf GitHub : Verwenden Sie Schlüsselwörter, die mit Ihrem Interesse in Verbindung stehen. Filtern Sie nach Sprache (Python, Rust, C++), und vor allem, nach der Anzahl der Sterne (z.B. `stars:10..500` oder `stars:10..1000`). Suchen Sie nach Projekten mit aktiver Tätigkeit, aber ohne überwältigende Popularität.
- Erforschen Sie Abhängigkeitsbäume : Wenn Sie eine beliebte Bibliothek verwenden, überprüfen Sie deren Abhängigkeiten. Manchmal könnte eine kleinere, grundlegende Bibliothek, auf der die große basiert, ein guter Ort sein, um beizutragen.
- Probleme mit den Labels `Hilfe benötigt` oder `gutes Erstproblem` : Auch bei kleineren Projekten sind diese Labels wertvoll. Sie zeigen an, dass der Maintainer aktiv nach Beiträgen sucht und darüber nachgedacht hat, wie neue Personen integriert werden können.
- Lesen Sie Blogs und Artikel : Oft verlinken akademische Artikel oder kleinere technische Blogs die Open-Source-Projekte, die sie verwendet oder erstellt haben. Das sind vielversprechende Kandidaten.
- Hackathons (virtuell oder vor Ort) : Manchmal gewinnen kleinere Projekte an Bedeutung oder Vorsprung während Hackathons. Halten Sie Ausschau.
Handlungen für Ihren nächsten Beitrag ergreifen
Bereit, in einem kleineren Teich Wellen zu schlagen? So gehen Sie effektiv vor:
- Fangen Sie klein, aber bedeutsam an : Versuchen Sie nicht, die gesamte Bibliothek bei Ihrem ersten PR neu zu schreiben. Wählen Sie ein gut definiertes und machbares Problem. Ein gutes Erstproblem könnte sein, die Dokumentation zu verbessern, einen einfachen Testfall hinzuzufügen oder einen kleinen Fehler zu beheben.
- Lesen Sie die `CONTRIBUTING.md` : Nehmen Sie es ernst – lesen Sie es. Das spart Ihnen und dem Maintainer viel Zeit. Es beschreibt in der Regel den Code-Stil, Testverfahren und PR-Richtlinien.
- Kommunizieren Sie früh und oft : Bevor Sie auch nur eine Zeile Code für eine neue Funktion schreiben, öffnen Sie ein Issue oder kommentieren Sie ein bestehendes. Erklären Sie kurz Ihre vorgeschlagene Lösung. Das stellt sicher, dass Sie keine Doppelarbeit leisten und dass Ihre Idee mit der Richtung des Projekts übereinstimmt.
- Halten Sie Geduld (aber nicht zu lange) : Obwohl das Feedback schneller sein kann, denken Sie daran, dass die Maintainer oft Freiwillige sind. Geben Sie ihnen ein paar Tage und senden Sie dann eine kleine, höfliche Erinnerung, wenn Sie nichts hören.
- Akzeptieren Sie das Lernen : Betrachten Sie jeden PR, jeden Review-Kommentar und jede Diskussion als Lerngelegenheit. Sie korrigieren nicht nur Code; Sie lernen, ein Projekt zu erstellen und zu pflegen.
- Erwägen Sie, ein Hauptbeitragender zu werden : Wenn Sie das Projekt mögen und Ihre Beiträge geschätzt werden, zögern Sie nicht, Ihr Interesse an mehr Verantwortung zu äußern. So beginnen viele Maintainer!
Mein Weg mit `semantic-search-on-device` ist noch nicht zu Ende. Ich bin inzwischen Co-Maintainer geworden, helfe Alex bei den Reviews, der Planung der Roadmap und sogar ein wenig beim Community-Management. Das hat mir ein Maß an Eigenverantwortung und direkter Einflussnahme gegeben, das ich einfach nicht in größeren Projekten gefunden hatte. Ich habe mehr über Projektmanagement, API-Design und sogar die subtile Kunst gelernt, andere Beitragende zu motivieren, als ich je alleine durch das Einreichen von PRs an großen Repositories gelernt habe.
Also, wenn Sie das nächste Mal nach Möglichkeiten suchen, zur Open Source beizutragen, ziehen Sie in Betracht, über die hellsten Sterne hinauszuschauen. Es gibt eine ganze Konstellation von kleineren und einflussreichen Projekten, die nur auf Ihre “stille Kraft” warten. Möglicherweise finden Sie dort Ihren wahren Norden.
Viel Spaß beim Programmieren!
Kai Nakamura
clawdev.net
🕒 Published: