-
Notifications
You must be signed in to change notification settings - Fork 99
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- remove useless files - fix philips industry
- Loading branch information
1 parent
d31cb9f
commit 6524c15
Showing
15 changed files
with
55 additions
and
365 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,96 +1,50 @@ | ||
![OSCI Logo](images/OSCI_Logo.png) | ||
# OSCI, the Open Source Contributor Index | ||
|
||
## What is OSCI? | ||
|
||
* OSCI ranks corporate contributions to open source based on the organization’s number of Active Contributors to GitHub | ||
* OSCI also tracks the Total Community of open source contributors for these companies | ||
* The OSCI rankings are published monthly to dynamically track corporate contributions to GitHub. The latest result can be found at EPAM SolutionsHub website's [OSCI page](https://opensourceindex.io/) | ||
|
||
## [News update](news.md) | ||
### [July 12th, 2021](news.md#july-12th-2021) | ||
|
||
The OSCI ranking has now been updated with the data for [**June 2021**](https://opensourceindex.io/) | ||
|
||
The table shows the OSCI ranking for GitHub activity in June 2021. The leading organisations remain consistent once again this month and the overall level of activity has stabilised approaching second half of the year. In addition Amazon and IBM are progressing well above their closest neighbours in growth figures this month. | ||
|
||
[Previous updates](news.md) | ||
|
||
# Open Source Contributor Index (OSCI) | ||
OSCI, an open source project, aiming to track and measure open source activity on GitHub by commercial organizations. It allows organizations, communities, analysts and individuals involved in Open Source to get insights about contribution trends among commercial organizations by providing access to up-to-date data through an intuitive interface. | ||
|
||
### Table of contents | ||
- [How does OSCI work?](#how-does-osci-work) | ||
- [How are commit authors linked to commercial organizations?](#how-are-commit-authors-linked-to-commercial-organizations) | ||
- [How can I submit my company for ranking?](#how-can-i-submit-my-company-for-ranking) | ||
- [How can I contribute to OSCI?](#how-can-i-contribute-to-osci) | ||
- [Quick Start](#quickstart) | ||
* [Installation](#installation) | ||
* [Configuration](#configuration) | ||
* [Sample run](#sample-run) | ||
- [OSCI Versioning](#osci-versioning) | ||
- [License](#license) | ||
- [Contact Us](#contacting-us) | ||
|
||
## How does OSCI work? | ||
|
||
* OSCI analyses push event data from [GH Archive](https://www.gharchive.org/) | ||
* The Author Email address field in the commit event data is used to identify the organization to which the commit author belongs | ||
* OSCI measures the Active Community (10+ commits) and the Total Community (1+ commit) at each organization | ||
* Analysis is done for the current year-to-date | ||
* OSCI’s algorithm is transparently published as an open source project on GitHub | ||
|
||
To create this index, the system processes GitHub push events data from [GH Archive](https://www.gharchive.org/): | ||
|
||
![GitHub OSCI Schematic Diagram](images/OSCI_Schematic_Architecture.png) | ||
|
||
## OSCI Versioning :newspaper: | ||
We decided to use special versioning `(<year>.<month>.<number of patch >)` e.g. `2021.05.0`. This will provide us with a | ||
clearer understanding of the relevance of the product. | ||
Also, date of | ||
[adding a new company](#how-can-i-add-a-company-which-is-missing-from-the-osci-ranking) is very important and versioning | ||
releases depending on the date looks more logical. | ||
This is supposed to be a monthly update of the release. | ||
|
||
|
||
## How did we decide on the ranking logic? | ||
|
||
We realize that there are many approaches which could be used to develop this ranking. We experimented extensively with these before arriving at the logic now used. | ||
|
||
We concluded the Author's Email Domain in the Push Event data is the most reliable way to identify the organization to which a commit author belongs. It is a single unambiguous identifier. | ||
It is true that many people on GitHub do not use the email address of their employer or keep it private, but it is still a more reliable single measure compared with alternatives. The org of the repo is not a good measure of the employer of an individual because the employees of most companies maintain projects in multiple GitHub orgs. | ||
|
||
We concluded that 10+ commits in a year - while arbitrary - is a reasonable measure of whether a person is an active contributor to GitHub. | ||
It is interesting to compare this with the size of the broader community at an organization - this is why we also record the number of people with just 1 or more commits in the time period. | ||
|
||
We decided to base the ranking on the number of people making commits, rather than the number of commits. The GitHub push event data includes large numbers of pushes made by automated processes using an email domain from an organization. Counting the number of pushes is not a good measure of the community at an organization, when the results are considerably skewed by these automated processes. | ||
OSCI tracks two measures at each organization: | ||
- **Active contributors**, the number of people who authored 10 or more commits over a period of time | ||
- **Total community**, the number of people who made at least one commit over a period of time | ||
|
||
Our technical design assessed multiple source of data and we concluded that [GHArchive](https://www.gharchive.org/) is best suited for our needs, based on ease of access to the data, the amount of data it records, and the size of the data. | ||
[GHTorrent](http://ghtorrent.org/) is also very interesting for future use, since it contains a richer set of data, however the data sizes are considerably larger which drove our decision to go with GHArchive. | ||
## How are commit authors linked to commercial organizations? | ||
|
||
## What does OSCI not do? | ||
The system uses email domain of the commit author to identify the organization. Your organization is missing in the ranking? Feel free to add your organization to the list. | ||
|
||
OSCI does not include educational and research institutions, contributions from free email providers, etc. The focus is on commercial organizations. | ||
*Note: OSCI does not rank open source activity contributed by universities, research institutions and individual entrepreneurs.* | ||
|
||
## Prior work in this area | ||
## How can I submit my company for ranking? | ||
|
||
Our inspiration for OSCI is the work done earlier in the Open Source community, so we wish to give credit to these: | ||
* GitHub published an analysis for 2016 which included the organizations with the most open source contributors https://octoverse.github.com/2016/. GitHub have also published similar studies in 2017 and 2018. | ||
* Felipe Hoffa published a detailed analysis of 2017 data at https://medium.freecodecamp.org/the-top-contributors-to-github-2017-be98ab854e87. Felipe's logic used email domain to identify organizations, counted commits only to projects with more than 20 stars during the period, and counted users with more than 3 pushes during the period. Further details are available in the article. | ||
* Fil Maj also analysed 2017 data and counted users with 10 or more commits during the period https://www.infoworld.com/article/3253948/who-really-contributes-to-open-source.html | ||
|
||
|
||
## Where can I see the latest rankings | ||
This project is created by EPAM Systems and the latest results are visible on the [OSCI page](https://opensourceindex.io/). The results will be updated and published each month. | ||
|
||
## How I can contribute to OSCI | ||
If you would like to contribute to OSCI, please take a look at our guidelines [here.](CONTRIBUTING.md) | ||
|
||
## What if your think your organization is missing or you believe there is an error in our logic | ||
If your organization is missing from our ranking then simply follow the instructions below to modify the companies filter and add your own organisation. We're also more than happy to listen to any feedback you have that may help us to improve. Contact us at [[email protected]](mailto:[email protected]) to share your feedback and raise any questions. | ||
|
||
## How can I add a company which is missing from the OSCI ranking | ||
The goal of the OSCI is to rank the GitHub contributions by companies (commercial organizations). | ||
|
||
In order to add a company to the OSCI ranking, do the following: | ||
|
||
1) Check whether the organization you propose to add matches our definition of a company: | ||
- is not an educational, governmental, non-profit or research institution; | ||
- is not a free-mail, like gmail.com, yahoo.com, hotmail.com, etc; | ||
- is a registered, commercial company; | ||
- a simple "rule of thumb" - does the organization's website sell a product or service? If not, it is probably not a company by our definition. | ||
1) Check whether the organization you propose to add matches OSCI definition: | ||
- not an educational, governmental, non-profit or research institution; | ||
- registered, commercial organization; | ||
- sells goods or services for the purpose of making a profit. | ||
|
||
1) Create a new pull request. | ||
|
||
1) Go to company domain match list ([company_domain_match_list.yaml](osci/preprocess/match_company/company_domain_match_list.yaml)) | ||
|
||
1) Confirm that the company you wish to add is not listed. | ||
1) Double check that the organization you want to add is not listed. | ||
|
||
1) Add the **main domain** of the company and the company name to the table. For example: | ||
1) Add the **email domain** of the company and the company name to the table. For example: | ||
```yaml | ||
- company: Facebook | ||
domains: | ||
|
@@ -134,16 +88,18 @@ In order to add a company to the OSCI ranking, do the following: | |
industry: Media & Telecoms | ||
``` | ||
|
||
We will review your pull request and if it matches our requirements, we will merge it. | ||
It's important to add at **the start | ||
of the month** a new company, because the rating depends on previous data, i.e. data for the beginning of the month. | ||
Furthermore, this will lead to OSCI release consistency. | ||
Our team will review your pull request and merge it if everything is correct. | ||
|
||
# QuickStart | ||
## Technical Note | ||
We built OSCI this an Azure cloud environment using Azure DataFactory, Azure Function and Azure HDInsight. | ||
The code published here on GitHub does not require the Azure cloud. You can reproduce everything in the corresponding instruction with the CLI (command line interface). | ||
## Installation | ||
*Note: since OSCI processes the data for the previous month, you'll see your organization's rank in the beginning of the next month.* | ||
|
||
## How can I contribute to OSCI? | ||
See [CONTRIBUTING.md](CONTRIBUTING.md) for details on contribution process. | ||
|
||
## QuickStart | ||
OSCI is deployed into Azure Cloud environment using Azure DataFactory, Azure Function and Azure DataBricks. However, the code available on GitHub does not require using of Azure Cloud. | ||
Run the application from the command line using the instruction below. | ||
|
||
### Installation | ||
1) Clone repository | ||
```shell script | ||
git clone https://github.com/epam/OSCI.git | ||
|
@@ -157,11 +113,11 @@ The code published here on GitHub does not require the Azure cloud. You can repr | |
pip install -r requirements.txt | ||
``` | ||
|
||
## Configuration | ||
### Configuration | ||
Create a file `local.yml` (by default this file added to .gitignore) in the directory [`osci/config/files`](osci/config/files). | ||
A sample file [`default.yml`](osci/config/files/default.yml) is included, please don't change values in this file | ||
|
||
## Sample run | ||
### Sample run | ||
1) Run script to download data from archive (for example for 01 January 2020) | ||
```shell script | ||
python3 osci-cli.py get-github-daily-push-events -d 2020-01-01 | ||
|
@@ -174,6 +130,12 @@ A sample file [`default.yml`](osci/config/files/default.yml) is included, please | |
```shell script | ||
python3 osci-cli.py daily-osci-rankings -td 2020-01-02 | ||
``` | ||
|
||
# License | ||
|
||
## OSCI Versioning | ||
For a comprehensive OSCI versioning we adopted the following approach `<year>.<month>.<number of patch >`) e.g. 2021.05.0. We expect regularly monthly updates including releases associated with submission of a new company for ranking. | ||
|
||
## License | ||
OSCI is licensed under the [GNU General Public License v3.0](LICENSE). | ||
|
||
## Contact Us | ||
For support or help using OSCI, please contact us at [[email protected]](mailto:[email protected]). |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.