Skip to content

Instantly share code, notes, and snippets.

@jonico
Last active December 6, 2019 08:51
Show Gist options
  • Save jonico/f09b3e37b6238c6a7e3eb338e1abe689 to your computer and use it in GitHub Desktop.
Save jonico/f09b3e37b6238c6a7e3eb338e1abe689 to your computer and use it in GitHub Desktop.
Evaluierungsfragen/kriterien bei der Auswahl einer Versionskontrollverwaltungs- / Social Coding-Plattform

Business Coding Platform Evaluierungskriterien / Fragen

  • Wie lange dauert es, einen neuen Entwickler in die Plattform einzuarbeiten? Welcher Trainingsaufwand ist erforderlich, bis der erste Commit in Produktion gehen kann?

  • Wie unterstützt die gewählte Plattform das Aufbauen eines unternehmensweiten Entwickler-Profils, aus dem die Entwicklungsaktivität, Popularität, Programmiersprachen und Tätigkeitsschwerpunkt (welche Repositories) eines Entwicklers oder Entwicklerteams hervorgeht?

  • Wie können Entwickler und Designer schnell und unproblematisch Quellcode-Snippets, Design-Überlegungen, Interview-Fragen und andere Markdown-Dokumente miteinander teilen? Besteht die Möglichkeit, diese Dokumente zu durchsuchen, insofern sie nicht geheim angelegt worden?

  • Wie können Nicht-Entwickler (Ingenieure, Fachabteilung, Projektleiter, Marketing, Legal), Änderungen an Design-Dokumenten und Dokumentation ohne Kommandozeilenwissen oder Desktop-Applikationen vorschlagen? Erlaubt die Web-Oberfläche das Hinzufügen, Löschen und Ändern von Dokumenten via Drag and Drop oder ähnlichen, nutzer-freundlichen Paradigmen?

  • Wie können die Hauptakteure eines Repositories oder einer Organisation zu einem bestimmten Zeitpunkt festgestellt werden? Gibt es eine Möglichkeit, die aktivsten Projekte / erfahrensten Entwickler für eine bestimmte Technologie / Programmiersprache automatisch zu bestimmen um neue Teams zusammenzustellen?

  • Wie kann ein Überblick darüber erlangt werden, welche Repositories am beliebtesten sind, wie oft und warum sie heruntergeladen werden, und welche abgeleiteten Werke auf ihnen aufbauen?

  • Welche Artefakte (Source Code, Dokumentation, Wiki, Issues, Releases, Planungs-Boards, Projekte, Nutzer, …) lassen sich mit einer einzigen Suchanfrage finden? Ist es möglich, die Suche nach Programmiersprachen, Popularität, Organisation und anderen Kriterien einzugrenzen?

  • Wie schnell und präzise gestaltet sich die Suche eines Begriffs bei 10/50/100 GB Quellcode?

  • Erlaubt die Plattform das Diffing (Vergleichen) von nicht textbasierten Dokumenten, wie PDFs, Photoshop, Bildern oder Konstruktionszeichnungen?

  • Erlaubt die Plattform einen effizienten Umgang mit größeren Binärdateien (auch als Teil von Pull-Requests) inklusive Support in IDEs und Desktop-Applikationen?

  • Können Open-Source-Projekte / interne Projekte mit allen Daten (Zeitstempel / Attachments / User-Accounts) zwischen Instanzen verschoben werden?

  • Können Issues, Pull-Requests und andere Projektplanungsartefakte in mehreren, benutzerdefinierten Planungs-/Kanbanboards mit verschiedenen Status visualisiert werden, ohne das Statusmodell der getrackten Entitäten verändern zu müssen?

  • Erlaubt die Plattform, Web-Seiten für Community-Management, Entwickler-Blogs und Prototypenevaluierung aus den Inhalten eines Git-Repositories zu generieren?

  • Erlaubt die Plattform einen Einblick, welche Features, Bug-Reports und generelle Überlegungen in ein Release eingeflossen sind?

Support-Evaluierungs-Fragen

  • Besteht die Möglichkeit, deutschsprachigen Support zu erhalten?

  • Wie schnell erfolgt eine zufriedenstellende Antwort auf komplexere, technische Fragen?

  • Wie gut gestaltet sich die schriftliche Kommunikation mit Support?

  • Gilt dasselbe Supportmodell für sämtliche Aspekte der Plattform?

Betriebs-Evaluierungs-Fragen

  • Wie viel Tuning / Expertise ist erforderlich, um die gewählte Plattform für 2000 Entwickler und 100 parallele CI-Systeme und Suche in 100 GB Source Code performant zu konfigurieren?

  • Gibt es in der Fail-Over / DR-Strategie irgendwelche "Single-Point-Of-Failures", wie geteilte Datenbanken, Elastic-Search-Cluster oder Dateisysteme?

  • Wie lange dauert es

    • einen einzelnen Knoten einzurichten

    • DR einzurichten

    • Backup einzurichten

    • Suchfunktionalität einzurichten

    • das gesamte System zu upgraden

    • ein neues Staging-System mit einem Backup hochzufahren

    • ein tatsächlich Fail-Over zu machen

    • alle Komponenten der Plattform in ein neues Datenzentrum mit anderer Netzwerktopologie und Storage-Architektur umzuziehen

  • Kann Support komplexere Fragen zum Infrastrukturbetrieb zügig beantworten, ohne detailliertes Wissen über die Unternehmensinfrastruktur zu benötigen.

  • Ist es möglich, komplette Organisationen mit ihren Nutzern, Repositories, Issues, Pull-Requests sowie allen weiteren Artefakten zu archivieren, und bei Bedarf später wieder einzuspielen / auf einem anderen System zu nutzen? Werden Zeitstempel, Attachments und Nutzeraktionen korrekt archiviert und wieder eingespielt?

  • Wie werden neue Funktionalitäten getestet, bevor sie Endkunden im Unternehmensumfeld erreichen? Gibt es einen Zusammenhang zwischen SaaS-Produkt und On-Prem-Produkt, welche das vorherige Austesten von neuen Features mit einer großen Community ermöglicht?

  • Wird sämtliche Funktionalität, die im SaaS-Produkt für die weltweite Community entwickelt wird, automatisch Teil des nächsten On-Prem-Releases?

  • Steht bei einem Upgrade eine neue, funktionierende Version für jeden Teil der Plattform (inklusive AddOns) automatisch zur Verfügung und wird atomar eingespielt?

  • Sind alle Funktionen des Web-Interface auch über eine API erreichbar und skriptbar?

Performance-Fragen

  • Welche Performance-Tuning-Maßnahmen müssen für den reibungslosen Betrieb mit 2000 Nutzern und 100 CI-Systemen betrieben werden? Lassen sich diese Maßnahmen auf 40,000 Nutzer skalieren?

  • Wie viele Nodes (inklusive Fail-Over und Backup) sind für den reibungslosen Betrieb mit 2000, 5000, 10000 Nutzern vonnöten?

  • Wie viele parallele Fetch-Requests können über https und ssh für ein 20 MB / 100 MB großes Repository bewältigt werden, bevor Performance für Web-Interaktionen und clones von menschlichen Nutzern unerträglich wird?

  • Besitzt die Plattform Mechanismen, die verhindern, dass die Aktionen (fehl-konfigurierte CI-Systeme, etc) einer Gruppe, die Performance und Stabilität für eine andere Gruppe in Mitleidenschaft zieht?

  • Ist es möglich, die aktuelle und historische Ressourcenauslastung der Plattform innerhalb der Plattform selbst zu analysieren sowie Parteien / Repositories, die gegen die fair use policy verstoßen, entsprechend zu sanktionieren?

  • Wie geht die Plattform mit Code-Reviews / Pull-Requests um, die tausende von Dateien oder Zeilen von Änderungen enthalten?

Rekrutierung / Developer Happiness-Fragen

  • Wie gut schneidet die Plattform in der Meinung der Entwickler ab, die sie hauptsächlich nutzen?

  • Wie stark kann der Einsatz der genutzten Plattform für die Anwerbung von neuen Mitarbeitern genutzt werden?

  • Wie groß ist die Vorerfahrung und Begeisterung für die gewählte Plattform in der aktuellen Belegschaft?

  • Ist es möglich, einigen Entwicklern und SVN-CI-Systemen für eine gewisse Zeit über das Subversion-Protokoll Zugriff auf Git-Repositories zu geben?

  • Besteht die Möglichkeit, gemeinsame lokale Recruiting- und Mitarbeiterfortbildungs-Events / Tech Talks in Deutschland durchzuführen?

  • Wie gut lassen sich bereits gesammelte Erfahrungen aus anderen Projekten, Universität und Open Source-Aktivitäten, sowie auf Konferenzen vorgestellte Tutorials- und Beispielprojekte zu Zukunftstechnologien (Docker, Kubernetes, Big Data, IoT, Machine Learning, …) auf die intern eingesetzte Tool-Chain übertragen?

  • Welche Erfahrungen wurden mit API-Rückwärtskompatibilität, Aktualität und Stabilität von Integrationen mit Drittanbieter-Tools gemacht?

  • Sind APIs für alle Teile der Plattform nach demselben Schema aufgebaut um eigene Integrationen zu vereinfachen?

  • Ist es möglich, mehrere Entitäten mittels eines API-Zugriffs zu kombinieren bzw. nur die Informationen zurückgeliefert zu bekommen, welche benötigt werden (Stichwort graphenbasierte Abfrage)?

  • Wie groß ist die Überlappung mit Referenzarchitekturen wie beispielsweise CloudBees DevOps Express?

Sicherheits-Evaluierungs-Fragen

  • Wie häufig werden für die Plattform sicherheitsrelevante Updates bereit gestellt? Wie schnell können diese auf eine vorhandene Installation angewendet werden?

  • Wie schnell nach Bekanntwerden einer Sicherheitslücke in einem verwendeten Software-Paket steht ein Patch zur Behebung der Bedrohung bereit?

  • Betreibt die Plattform ein proaktives Bug-Bounty Programm um die Community zum gezielten Testen und Auffinden von Sicherheitsschwachstellen zu motivieren?

  • Unterstützt die Plattform 2FA für die Authentifizierung über HTTPS? Kann der Einsatz von 2FA auch erzwungen werden? Werden Hardware-Keys unterstützt?

  • Besitzt die Plattform eingebaute Reports, um sich einen Überblick zu beschaffen, aus welchen Regionen der Welt, mit welchen personal access tokens, clients und IP-Adressen auf Quellcode zugegriffen wird?

  • Können Sicherheitserkenntnisse, die auf der Community-Plattform gewonnen wurden, ohne weiteres technisch auf die On-Premise-Variante übertragen werden?

  • Unterstützt die Plattform die kryptographische Verifizierung von Commits (Commit Signing)? Unterstützt der Mechanismus dezentrale Ansätze wie PGP und zentrale Ansätze wie X.509?

  • Können API-Zugriffstoken für Integrationen passgenau auf die Ressourcen und Operationen zugeschnitten werden, für die Zugriff bestehen muss (Principle of Least Privilege)?

  • Wie sicher wird die Plattform vom Mozilla HTTP Observatory eingeschätzt?

  • Ist es möglich, eine Liste aller Repositories zu erzeugen, auf die eine bestimmte Person Zugriff hat?

  • Ist es für Administratoren möglich, in die Rolle eines Benutzers zu wechseln (mit Protokoll), ohne dessen Passwörter zurücksetzen zu müssen?

  • Unterstützt die Plattform Toekn Scanning für unabsichtlich hochgeladene Cloud Credentials oder Passwörter?

  • Zeigt die Plattform bekannte Sicherheitslücken in einbezogenen Open Source-Bibliotheken an?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment