rudenoise / mirage-dashboard

A dashboard displaying useful data from MirageOS project and its related repositories.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

mirage-dashboard

A dashboard displaying useful data from MirageOS project and its related repositories.

View the mirage-dashboard

Overview

MirageOS is continually updating/improving, keeping track of these changes is tricky.

As part of the 2016 MirageOS Hackathon, I'm starting this project as a learning exercise.

What will the dashboard show?

  • A list of the core MirageOS libraries, on GitHub.
  • Data related to each library:
    • Name
    • License
    • Last release (version + date)
    • Commits to master since last release
    • Open issues (maybe more detailed numbers from labels)
    • Open PRs
    • Branches (maybe active only? Some mirage repos have way too many stale branches)
    • Top 3 contributors
    • CI status
    • Last activity: commit / issue

How are the libraries chosen?

To get things going there is a JSON file repos.js that lists all relevant repositories.

Each repo has tags to help categorise them. Tags could include: depricated, core, network, build, etc...

Please add/remove/update/edit/tag via pull requests.

Work in progress:

Build:

opam install bin_prot camlp4 comparelib core herelib lwt
// currently ocaml-github is dependent on ocaml < 4.02.3
oasis setup
./configure
make

Set up ocaml-github to list Mirage repositories.

Setup git jar.

# install ocaml-github from opam
opam install ocaml-github
# make an access token/cookie
git-jar make {{your github username }} mirage-dashboard
# list events for this repo
git-list-events -c mirage-dashboard rudenoise/mirage-dashboard

Use the app (with its extremely limited form):

./mirage_dashboard.native -c mirage-dashboard -r data/in/all.json -o data/out/all.json
# it'll take a while, hitting each repo in sequence to keep below the rate limit

TO DO:

  • remove all usage of Core.Std
  • look at
  • improve contributors data (events may not be the best source)
  • break down event data
    • commits since release with dates
    • open PRs
    • open issues
  • get licence (opamfu?)
  • add filtering/sorting to web UI
    • recent activity
    • open issues
    • branch count
  • add filtering/sorting to CLI app
  • Get build status from travis api use ocaml-cohttp?
  • Wrap in Mirage Unikernel
  • Serve publicly
  • Cache data (and/or background process github interrogation) to limit GitHub API calls

Done:

  • README
  • Create web-accessible HTML/JS dashboard (static)
  • Start with CLI app
  • Dump data to JSON
  • Use ocaml-github to gather basic data about the MirageOS ecosystem.
  • Crawl dependencies
  • handle rate limit from API in OCaml app
  • tag repos with relevant meta-data for filtering in web-UI
  • add created_at field to data
  • get CI status, if any
  • add filtering/sorting to web UI
    • tags
  • improve releases data (straight to opam or use tags)
  • compare tag and release date, then choose most recent
  • include repo description

Sources of inspiration/theft:

About

A dashboard displaying useful data from MirageOS project and its related repositories.

License:GNU General Public License v3.0


Languages

Language:OCaml 92.8%Language:Makefile 5.2%Language:Shell 2.0%