Github users community detection visualisation. gg will extract user related resources from Github and construct a graph presenting relationships among the users.
For example if user A reviewed a pull request of user B then gg will connect
users A and B with relation REVIEWED.
Neo4j graph database was used to present Github users and detect hidden communities using neo4j native community detection algorithms.
Find out more implementation details chekout docs/.
- docker 19.03.X
Start neo4j
NOTE:
/pluginsand/confshould be mounted in order to detect clusters
docker run \
--name testneo4j \
-p7474:7474 -p7687:7687 \
-d \
--env NEO4J_AUTH=neo4j/test \
--memory 4gi \
-v ./conf:/conf \
-v ./plugins:/plugins \
neo4j:latestor
./run.sh
GITHUB_TOKENcan be obtained at: https://github.com/settings/tokens
When neo is up and running run gg
docker run \
--rm --name gg \
--network host \
-e NEO_URI=bolt://localhost:7687 \
-e NEO_USER=neo4j \
-e NEO_PASS=test \
-e GITHUB_TOKEN=$GITHUB_TOKEN \
piotrpersona/ggor ask for help
$ docker run piotrpersona/gg --help
Fetch repositories from a github and build a graph
Usage:
gg [flags]
Flags:
-h, --help help for gg
--issue-comment int Weight of issue comment (default 10)
--loglevel string Log level (default "info")
-p, --password string Neo4j connection password
--pr-comment int Weight of pull request comment (default 16)
-q, --query string Github repositories search query (default "stars:>=1000")
--review int Weight of review (default 10)
-t, --token string GitHub API Token String
--uri string Neo4j compatible URI
-u, --username string Neo4j connection usernameEnter http://localhost:7474 and pass credentials defined with NEO_AUTH.
Call Louvain algorithm:
CALL algo.beta.louvain.stream('User', null,
{ graph: 'huge', direction: 'BOTH', weightProperty: 'Weight', includeIntermediateCommunities: true })
YIELD nodeId, community, communities
RETURN algo.asNode(nodeId).Name as name, community, communities
ORDER BY name ASC| name | community | communities |
|---|---|---|
| BethGriggs | 16 | [31,16] |
| BridgeAR | 16 | [16,16] |
| ChALkeR | 23 | [10,23] |
| Trott | 23 | [23,23] |
| ZYSzys | 16 | [16,16] |
| addaleax | 22 | [22,22] |
| antsmartian | 22 | [22,22] |
| bcoe | 11 | [11,11] |
| bnoordhuis | 22 | [22,22] |
| cjihrig | 23 | [7,23] |
| devnexen | 16 | [31,16] |
| devnexen | 16 | [31,16] |
| devsnek | 22 | [15,22] |
| devsnek | 22 | [15,22] |
| dnlup | 16 | [16,16] |
| eugeneo | 23 | [7,23] |
| gabrielschulhof | 16 | [31,16] |
| gabrielschulhof | 16 | [31,16] |
| gireeshpunathil | 23 | [27,23] |
| guybedford | 22 | [15,22] |
| jasnell | 23 | [10,23] |
| jkrems | 22 | [15,22] |
| johnmuhl | 3 | [28,3] |
| johnmuhl | 3 | [28,3] |
| joyeecheung | 3 | [28,3] |
| juanarbol | 3 | [28,3] |
| legendecas | 23 | [7,23] |
| ljharb | 22 | [15,22] |
| lpinca | 16 | [16,16] |
| lundibundi | 16 | [31,16] |
| marswong | 23 | [23,23] |
| mcollina | 23 | [7,23] |
| mscdex | 3 | [28,3] |
| mscdex | 3 | [28,3] |
| nodejs-github-bot | 16 | [31,16] |
| nschonni | 23 | [23,23] |
| richardlau | 16 | [31,16] |
| ronag | 3 | [3,3] |
| santoshyadav198613 | 23 | [27,23] |
| targos | 22 | [22,22] |
| trivikr | 23 | [27,23] |
| wa-Nadoo | 3 | [3,3] |
| yinzara | 23 | [7,23] |