All Projects → hpjansson → fornalder

hpjansson / fornalder

Licence: GPL-3.0 license
Visualize long-term trends in collections of Git repositories.

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to fornalder

Developers.italia.it
The developer community designing and developing public digital services in Italy
Stars: ✭ 158 (+97.5%)
Mutual labels:  community, developers
lovelace-plotly-graph-card
Highly customisable Lovelace card to display interactive graphs. Brings scrolling, zooming, and much more!
Stars: ✭ 38 (-52.5%)
Mutual labels:  plots, history
NanoSoft
A forum system built using plain php dedicated for C#.NET Developers
Stars: ✭ 20 (-75%)
Mutual labels:  community, developers
Forum Java
一款用 Java(spring boot) 实现的现代化社区(论坛/问答/BBS/社交网络/博客)系统平台。A modern community (forum/Q&A/BBS/SNS/blog) system platform implemented in Java(spring boot).
Stars: ✭ 380 (+375%)
Mutual labels:  community, developers
shell-history
Visualize your shell usage with Highcharts!
Stars: ✭ 100 (+25%)
Mutual labels:  analysis, history
rubynepal.github.io
Official website of Ruby Nepal
Stars: ✭ 21 (-73.75%)
Mutual labels:  community, developers
bogota
Bogotá, Colombia 🍺
Stars: ✭ 22 (-72.5%)
Mutual labels:  community, developers
PHAT
Pathogen-Host Analysis Tool - A modern Next-Generation Sequencing (NGS) analysis platform
Stars: ✭ 17 (-78.75%)
Mutual labels:  analysis
mousetrap
Process and Analyze Mouse-Tracking Data
Stars: ✭ 33 (-58.75%)
Mutual labels:  analysis
mongoose-slug-plugin
Slugs for Mongoose with history and i18n support (uses speakingurl by default, but you can use any slug library such as limax, slugify, mollusc, or slugme)
Stars: ✭ 21 (-73.75%)
Mutual labels:  history
hypothetical
Hypothesis and statistical testing in Python
Stars: ✭ 49 (-38.75%)
Mutual labels:  analysis
agouti
A platform for collective blogs and social media platform, forum, question and answer service. Catalog of sites (programs), site navigation and directories - facets. A community based on the PHP HLEB micro-framework.
Stars: ✭ 36 (-55%)
Mutual labels:  community
felt-mockup
retired mockup 💚 customizable community tools that feel good
Stars: ✭ 47 (-41.25%)
Mutual labels:  community
TwitterSearch2Gephi
This windows CLI app lets you collect data from twitter via REST API and convert it into a CSV data set that can be used with Gephi. Other social networks (Reddit, Youtube, WWW) are also supported.
Stars: ✭ 21 (-73.75%)
Mutual labels:  analysis
cis
Home of the Community Intercomparison Suite.
Stars: ✭ 30 (-62.5%)
Mutual labels:  analysis
volkscv
A Python toolbox for computer vision research and project
Stars: ✭ 58 (-27.5%)
Mutual labels:  analysis
pbPlots
A plotting library available in many programming languages.
Stars: ✭ 71 (-11.25%)
Mutual labels:  plots
wg-value
CHAOSS Value Working Group
Stars: ✭ 23 (-71.25%)
Mutual labels:  community-health
comdev-site
Website sources for the Apache Community Development Website
Stars: ✭ 70 (-12.5%)
Mutual labels:  community
MixingBear
Package for automatic beat-mixing of music files in Python 🐻🎚
Stars: ✭ 73 (-8.75%)
Mutual labels:  analysis

Fornalder

Fornalder ("Bygone Age") is a small utility that can be used to ingest commit data from collections of git repositories and visualize it in various ways.

It was used to generate the graphs in this blog post. It's made to work with data going back a long time (a decade or two); with shorter time spans the output will probably look quite bad.

Building

Clone the project repository and make sure you have the Rust prerequisites installed, then:

$ cargo build

Using

You need a fairly recent version of Gnuplot to generate plots. Make sure it is installed.

Clone the repositories of interest to a local directory, then ingest them. This can be run multiple times to add to or update the database:

$ target/debug/fornalder --meta projects/project-meta.json \
                         ingest db.sqlite repo-1.git repo-2.git ...

When the database has been created, generate one or more plots, e.g:

$ target/debug/fornalder --meta projects/project-meta.json \
                         plot db.sqlite \
                         --cohort firstyear \
                         --interval year \
                         --unit authors \
                         graph.png

If something looks odd in the result, you can also explore the database directly.

$ sqlite3 db.sqlite
sqlite> .tables
authors      raw_commits
sqlite> .schema authors
CREATE TABLE authors(
  author_name TEXT,
  first_time,
  first_year,
  last_time,
  last_year,
  active_time,
  n_commits,
  n_changes
);
sqlite> SELECT author_name, first_year FROM authors ORDER BY first_year;
[...]

Guide to arguments:

--meta <meta>
    Optional. Project metadata to use. See projects/ for examples.

--cohort < firstyear | domain >
    Optional. How to split the data into cohorts.

--interval < year | month >
    Optional. Time interval of each histogram bin.

--unit < authors | changes | commits >
    Optional. What's being measured -- active authors, number of lines
    changed, or commit count.

--from year
    Optional. First year to plot.

--to year
    Optional. Last year to plot.

Git cloning tips

We support ingestion from both bare and non-bare repositories:

git clone https://git.example.com
git clone --bare https://git.example.com

Another option that can massively reduce data transfer is --filter=blob:none, which will only clone commit metadata, not the files themselves.

git clone --bare --filter=blob:none https://git.example.com

Note that this is not supported by all git servers (cloning may fail). Using this mode also prevents the use of the --unit changes option (counting the number of changed lines), or in general inspecting --stat output from the commit database.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].