The purpose of this task is to provide a full identities manager built on top of [[ https://github.com/MetricsGrimoire/sortinghat | SortingHat ]]. SortingHat is the technology that manages person identities (including merging of identities for the same real person) and affiliations (relationship with companies and other organizations) in the Grimoire Dashboard. [[ http://vizgrimoire.bitergia.org/ | Grimoire ]] is the technology underlying [[ http://korma.wmflabs.org/browser/ | Korma ]]. When completed, this project will allow WMF contributors to manage and update the information about themselves and other contributors in Korma.
Korma is the place where all of the community software development metrics are aggregated. This also provides profiles information (e.g.: [[ http://korma.wmflabs.org/browser/people.html?id=14a9961d058a961e98bc74d99a8034aba2fbe213 | information about Raimond Spekking ]]). This information is based on the identification of persons in the different software development repositories, where they may use different identities (e.g., different email addresses). Then, these identities are tracked, and activity in the different repositories is retrieved using [[ http://metricsgrimoire.github.io/ | MetricsGrimoire ]]. The SortingHat database keeps the correspondence between all those identities and a "unique" (merged) identity, hopefully corresponding to a real person. It also keeps track of affiliations for a person over different periods of time. This allows later tracking activity per organization (considering activity by their affiliates).
Currently, SortingHat inforamation can be managed in three ways:
* By directly accessing the database, which is cumbersome, requires permissions to the whole database, needs knowledge of SQL and the structure of the database, and is error-prone.
* By using a JSON file which can be exported and imported from the database using SortingHat. This requires manually editing a JSON file, and then access to the database.
* By using command-line Sorting-Hat tools, which requieres access to the database too.
None of these methods is friendly to casual users, and all of them require unrestricted access to the database. This project is about creating a more user friendly system for managing the SortingHat database. This consists of:
* A REST HTTP API, written in Python on top of SortingHat, to access SortingHat databases. This will include authentication, and access control.
* An HTML5 application, based in AngularJS, to access that REST API from a browser, in a user friendly way.
The REST API will be implemented in Flask or Django:
* It willI interface the actual actions in the database.
* It will follow the [[ https://github.com/MetricsGrimoire/sortinghat/blob/master/sortinghat/api.py | SortingHat API ]].
The HTML5 application will:
* Provide authentication and access control, based on those provided by the REST API.
* Allow to deal with unique identities, affiliations and countries, including add/remove/modify identities, add/remove/modify organizations, add/remove/modify domains for an organization, affiliate/remove/modify people to organizations, merge identities, merge enrollments.
* Help to list identities, affiliations or organizations.
* Provide a capability for searching identitiies, affiliations and organizations.
In addition, it will provide improvements on the current SortingHat heuristics:
* Improve the current set of unique identities matcher. This is needed to improve the information provided to the final users in the web front-end.
* Extend the current [[ https://github.com/MetricsGrimoire/sortinghat/blob/master/sortinghat/matching/simple.py | matching module of SortingHat ]].
In addition, the system is expected to have two different users: admin and anonymous. The latter would be the link added to all of the profiles found in Korma that will allow users to update their identities. This would a subset of the accessible information by user admin. Thus, the tool will have a simple user authentication process.
- Primary mentor: @jgbarah
- Co-mentors: @Dicortazar @Acs
- Estimated project time for a senior contributor - 3/4 weeks
- Skills - Python, AngularJS
- Microtasks -
===Git Repositories Related to this ticket===
angularJS templates - [[ http://github.com/sarvesh-onlyme/wiki-template | here]]
flask rest api - [[ http://github.com/sarvesh-onlyme/wiki-app | here ]]
===Report Related to this ticket===