What is KnowHows?

KnowHows is a Slack application that tracks your GitHub repositories and allows users to search for other developers who have knowledge about certain parts of code, such as an API or software concept. By invoking the /knowhows command in an installed Slack channel, users can query KnowHows on code terms or general software concepts parsed from repository commits. KnowHows then produces a ranked list of tracked users in your channel that are likely to have the most experience with that query.

How does KnowHows work?

KnowHows uses a unique combination of a Solr search engine and the srcML source code parser to provide rankings for API terms. When a repository from GitHub is requested to be tracked, each commit is processed through srcML and correlated with fully patched files to identify relevant API terms. The terms and commit messages are then inserted into a Solr core that can be queried from the Slack application. Commit messages are processed using natural-language processing (NLP) for querying on software concepts. Solr provides the heavy lifting by ranking individuals most heavily associated with that term or concept.

What commands are available?

From a Slack channel with KnowHows installed, the app can be invoked with the slash command /knowhows. When you invoke the command for the first time, the app will prompt for access to your GitHub account. The available commands are:

What gets tracked in a repository?

Currently, KnowHows only tracks Java (.java), C (.c), C++ (.cpp), and C# (.cs) source code commits. When a repository is tracked by you, only your authored commits are retrieved.

What kind of data do you store?

We do not store the full source code from repositories. We do however store the following possibly sensitive information:

When a repository is untracked, all data is immediately queued for removal. Please see our privacy policy for more information.

What if I still have questions?

Please feel free to contact kdamevski@vcu.edu.