ContribLog (adaptdk/contrib) is a tool for capturing contribution records on the commandline.
On first run the user does some interactive setup of their organisation and first project. After that, users can select the project and interactively add contributions. Trying it out, it's a lightweight but manual method for capturing a personal record of contributions.
www-data@ea69a85560cf:~$ ./contriblog add The "contributions.yml" file does not exist yet. Do you want to generate initialize it? (y/n) y [1/2] What is the name of the organization? Catalyst IT What is main URL for the organization? https://catalyst.net.nz [1/7] Which project received the contribution?  New project > What is the machine name of the project? (E.g. drupal/migrate_plus): dmore/behat-chrome-extension What is the name of the project? (E.g. Migrate Plus): Behat Chrome Extension What is the main URL of the project? (E.g. https://www.drupal.org/project/migrate_plus): https://gitlab.com/behat-chrome/behat-chrome-extension Please provide tags for the project, e.g. drupal (one per line) Use EOL to finish, e.g. Ctrl+D on an empty line to finish input behat testing [2/7] Please give the contribution a title: Some thing [3/7] What was the main type of the contribution? [default: code] [code ] Writing Code [code_review ] Reviewing Code [triage ] Bug Triaging [qa ] Quality Assurance and Testing [security ] Security-Related Activities [localization ] Localization/L10N and Translation [event ] Event Organization [documentation ] Documentation Authorship [community ] Community Building and Management [teaching ] Teaching and Tutorial Building [troubleshooting ] Troubleshooting and Support [creative ] Creative Work and Design [ux ] User Interface, User Experience, and Accessibility [social ] Social Media Management [user-support ] User Support and Answering Questions [write ] Writing Articles [public_relations] Public Relations - Interviews with Technical Press [speak ] Speaking at Events [marketing ] Marketing and Campaign Advocacy [website ] Website Development [legal ] Legal Council [financial ] Financial Management > teaching [4/7] Who is making the the contribution?  New person > What is the name of the person? (E.g. José Saramago): Chris Burgess What is the identifier for the person? (E.g. Jose): chris [5/7] When was the contribution first published? (E.g. 2020-01-22) [default: 2022-09-25]: [6/7] How would you describe the contribution? (multiline) Use EOL to finish, e.g. Ctrl+D on an empty line to finish input Teaching a workshop [7/7] Please provide public links related to the contribution? (one per line) Use EOL to finish, e.g. Ctrl+D on an empty line to finish input https://gitlab.com/behat-chrome/behat-chrome-extension/-/issues/123 The file "contributions.yml" was updated correctly
On second run, we won't get so many questions:
www-data@ea69a85560cf:~$ ./contriblog add [1/7] Which project received the contribution?  New project  dmore/behat-chrome-extension >
And contributions are logged to a local
www-data@ea69a85560cf:~$ cat contributions.yml organization: name: Catalyst IT url: 'https://catalyst.net.nz' people: xurizaemon: 'Chris Burgess' projects: dmore/behat-chrome-extension: name: 'Behat Chrome Extension' url: 'https://gitlab.com/behat-chrome/behat-chrome-extension' tags: - drupal contributions: - project: catalyst-it/something title: 'Some thing' type: teaching who: chris start: 2022-09-25T00:00:00+00:00 description: 'Deliver presentation' links: - 'https://github.com/catalyst-it/something/issues/123'
What I like about the tool is that it enables tracking of non-code contributions on an equal standing with code ones. This tool could suit CLI users if we asked staff to manually track contributions. It uses PHP, but could be packaged as a
phar for distribution.
Engari ko te raruraru
The chief challenge of this tool for me is ... it's a lot like timesheeting, right? Timesheeting is effort, and introducing a new task steals energy from other tasks. I sense anyone who's ever had to chase timesheets knows it's not reliable either.
That's why I think that if we can do so responsibly, we should prefer unobtrusive tools to gather data in the first instance, and bolster automated approaches with ways of capturing this information together - perhaps a discussion roundup at the end of the week, in which we might capture a handful of contributions. A team's
contriblog output might be captured there and consumed by a tool like GrimoireLab.
There are some other challenges/opportunities too - eg I see that the contribution is associated with an individual in the example above? Perhaps the tool could push contributions entered to a centralised (organisation or community) service as well. The UX is that of a decent prototype and could be improved.