Frequently Asked Questions

What Is The Most Significant Aspect of SourceOptics?

The SourceOptics scanner runs against all branches in a repository, and allows analyzing activity patterns between repositories. Everything is stored as time-series data, so you can, from any page, pick a region of time and see stats for that specific time range, down to individual days. There's also a ton of graphs and statistics, more than any other open source program of this kind as far as we know.

What Caused SourceOptics To Be Developed?

Several things - Michael had a large amount of history with open source communities and was very interested in software community health for over a decade. With his work with NCSU, he noticed teaching staff also had limited ability to gather contribution data from project repositories -- detecting team dynamics early would allow managers and educators to better understand things earlier -- before group problems arise.

Also a lot of this comes from experience with a very large microservices shop -- with hundreds of microservices, how do you know who is the key person doing what? As a manager, how do you know what things a developer is working on now, versus in the past? Do you know who is the most productive on your team, or are you inferring that based on who might be the most vocal? As the number of repositories in an organization grows, our understanding of what is going on in each of them declines - and that means we need better tools.

How Is This Different From GitHub Insights?

SourceOptics was written because GitHub stats were not good enough. They primarily consider the master branch, and do not provide good options for comparing statistics (or graphs) between repositories. If GitHub stats are good enough for you, that's great, but SourceOptics aims to do more.

Can This Data Be Misinterpreted?

Definitely, but metrics provide more value than risk. There's a reason developers fear source code metrics - bad managers. However, good managers are better informed when they have data. The SourceOptics philosophy is to show you statistics and graphs and leave it up to the viewer to use that data responsibly.

Just because someone does not have a lot of commits does not mean they are not working, rather, they could be making larger commits, working on other projects, or be involved in some other activity.

Similarly, lines of code is not a performance metric - but sometimes lines of code removed could be! If a developer vendors a package, they will get "credit" for all the lines of the code in that package - even if they did very little work.

If someone has the lion's share of work in a repo, that may be a good sign, but it may also mean they are a ball hog. Human intelligence is always needed to interpret the data. That's why SourceOptics takes a very visual approach rather than suggesting conclusions. The "logs" feature in SourceOptics (Summer 2020) allows for showing statistics about other logged work that does not appear in source control history.

Just knowing what repositories are active - and if there is activity of any kind - within a given time span is often more valuable in knowing how much activity there was - but combined with other data, like the commit log (which SourceOptics also makes available), it is usually easy to sort out those types of questions.

Is This Program Free?

YES. SourceOptics is open source software being developed for educational users and commercial users alike at zero cost. If you need custom features developed or higher level specialized support, however, feel free to reach out to Michael DeHaan over email.

What version control systems does this support?

Right now, the system only supports git, but custom work to add other types is possible. Git has the lion's share of the version control market and you should be using it anyway.

What operating systems are supported?

SourceOptics is a Python3/Django app that runs best on Linux, BSD, or OS X. Michael develops on a Mac. Production configurations have examples for Linux. SourceOptics requires a PostgreSQL database instance, but may be co-located with it on the same machine or VM.

How often are releases?

SourceOptics does not have releases per se (yet), because it is so easy to consume the master branch in git. It may have formal releases in the future. The master branch is always to be considered stable.

How can I contribute?

See Contributing.

Is there an API for Programmatic Access

There is not currently one, however the database schema is well organized, and the model objects are very powerful. Those doing more advanced statistics on repositories could access all of these objects via imports and django management commands. A fully featured REST API might be added at a later date, but is not an immediate priority as we would like to focus on building visualization tools for humans and incorporating all features into the main application. Adding custom management commands to export data is probably the easiest way to provide access for external tools.

Other Questions?

See the rest of the documentation. if you still have questions, Email Michael and we'll try to answer them, and also work them into the documentation. Thanks!