A dashboard displaying useful data from MirageOS project and its related repositories.
View the mirage-dashboard
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.
- 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
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.
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
- remove all usage of Core.Std
- look at
- improve contributors data (events may not be the best source)
- cross-reference with opam opamfu?
- also look at opam API 2.0
- 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
- 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