GitMan (GitLab Manager)

GitMan (GitLab Manager)

Last modified by Jan Vlnas on 2013-10-04, 01:59

Současný stav

GitLab na FIT v hojné míře využívají jak jednotlivci pro své projekty, tak i cvičící pro výuku v předmětech (např. MI-RUB). Studenti zde verzují své domácí úlohy či semestrální práce a vyučující je kontrolují, dávají zpětnou vazbu prostřednictvím komentářů u kódu atd. Vyučující zde také studentům zpřístupňují materiály (zdrojové kódy) k předmětu.

Problém

Když chce vyučující zpřístupnit repositář, např. se zadáním úkolů, svým studentům, musí ho buď nastavit jako plně veřejný nebo studenty ručně, jednoho po druhém přidat jako členy. To je poměrně pracné a je záhodno to automatizovat.

V případě, kdy studenti v rámci předmětu vypracovávají úkoly či semestrálky, tak si teď musí každý vytvořit svůj repositář, a to buď ve svém jmenném prostoru, nebo v rámci skupiny, kterou předtím vyučující vytvořil. V prvním případě se, s větším počtem studentů, stávají pro vyučujícího projekty nepřehledné. Nemá samostatný dashboard pro každé cviko či předmět a ztěžuje se hromadná práce s repositáři. Studenti také musí vyučujícímu jednotlivě nastavit přístup do repositáře (přidat ho jako člena).

Druhý způsob vyžaduje, aby vyučující předem vytvořil skupinu a jednotlivě do ní všechny studenty přidal.

Zadání

Navrhněte a implementujte samostatnou aplikaci, případně komponentu/rozšíření pro GitLab (formou Rails Engine), které vyučujícím usnadní práci se zakládáním repositářů pro výuku v předmětech.

Funkční požadavky

  1. Komponenta bude vyučujícímu umožňovat vytvořit projekt (repositář) a…
    1. zvolit jeho název, volitelně identifikátor repositáře a cílový jmenný prostor,
    2. hromadně do něj přidat jako členy studenty;
      1. zvolených paralelek (v aktuálním semestru),
      2. nebo zvoleného předmětu (v aktuálním semestru),
      3. a zvolit jejich roli.
  2. Komponenta bude vyučujícímu umožňovat vytvořit skupinu a…
    1. zvolit její název,
    2. hromadně do ní přidat jako členy studenty;
      1. zvolených paralelek (v aktuálním semestru),
      2. nebo zvoleného předmětu (v aktuálním semestru),
      3. a zvolit jejich roli;
    3. hromadně vytvořit projekt (repositář) pro každého studenta ze skupiny;
      1. s uživatelským jménem studenta jako názvem projektu (repositáře),
      2. ve jmenném prostoru vytvořené skupiny.
  3. Vyučujícímu se nabídnou pouze ty předměty a paralelky, které v daném semestru učí.

Nefunkční požadavky

  1. Implementace:
    1. Komponenta bude implementována jako samostatná webová aplikace, nebo jako rozšíření do GitLabu ve formě Rails Engine,
  2. Implementace formou samostatné aplikace
    1. Využívá webový framework jako např. Ruby on Rails nebo Sinatra. Výběr frameworku zdůvodněte.
  3. Implementace formou rozšíření GitLabu
    1. bude jej možné snadno zakomponovat do GitLabu, a to pouze s minimem nezbytných úprav kódu samotného GitLabu (přidání do navigační lišty),
    2. bude přednostně využívat knihovny již obsažené v GitLabu.
  4. Datové zdroje:
    1. Komponenta bude využívat KOSapi (RESTful API); jako zdroj informací o předmětech, studentech, vyučujících a jejich vzájemných vazbách,
    2. KOSapi se bude dotazovat on-demand (na data, která zrovna potřebuje), tj. nebude data dávkově načítat do vlastní databáze (využití HTTP cache to nevylučuje, naopak).
    3. Samostatná aplikace také využívá GitLab API pro správu repozitářů a skupin.
  5. Uživatelská zkušenost:
    1. Komponenta bude snadno použitelná,
    2. dlouho trvající akce (vytváření repositářů) budou spouštěné asynchronně,
    3. a uživatel bude u dlouhotrvajících akcí informován o stavu zpracování.
  6. Testování:
    1. Komponenta bude důsledně pokrytá jednotkovými a integračními testy.
  7. Licence:
    1. Komponenta bude využívat výhradně open-source knihovny a komponenty.
Created by Jakub Jirůtka on 2013-10-04, 01:06

My Recent Modifications


This wiki is licensed under a Creative Commons BY-SA 3.0 license
XWiki Enterprise 5.4.1 - Documentation