As researchers and research software engineers, we want to synthesize knowledge. For programming help, for example, we might go to Stack Overflow and look for an upvoted answer. We might do a Google search and look for generic help. But what happens when we want to create our own knowledge base? What if we want to extend beyond a static documentation site? The following are events that are common in the research and research software communities:
I want to create a knowledge base
I really like Stack Overflow
Finds Stack Exchange
Fails to get through rounds of the community proposal process
Gives up or choose a non-optimal solution
For example, a research group might want simple community boards, tags, and up/down voting to identify best answers, but fail to get enough backing for Stack Exchange, and ultimately wind up with a Discourse site. Discourse is a fabulous community discussion site, but it doesn’t serve as a Stack Overflow substitute as well as we would want. It’s based around discussions and not “best answers to things,” and even with various voting plugins in place, when the content increases in size and you search for a specific question, you still need to parse through huge numbers of topics (posts). Even when you find one you are interested in, the discussion threads are hard to follow.
For a long time, it hasn’t been obvious that there exists an between Stack Exchange and Discourse. GitHub Discussions holds promise, but is still in beta and not available to everyone. The writer of this post (@vsoch) developed a Collaborative Knowledge Base prototype, but this idea was very different than Stack Overflow. It wasn’t until @vsoch discovered the repository for codidact/qpixel and started doing some development work. that a light went off - this is the intermediate tool.
This is a hugely interesting piece of software for discussion, because at it’s core, it’s isn’t explicitly made for research, or to directly solve a research question, but it can still serves a valuable role - sharing knowledge for a research community. If you already know about Codidact, we encourage you to contribute to the research software encyclopedia and annotate the respository:
otherwise, keep reading!
In it’s simplest form, you can think of Codidact like a Q&A (Question and Answer) platform. You go there to find a specific community, and ask a question. Or you might look for an answer to a question that has already been asked. Akin to Stack Overflow, under each question there are answers with threaded responses. You can up or downvote responses to determine a “best answer.” Appropriately for software-related ideas, the site supports general code formatting:
This means that I can find a question, and quickly go to the best answer, and then view discussion for it. I don’t get lost in not having nested threads that get out of order when voting happens. Importantly, Codidact can truly be viewed as an open source Stack Overflow. It doesn’t fit the same discussion forum niche as Discourse, and nothing can better reflect this than the fact that the Codidact originally used a Discourse installation for community discussion before replacing it with their Meta board.
If you are interested in categories, or generally creating groups beyond Q&A, Codidact has support for them! Categories might be associated with articles, glossaries, groups, or other organizations or resources that might be helpful to a research team. You can think of Codidact as a blank template to better organize information, whatever that organization might be.
Codidact can be cited via its Zenodo.org citation:
@article{codidact_2020,
title={codidact/qpixel: v0.6.1},
DOI={10.5281/zenodo.4006872},
publisher={Zenodo},
author={ArtOfCode, luap42 et al.},
year={2020},
month={Aug}}
Now that we’ve added support for a docker-compose development setup, it should be fairly easy to spin up a server and give it a try. But there are ample resources available to you without needing to do that:
You can also post questions on the GitHub issues board.
or read more about annotation here. You can clone the software repository to do bulk annotation, or annotation any repository in the software database, We want annotation to be fun, straight-forward, and easy, so we will be showcasing one repository to annotate per week. If you’d like to request annotation of a particular repository (or addition to the software database) please don’t hesitate to open an issue or even a pull request.
You might find these other resources useful:
For any resource, you are encouraged to give feedback and contribute!