• Stars
    star
    181
  • Rank 212,110 (Top 5 %)
  • Language
    Shell
  • License
    Apache License 2.0
  • Created over 7 years ago
  • Updated 29 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🚅Track development velocity

Open Source Project Velocity by CNCF

Current reports

1/1/2022 - 1/1/2023:

Past reports

8/1/2021 - 8/1/2022:

7/1/2021 - 1/1/2022:

1/1/2021 - 1/1/2022:

1/1/2021 - 7/1/2021:

1/1/2020 - 1/1/2021:

1/1/2019 - 1/1/2020:

Track development velocity

This tool set generates data for a Bubble/Motion Google Sheet Chart.
The main script is analysis.rb. The input is a csv file created from BigQuery results.

This tool is being used for periodical chars update as described in the following documents:
Guide to the CNCF projects chart creation
Guide to the LinuxFoundation projects chart creation
Guide to the Top-30 projects chart creation

https://www.cncf.io/blog/2017/06/05/30-highest-velocity-open-source-projects/
Links to various charts and videos generated using this project

Example use:

ruby analysis.rb data/data_yyyymm.csv projects/projects_yyyymm.csv map/hints.csv map/urls.csv map/defmaps.csv skip.csv ranges.csv

Depending on data, the script will stop execution and present a command line.

[1] pry(main)>

To continue, type 'quit' and hit enter/return.

Arguments list:

  • data file, points to the results of running an sql statement designed for Google BigQuery. The query generates a standardized (in terms of velocity) header. The .sql files are stored in BigQuery/ folder
  • output file, typically a new file in the projects/ folder
  • a "hints" file with additional mapping: repo name -> project. (N repos --> 1 Project), so a given project name may be listed be in many lines
  • a "urls" file which defines URLs for the listed projects (a separate file is used because otherwise, in hints file we would have to duplicate data for each project ) (1 Project --> 1 URL)
  • a "default" map file which defines non standard names for projects generated automatically via grouping by org (like aspnet --> ASP.net) or to group multiple orgs and/or repos into a single project. It is the last step of project name mapping This tool outputs a data file into the 'projects/' directory
  • a "skip" file that lists repos and/or orgs and/or projects to be skipped
  • a "ranges" file that contains ranges of repos properties which makes repo included in calculations

File formats

input.csv data/data_yyyymm.csv from BigQuery, like the following:

org,repo,activity,comments,prs,commits,issues,authors
kubernetes,kubernetes/kubernetes,11243,9878,720,70,575,40
ethereum,ethereum/go-ethereum,10701,570,109,43,9979,14
...

output.csv to be imported via Google Sheet (File -> Import) and then chart created from this data. It looks like this:

org,repo,activity,comments,prs,commits,issues,authors,project,url
dotnet,corefx+coreclr+roslyn+cli+docs+core-setup+corefxlab+roslyn-project-system+sdk+corert+eShopOnContainers+core+buildtools,20586,14964,1956,1906,1760,418,dotnet,microsoft.com/net
kubernetes+kubernetes-incubator,kubernetes+kubernetes.github.io+test-infra+ingress+charts+service-catalog+helm+minikube+dashboard+bootkube+kargo+kube-aws+community+heapster,20249,15735,2013,1323,1178,423,Kubernetes,kubernetes.io
...

hints.csv a csv file with hints for repo --> project mapping, it has this format:

repo,project
Microsoft/TypeScript,Microsoft TypeScript
...

urls.csv a csv file with project --> url mapping with the following format:

project,url
Angular,angular.io
...

defmaps.csv a csv file with proper names for projects generated as default grouping within org:

name,project
aspnet,ASP.net
nixpkgs,NixOS
Azure,=SKIP
...

The special flag '=SKIP' for a project means that this org should NOT be grouped

skip.csv a csv file that contains lists of repos and/or orgs and/or projects to be skipped in the analysis:

org,repo,project
"enkidevs,csu2017sp314,thoughtbot,illacceptanything,RubySteps,RainbowEngineer",Microsoft/techcasestudies,"Apache (other),OpenStack (other)"
"2015firstcmsc100,swcarpentry,exercism,neveragaindottech,ituring","mozilla/learning.mozilla.org,Microsoft/HolographicAcademy,w3c/aria-practices,w3c/csswg-test",
"orgX,orgY","org1/repo1,org2/repo2","project1,project2"

ranges.csv a csv file that contains ranges of repos properties which makes repo included in calculations. It can constrain any of "commits, prs, comments, issues, authors" to be within range n1 .. n2 (if n1 or n2 < 0 then this value is skipped, so -1..-1 means unlimited There can also be exception repos/orgs that do not use those ranges:

key,min,max,exceptions
activity,50,-1,"kubernetes,docker/containerd,coreos/rkt"
comments,20,100000,"kubernetes,docker/containerd,coreos/rkt"
prs,10,-1,"kubernetes,docker/containerd,coreos/rkt"
commits,10,-1,"kubernetes,kubernetes-incubator"
issues,10,-1,"kubernetes,docker/containerd,coreos/rkt"
authors,3,-1,"kubernetes,docker/containerd,google/go-github"

The generated output file contains all the input data (so it can be 600 rows for 1000 input rows for example). You should manually review generated output and choose how many records you need.

hintgen.rb is a tool that takes data already processed for various created charts and creates distinct projects hint file from it. Example usage:

hintgen.rb data.csv map/hints.csv Use multiple times putting a different data file (1st parameter) and generate final hints.csv.

Input and Output

Data files existing in the repository:

  • data/data_YYYYMM.csv --> data for given YYYYMM from BigQuery.
  • projects/projects_YYYYMM.csv --> data generated by analysis.rb based on data_YYYYMM.csv with map/: hints.csv, urls.csv, defmaps.csv, skip.csv, ranges.csv parameters

Motion charts

generate_motion.rb a tool that merges data from multiple files into one to be used for motion chart. Usage:

ruby generate_motion.rb projects/files.csv motion/motion.csv motion/motion_sums.csv [projects/summaries.csv]

File files.csv contains a list of data files to be merged. It has the following format:

name,label
projects/projects_201601.csv,01/2016
projects/projects_201602.csv,02/2016
...

This tool generates 2 output files:

  • 1st is a motion data from each file with a given label
  • 2nd is cumulative sum of data, so 1st label contains data from 1st label, 2nd contains 1st+2nd, 3rd=1st+2nd+3rd ... last = sum of all data. Labels are summed-up in alphabetical order. When input data is divided by months, "YYYYMM" or "YYYY-MM" format must be used to receive correct results. "MM/YYYY" will, for example, swap "2/2016" and "1/2017".
    Output formats of 1st and 2nd files are identical.
    The first column is a data file generated by analysis.rb. The following column is a label that will be used as "time" for google sheets motion chart.

Output format:

project,url,label,activity,comments,prs,commits,issues,authors,sum_activity,sum_comments,sum_prs,sum_commits,sum_issues,sum_authors
Kubernetes,kubernetes.io,2016-01,6289,5211,548,199,331,73,174254,136104,18264,8388,11498,373
Kubernetes,kubernetes.io,2016-02,13021,10620,1180,360,861,73,174254,136104,18264,8388,11498,373
...
Kubernetes,kubernetes.io,2017-04,174254,136104,18264,8388,11498,373,174254,136104,18264,8388,11498,373
dotnet,microsoft.com/net,2016-01,8190,5933,779,760,718,158,158624,111553,17019,17221,12831,382
dotnet,microsoft.com/net,2016-02,17975,12876,1652,1908,1539,172,158624,111553,17019,17221,12831,382
...
dotnet,microsoft.com/net,2017-04,158624,111553,17019,17221,12831,382,158624,111553,17019,17221,12831,382
VS Code,code.visualstudio.com,2016-01,7526,5278,381,804,1063,112,155621,104386,9501,17650,24084,198
VS Code,code.visualstudio.com,2016-02,17139,11638,986,1899,2616,133,155621,104386,9501,17650,24084,198
...
VS Code,code.visualstudio.com,2017-04,155621,104386,9501,17650,24084,198,155621,104386,9501,17650,24084,198
...

Each row contains its label data (separate or cumulative) whereas columns starting with max_ contain cumulative data for all labels. This is to make the data ready for google sheet motion chart without complex cell indexing.

The final (optional) file summaries.csv is used to read the number of authors. This is because the number of authors is computed differently. Without the summaries file (or if a given project is not in the summaries file), we have a number of distinct authors in each period. Summary value is a sum of all periods max. This is obviously not a real count of all distinct authors in all periods. Number of authors would be computed if another file is supplied, one which contains summary data for a longer period that is equal to sum of all periods.

Project ranks

Tool to create ranks per project (for all project's numeric properties) report_projects_ranks.rb & shells/report_cncf_project_ranks.sh Shell script projects from projects/unlimited_both.csv and uses: reports/cncf_projects_config.csv file to get a list of projects that needs to be included in the rank statistics. File format is:

project
project1
project2
...
projectN

It outputs a rank statistics file reports/cncf_projects_ranks.txt

More info

Guide to non-GitHub project processing

Other useful notes

More Repositories

1

landscape

🌄 The Cloud Native Interactive Landscape filters and sorts hundreds of projects and products, and shows details including GitHub stars, funding, first and last commits, contributor counts and headquarters location.
9,268
star
2

curriculum

📚Open Source Curriculum for CNCF Certification Courses
5,501
star
3

mentoring

👩🏿‍🎓👨🏽‍🎓👩🏻‍🎓CNCF Mentoring: LFX Mentorship + Summer of Code
2,385
star
4

tag-security

🔐CNCF Security Technical Advisory Group -- secure access, policy control, privacy, auditing, explainability and more!
HTML
2,045
star
5

toc

⚖️ The CNCF Technical Oversight Committee (TOC) is the technical governing body of the CNCF Foundation.
1,595
star
6

wg-serverless

CNCF Serverless WG
1,515
star
7

presentations

📊 Presentations from the CNCF community to share and reuse
Go
891
star
8

k8s-conformance

🧪CNCF K8s Conformance Working Group
Shell
855
star
9

tag-app-delivery

📨🚚CNCF App Delivery TAG
HTML
774
star
10

trailmap

🗺TrailMap files from the cncf/landscape repo
652
star
11

glossary

The CNCF Cloud Native Glossary Project aims to define cloud native concepts in clear and simple language, making them accessible to anyone — whether they have a technical background or not (https://glossary.cncf.io).
HTML
651
star
12

tag-observability

Technical Advisory Group for Observability 🔭⚙️
HTML
641
star
13

foundation

☁️♮🏛 This repo contains several documents related to the operation of the CNCF. File non-technical issues related to CNCF here.
Rich Text Format
559
star
14

artwork

🎨 CNCF-related logos and artwork
533
star
15

devstats.archive

📈CNCF-created tool for analyzing and graphing developer contributions
Shell
445
star
16

financial-user-group

💰💸☁️ For those interested in running Kubernetes in highly regulated environments, particularly financial services
301
star
17

students

CNCF resource for students looking to get into the cloud native community.
296
star
18

landscapeapp

🌄Upstream landscape generation application
JavaScript
253
star
19

tag-env-sustainability

🌳🌍♻️ TAG Environmental Sustainability
HTML
236
star
20

kubernetes-community-days

📅 Kubernetes Community Days website
229
star
21

udpa

🌌📊✈Universal Data Plane API Working Group (UDPA-WG)
Starlark
229
star
22

xds

xDS API Working Group
Starlark
203
star
23

memorials

🕯️💐CNCF Community Memorials
182
star
24

tag-contributor-strategy

CNCF Technical Advisory Group on Contributor Strategy -- maintainer relations, building up contributors, governance, graduation, and more.
HTML
176
star
25

cloud-native-community-cookbook

A beautiful cookbook with recipes from around the cloud native community.
173
star
26

gitdm.archive

📜Fork for tracking CNCF projects
Ruby
169
star
27

llm-starter-pack

🤖 Get started with LLMs on your kind cluster, today!
Python
166
star
28

cnf-testbed

ARCHIVED: 🧪🛏️Cloud-native Network Function (CNF) Testbed --> See LFN Cloud Native Telecom Initiative https://wiki.lfnetworking.org/pages/viewpage.action?pageId=113213592
Shell
163
star
29

contribute

🙋🏿‍♀️🙋🏽‍♂️🙋🏻‍♀️Contribution guide to the CNCF ecosystem
Go
161
star
30

tag-storage

🗄CNCF Storage TAG
157
star
31

cluster

🖥🖥🖥🖥CNCF Community Cluster
154
star
32

communitygroups

👩🏿‍💻👨🏿‍💻👩🏾‍💻👨🏾‍💻👩🏽‍💻👨🏽‍💻👩🏼‍💻👨🏼‍💻👩🏻‍💻👨🏻‍💻CNCF Community Groups (formerly meetups)
152
star
33

landscape2

Landscape2 is a tool that generates interactive landscapes websites
TypeScript
152
star
34

ambassadors

🌏🌎🌍 CNCF Ambassadors
151
star
35

llm-in-action

🤖 Discover how to apply your LLM app skills on Kubernetes!
Python
136
star
36

cartografos

The Cartografos working group aims to provide tools to help adopters and end-users to navigate the CNCF landscape and the wider cloud native ecosystem.
HTML
131
star
37

telecom-user-group

📞📱☎️Public info for the CNCF Telecom User Group
127
star
38

sandbox

Applications for Sandbox go here! ⏳📦🧪
120
star
39

cncf-fuzzing

✨🔐 CNCF Fuzzers
Go
111
star
40

clomonitor

CLOMonitor is a tool that periodically checks open source projects repositories to verify they meet certain project health best practices
TypeScript
107
star
41

svg-autocrop

🚗🌽🔳An NPM module to autocrop and slim down SVGs
JavaScript
105
star
42

gitvote

GitVote is a GitHub application that allows holding a vote on issues and pull requests
Rust
105
star
43

surveys

📝📊 CNCF Survey Data
92
star
44

clotributor

Discover great opportunities to become a Cloud Native contributor
TypeScript
88
star
45

enduser-public

🔚👩🏾‍💻👨🏽‍💻👩🏼‍💻CNCF End User Community
82
star
46

tag-runtime

🏃🏿‍♀️🏃🏽‍♀️🏃🏻‍♂️🕒CNCF Technical Advisory Group for Runtime
HTML
82
star
47

cncf.io

☁️♮🏛🚧 The CNCF.io WordPress website
PHP
81
star
48

research-user-group

📚 👨‍🔬 👩‍🔬 Discussion and advancement of Research Computing using Cloud Native technologies
77
star
49

demo

Demo of CNCF technologies
JavaScript
77
star
50

devstats

📈CNCF-created tool for analyzing and graphing developer contributions
Shell
74
star
51

servicedesk

💁‍♀️💁‍♂️📥 Maintainers can get project-related help from the CNCF
73
star
52

people

Stores the data that will populate the various people listings on cncf.io
Makefile
72
star
53

tag-network

🌐 CNCF Network TAG
70
star
54

project-template

CNCF Project Template
66
star
55

devstatscode

📈DevStats code
Go
43
star
56

clowarden

CLOWarden is a tool that manages access to resources across multiple services
Rust
43
star
57

techdocs

CNCF TechDocs Team
41
star
58

dot-org-hugo-theme

Hugo theme ideal for Organizations to use. Built initially for the TODO site redesign.
SCSS
38
star
59

landscape-graph

CNCF Landscape Graph, data model, and applications.
Jupyter Notebook
38
star
60

kubestronaut

38
star
61

wg-ci

🔄CNCF CI Working Group
36
star
62

cloudnativetv

The home for CloudNative.tv the definitive interactive media experience for learning and growing in cloud native
CUE
34
star
63

radar

CNCF Tech Radar
JavaScript
33
star
64

gitdm

📜Fork for tracking CNCF projects
Ruby
30
star
65

cla

✍CLAs for CNCF
29
star
66

zero-to-merge

☁️ A comprehensive, four-week program designed to help you effectively navigate contributions to CNCF projects.
28
star
67

wg-networking

📡📶CNCF Networking WG
26
star
68

hugo-netlify-starter

Static website template for CNCF projects
HTML
26
star
69

landscape2-sites

Landscape2 sites settings and deployment workflows
25
star
70

awards

🏆 CNCF Community Awards
20
star
71

public-sector-user-group

🏛️ 🗣️ ☁️ CNCF User Group focused on advancing cloud computing in the public sector
20
star
72

contribcard

Contribcard is a tool that generates cards for your projects contributors
TypeScript
19
star
73

devstats-example

📈Example DevStats deployment for single project - Homebrew
Shell
19
star
74

chaosengineering-wg

Chaos Engineering Working Group 💥⚙️🧰
16
star
75

crossplane-conformance

Crossplane Conformance Program
16
star
76

wg-coc

⚖️ CNCF Code of Conduct WG
14
star
77

tab

⚖️ End User Technical Advisory Board (TAB)
12
star
78

devstats-helm

📈DevStats deployment on Kubernetes using Equinix servers and Helm, CoreDNS, containerd, MetalLB, OpenEBS, nginx-ingress, nginx, cert-manager, nfs-server-provisioner.
Shell
11
star
79

devstats-docker-images

📈DevStats docker images: minimal (hourly cron job sync), full (provisioning/bootstraping), Grafana (UI endpoint)
Shell
10
star
80

prometheus-conformance

Prometheus Conformance Program
9
star
81

hnscraping

👩🏾‍💻📰🧽Hacker News hiring scraping
Ruby
9
star
82

devstats-reports

📈various reports generated from DevStats databases
Shell
9
star
83

filterable-landscape

Interactive version of the Cloud Native Landscape
JavaScript
9
star
84

clbo

CLBO - Entertainment and education in the Cloud Native ecosystem
Go
9
star
85

images

Images for deploying to clouds
8
star
86

sig-security-events

🔐📅SIG Security Events
HTML
8
star
87

site-boilerplate

👀🍲🍛Basic website and documentation starter for CNCF projects
HTML
8
star
88

svg-autocrop-serverless

🚗🌽🔳💁‍♀️🙅‍♀️💁‍♂️🙅‍♂️Serverless infrastructure for SVG Autocrop
HTML
8
star
89

hnanalysis

👩🏾‍💻📰Hacker News analysis
Go
8
star
90

china-video-block

🇨🇳🎬🧱Wordpress Gutenberg plugin to offer the same video via qq or YouTube depending on browser IP address
PHP
8
star
91

devstats-helm-graphql

📈DevStats deployement for the GraphQL foundation
Shell
7
star
92

business-value

CNCF Business Value Subcommittee
7
star
93

foundation-starter-kit

🏛🐣🎛 Recommended Hugo starter site for open source foundations
HTML
7
star
94

landscape2-validate-action

This GitHub action checks if the provided landscape data file is valid
7
star
95

transportation-user-group

🛩 🚅 🚘 A CNCF User Group focused on advancing cloud computing in the transportation industry
7
star
96

dco2

GitHub App that enforces the Developer Certificate of Origin (DCO) on Pull Requests
Rust
6
star
97

devstats-helm-example

📈DevStats example deployment using Helm
Shell
6
star
98

cncf-branding

🖼 Color codes and logos for all CNCF projects
HTML
6
star
99

cloud-native-days

📅Cloud Native Days website
HTML
6
star
100

clone-page-tree

👩‍👩‍👧‍👧 📄🌲Wordpress plugin to duplicate a page and all of its subpages
PHP
6
star