A dashboard displaying useful data from MirageOS project and its related repositories.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
data
src
.gitignore
.merlin
LICENSE
Makefile
README.md
_oasis
configure

README.md

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: