Improve identification of committers' organizations
- Dominant language
- Python
- Stars
- 190
- Forks
- 112
- PR merge metrics
- No merged PRs in 30d
Description
The current OSCI implementation uses the email domain of the committer to identify their organization. Many developers do not use their company email address on GitHub, or do not make their email address public. However many of these people do include their organizational information in their GitHub user profiles.
We would like to improve the identification of committers organization using the data in their user profiles.
<<<>>>
We already made an experiment to do this, but with minimal success. This is described below.
The basic matching algorithm works like this:
1) The domain is selected from the commiter's email;
2) Each domain is compared with the list of company domains (google.com, microsoft.com, etc) regardless of case;
3) If no match is found, a regular expression analysis is performed for situations with domains of 3 and higher levels.
If after applying the basic algorithm the matching did not occur, an extended algorithm was proposed:
1) The profile information on the user's Github is uploaded;
2) The website field is taken from the profile, if it is empty, then go to step 3. Otherwise, the basic algorithm is applied on the specified domain. If no matches occurred after applying the basic algorithm, go to step 3.
3) The company field is taken and compared with the list of companies that we are processing. (Fuzzy band algorithms were used: Levenshtein distance, Sorenson-Dice coefficient, etc)
Result of experiment:
For only 38% of all the users examined, we managed to match a company from their profile. The remaining profiles did not have a clear match. For milder match rules, only 5% is added.
It is also worth noting that for users where we managed to match their company from their profile, the company is the same as that received from the email in all cases.
Finally, this method of identifying company carries a large overhead. When implementing this approach, it will be necessary to download information for all users who made push events in 2020, their number (as of June 2020) is 5M - loading their profiles will take about 42 days calculating with GitHub API usage limits. We would also have to additionally load new profiles every day, and their download, in turn, may not fit into the daily usage limits.
Contributor guide
Assessment
This issue has not been assessed yet.