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
- 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: