{"id":19681722,"url":"https://github.com/collab-uniba/personality","last_synced_at":"2025-09-03T06:37:55.901Z","repository":{"id":39711100,"uuid":"114795784","full_name":"collab-uniba/personality","owner":"collab-uniba","description":"Apache developers Big-Five personality profiler","archived":false,"fork":false,"pushed_at":"2025-02-19T03:21:50.000Z","size":3703,"stargazers_count":9,"open_issues_count":35,"forks_count":3,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-29T04:43:19.906Z","etag":null,"topics":["apache","big-five-model","ffm","five-factor-model","ibm-watson-api","liwc","mining-software-repositories","personality-insights","personality-profile","psychometrics"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/collab-uniba.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-12-19T18:00:05.000Z","updated_at":"2024-06-21T15:18:54.000Z","dependencies_parsed_at":"2023-01-31T18:30:52.415Z","dependency_job_id":"95799349-9571-4f44-aa78-7308c3b5f7d5","html_url":"https://github.com/collab-uniba/personality","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/collab-uniba/personality","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/collab-uniba%2Fpersonality","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/collab-uniba%2Fpersonality/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/collab-uniba%2Fpersonality/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/collab-uniba%2Fpersonality/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/collab-uniba","download_url":"https://codeload.github.com/collab-uniba/personality/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/collab-uniba%2Fpersonality/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273403950,"owners_count":25099299,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-03T02:00:09.631Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apache","big-five-model","ffm","five-factor-model","ibm-watson-api","liwc","mining-software-repositories","personality-insights","personality-profile","psychometrics"],"created_at":"2024-11-11T18:08:37.021Z","updated_at":"2025-09-03T06:37:55.851Z","avatar_url":"https://github.com/collab-uniba.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Apache developers' Big-Five personality profiler [![DOI](https://zenodo.org/badge/114795784.svg)](https://zenodo.org/badge/latestdoi/114795784)\n\nContent and scripts from this repository can be freely reused for academic purposes, provided that you cite the following paper in your work:\n```\nF. Calefato, F. Lanubile, and B. Vasilescu (2019) “A large-scale, in-depth analysis of developers’\npersonalities in the Apache ecosystem.” Information and Software Technology, Vol. 114, Oct., \npp. 1-20, DOI: 10.1016/j.infsof.2019.05.012.\n```\n\n## 0. Dataset\nThe final results of the scripts (i.e., developers' monthly scores per project) are stored [here](https://github.com/collab-uniba/personality/tree/master/src/python/export_results) (see the files in CSV format). \nInstead, the entire MySQL database, containing the data scraped from the Apache website, the email archives, and the code metadata obtained from GitHub, is stored [here](https://mega.nz/#F!cJ0BiSrI!DYWcN7CbcHdSfqpuzSSmuw).\n\nThe dump can be imported into a pre-existing db named `apache` as follows:\n\n```bash\n$ mysql -u \u003cusername\u003e -p\u003cPlainPassword\u003e apache \u003c apachebig5.sql\n```\n\nRepeat the instruction above for all the `.sql` files provided.\n\n## 1. Cloning\n```bash\n$ git clone https://github.com/collab-uniba/personality.git --recursive\n```\n## 2. Configuration\nEdit the following configuration files:\n* `src/python/db/cfg/setup.yml` - MySQL database configuration\n```yaml\nmysql:\n    host: 127.0.0.1\n    user: root\n    passwd: *******\n    db: apache\n```\n* `src/python/big5_personality/personality_insights/cfg/watson.yml` - IBM Watson Personality Insights (you will need to register and \nget your personal username and password)\n```yaml\npersonality:\n    username: secret-user\n    password: secret-password\n    version: 2017-10-13\n```\n* `src/python/big5_personality/liwc/cfg/receptiviti.yaml` - Receptiviti (you will need to register and \nget your personal api key and api secret key)\n```yaml\nreceptiviti:\n    baseurl: https://api-v3.receptiviti.com\n    api_key: *****\n    api_secret_key: *****\n```\n\n## 3. Crawl Apache projects\n* *Setup*:\nFirst, install the library [libgit2](https://libgit2.org) on your system. Then, use a Python 3 environment and install the required packages from `src/python/requirements.txt`\n* *Execution*:\nFrom directory `src/python/apache_crawler` run:\n```bash\n$ scrapy apache_crawler -t (json|csv) -o apache-projects.(json|csv) [-L DEBUG --logfile apache.log]\n```\n\n## 4. Mine mailing lists (for Git projects only)\n* *Setup*:\nUse Python 2 environment and install packages from `src/python/ml_downloader/requirements.txt`.\nThen, recreate database schema as follows:\n```bash\n$ mysql -u\u003cuser\u003e -p\u003cpassword\u003e apache \u003c submodules/mlminer/db/data_model_mysql.sql\n```\n* *Execution*:\nFrom directory `src/python/ml_downloader` run:\n```bash\n$ sh run.sh\n```\n\n## 5. Clone Git projects\n* *Setup*:\nUse Python 3 environment as described in Step 3.\n* *Execution*:\nFrom directory `src/python/git_cloner` run:\n```bash\n$ sh run.sh\n```\nProjects will be cloned into the subfolder `apache_repos`.\n\n\u003c!---\n## 5. Mine pull requests (for git projects only)\n\n*Setup*\n\nUse Python 3 environment as described in Step 3. Also, add a new file `gh/github-api-tokens.txt`\nand enter a GitHub API access token per line -- the more the better.\n\n*Execution*\n\nFrom directory `src/python/pr_downloader` run:\n```bash\n$ sh run.sh\n```\n--\u003e\n## 6. Get developers' location from GitHub\n* *Setup*:\n    1. In MySql command line enter following instruction:\n        ```bash\n        set character set utf8mb4; \n        ```\n    2. Use Python 3 environment as described in Step 3. \n    3. Add a new file `github-api-tokens.txt`\nand enter a GitHub API access token\n* *Execution*:\nFrom directory `src/python/github_users_location` run:\n```bash\n$ sh run.sh [reset]\n```\nwhere:\n- reset: to empty db table containing github users location\n\n## 7. Unmask aliases (identify unique developer IDs)\n* *Setup*:\n    1. Use Python 3 environment as described in Step 2.\n    2. At first run, execute from dicrectory `src/python/unmasking`:\n        ```bash\n        $ python nltk_download.py\n        ```\n* *Execution*:\nFrom directory `src/python/unmasking` run:\n```bash\n$ sh run.sh\n```\n\n## 8. Build developer commit history (for Git projects only)\n* *Setup*:\nUse Python 3 environment as described in Step 3.\n* *Execution*:\nFrom directory `src/python/commit_analyzer` run:\n```bash\n$ sh run.sh \n```\n\n## 9. Compute developers' Big Five traits scores per month from emails (for Git projects only)\n* *Setup*:\n    1. Install NLoN package as described [here](https://github.com/M3SOulu/NLoN)\n    2. Use Python 3 environment as described in Step 3.\n* *Execution*:\nFrom directory `src/python/big5_personality` run:\n```bash\n$ sh run.sh \u003ctool\u003e [reset]\n```\nwhere:\n- tool: tool name, either `liwc15` or `p_insights`\n- reset: to empty the db tables containing personality data before new computing\n\n## 10. Export results\n* *Setup*:\nUse Python 3 environment as described in Step 3.\n* *Execution*:\nFrom directory `src/python/export_results` run:\n```bash\n$ sh run.sh \u003ctool\u003e\n```\nwhere:\n- tool: tool name, with values in {`liwc07`, `liwc15`, `p_insights`}\n\nResults are stored in files `personality_liwc.csv` and `personality_p_insights.csv`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcollab-uniba%2Fpersonality","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcollab-uniba%2Fpersonality","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcollab-uniba%2Fpersonality/lists"}