Skip to content

Instantly share code, notes, and snippets.

@FinalAngel
Last active February 12, 2016 10:05
Show Gist options
  • Save FinalAngel/86327516dce07699a8d5 to your computer and use it in GitHub Desktop.
Save FinalAngel/86327516dce07699a8d5 to your computer and use it in GitHub Desktop.
IPA Gentian

Titel der IPA

(Title of the IPA)

Project "Tranquility Base"

Ausgangslage

(History / starting point)

Wir entwicklen mehrere Projekte mit verschiedenen Teams gleichzeitig innerhalb von Divio. Um eine gute Qualität zu erzielen, wird erstellter Code dem Team und Projekt erst zur verfügung gestellt, wenn dieser einer routine Prüfung unterzogen wurde. Dies geschieht mittels einem "Pull Request" (PR) auf unserem versionierungs System Git via "GitHub" (github.com). GitHub stellt eine Benutzeroberfläche zur verfügung um den Code zu analysieren und zu kommentieren. Erst wenn mindestens ein Entwickler das go gibt (LGTM - looks good to me) wird der Code in das Projekt aufgenommen. Dieser Prozess stellt sicher das unsere Qualitätsanforderungen gewährleistet werden.

Hierbei ist über einen längeren Zeitraum folgendes Problem aufgetreten: Um einen PR zu landen, muss zuerst die Aufmerksamkeit eines zweiten Entwicklers gewonnen werden. In der Regel ist dies kein grösseres Problem, allerdings können Anfragen vergessen gehen und erst nach einigen stunden oder tagen wieder aufgegriffen. Die PRs werden innerhalb eines Chatrooms veröffentlicht und es ist nicht immer klare, wer jetzt dafür zuständig ist.

Um dieses Problem zu lösen möchten wir eine interaktive Liste der offenen, noch zu bearbeitenden PRs zur verfügung stellen in dem Entwickler individuell Einträge aussuchen.

Um dieser Aufgabe entgegen zu treten soll in einer ersten Phase ein HTML Prototyp erbaut werden der den grundlegenden Informationsablauf interaktiv darstellen soll.

Detaillierte Aufgabenstellung

(Detailed concept)

Wie in er Ausgangslage beschrieben, benötigen wir ein System, dass alle offenen "Pull Requests" in einer Listenform darstellt (mit ggf. zusätzlichen Informationen). Diese sollen so einfach wie möglich von Entwicklern selektier- und konfigurierbar sein. Da eine solche Anforderung recht komplex sein kann, benötigen wir in der anfangs phase lediglich einen HTML Prototypen. Anhand des Prototyps wird nach der IPA Arbeit entschieden, was für Änderungen vorgenommen werden müssen um das Produkt intern zu lancieren.

Der Prototyp muss folgende Anforderungen erfüllen:

  • Eine funktionierende und mobil freundliche Oberfläche - HTML / CSS gemäss Spezifikationen (W3C / Validieren) - HTML Integriert in Django Templates
  • Interaktive Elemente sollen dargestellt werden - Login/logout & Konfiguration - Pull Request zum Review auswählen/schliessen - Erweiterte Informationen einblenden - Optional: Filter / Such Mechaniken
  • Die Liste wird in Echtzeit aktualisiert - Im Rahmen der Arbeit kann dies manuell vorgeführt werden

Folgende Spezifikationen müssen berücksichtigt sein und werden im Design ggf. dargestellt:

  • Ein Listeneintrag hat folgende Aktionen/Status: - Auswählen ("Pick"), Schliessen ("Reviewed"), Abbrechen ("Unpick")
  • Die Zeit seit Erfassung / letzder Aktualisierung wird dargestellt
  • Je nach Zeitspanne werden verschiedene Status angezeigt (Dringend, Neu...)
  • Wann die letzte Aktion durchgeführt wurde (und ggf. von wem)
  • Der Browser muss eine Warnung auslösen, um dem Entwickler einen Aufmerksamkeit Hinweis zu leisten (Anzeige der pull requests seit letztem Besuch)
  • Optional: Kommentare können in einer erweiterten Ansicht dargestellt werden
  • Optional: Genereller CI (Continues Integration) status

Folgende Informationen müssen in einem PR ersichtlich sein:

  • Name / ID / Link
  • Projekt / zugehöriges Repository (e.g.: divio/django-cms)
  • Author / involvierte Person
  • Zeit
  • Beschreibung
  • Organisation

Sollten Kriterien nicht erfüllbar sein, müssen diese entsprechend mit Begründungen Dokumentiert werden. Ebenfalls soll eine Dokumentation über die möglichen Interaktionen erstellt werden. Diese soll fest halten, was mit dem Prototyp in einer Demonstration alles erreichbar ist und welche Interaktionen erst in einem späteren Zeitpunkt zur verfügung stehen (nach der IPA). Es muss möglich sein den Prototypen anhand dieser der Firma zu präsentieren.

Nicht im Umfang dieser Arbeit enthalten sind:

  • Das erstellen eines Designs. Dieses wird am ersten Tag der Arbeit zur verfügung gestellt, mockups stehen vorgägnig zur verfügung
  • Das initialisieren des Projektes Das Django Projekt wird am ersten Tag der Arbeit zur verfügung gestellt.
  • Das der Status nach einem browser reload erhalten bleibt
  • Die Authentifizierung zu GitHub

Mittel und Methoden

(Means and methods)

Der Arbeitsplatz ist ergonomisch mit einem Apple Macbook Pro, mehreren Bildschirmen und dem üblichen Peripherie Geräten ausgestattet.

Die Software ist frei auswählbar, Divio stellt Sublime Text, PyCharm, und Photoshop als Lizenz pflichtige Software zur verfügung. Jegliche andere Software kann frei installiert werden.

Der Prototyp wird in Django Templates (https://docs.djangoproject.com/en/1.8/ref/templates/) mithilfe vom HTML und CSS umgesetzt. Die Technologieauswahl beschränkt sich hierzu auf unsere internen Standards (https://github.com/aldryn/aldryn-boilerplate-bootstrap3) und beinhaltet under anderem: Bootstrap 3, Sass, jQuery, Gulp. Zusätzlich können Erweiterungen wie Underscore oder moment.js benutzt werden.

Werden andere technologien als die oben erwähnten ausgewählt, müssen diese in der Dokumentation festgehalten sein.

Das Design wird an "Aldryn Cloud" (control.aldryn.com) angeglichen, jedoch soll sämtlicher Code unabhängig der Control Platform erstellt werden (kein kopieren erlaubt).

Vorkenntnisse

(Pre-knowledge)

Gentian hat bereits vorgegebene Designs mithilfe der Django Template Language umgesetzt und in vorhandene Projekte eingebunden. Er kennt sich mit dem django CMS aus und weiss wie Aldryn Cloud aufgebaut ist.

Seit beginn an hat er sich mit unserem Boilerplate auseinandergesetzt und weiss wie das CSS mithilfe von SASS/Gulp kompiliert werden kann. Er weiss wie man jQuery benutzt und kann einfaches JavaScript damit selber erstellen.

Vorarbeiten

(Pre-work)

Es wurde im Vorfeld bereits beschlossen aus dieser Arbeit ein internes Produkt zu lancieren. Anforderungen und Spezifikationen können Intern direkt abgeklärt und ggf. angepasst werden.

Vor dem Projektstart muss abgeklärt sein, wie die Daten von GitHub zur verfügung gestellt werden. Im Extremfall können diese in dem Prototyp mit "Lorem Ipsum" text ersetzt werden. Ein internes team wird sich um die Authentifizierung und Data Polling kümmern.

Neue Lerninhalte

(New technologies)

Verschiedene Status Möglichkeiten müssen dargestellt werden, dazu muss Gentian sein JavaScript Know-How erweitern um:

  • Das DOM effizient zu bearbeiten
  • AJAX / JSON anfragen zu überprüfen und verarbeiten
  • Optional: Client-seitiges templating
  • Optional: Polling der GitHub Daten

Arbeiten im letzten halben Jahr

(Work in the last half year)

Die folgenden Arbeiten wurden im letzten Jahr erledigt:

  • Automatisierte Integrations Tests für django CMS
  • divio.com / django-cms.org Support (HTML/CSS Ergänzungen, Bug Fixes)
  • Das erstellen verschiedener Aldryn Cloud themes
  • Ein three.js Musik Experiment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment