A Python based dashboard for the Rensselaer Center for Open Source Software
Observatory is licensed under the ISC License, which is equivalent to the two-clause BSD license.
Observatory is intended to track a group of open source projects across their source code repositories and blogs. It also includes links to the websites and wikis each project, but doesn't scan those for any updates.
Observatory can directly access repositories (for
so the "branches don't work" problem has been eliminated. With this also comes
a full redesign. Individual commits are visible in detail, and each project
has its own page, which shows authors, smaller contributors, blog posts,
commits, and screenshots. Additionally, there is a "feed" view that shows all
of the most recent actions.
Observatory is pretty easy to set up. Excluding the Apache and
setup that you would want for a production environment (resources on which are
best found elsewhere, most of the dependencies) are packed in the
Observatory requires Python 2.6+ (not Python 3+) and is built on the Django web framework. It also depends on the several packages and version control systems:
- Python Imaging Library (PIL)
For OS X/Linux users, everything but Git can be installed using pip.
pip install django mercurial BeautifulSoup pil sudo apt-get install git-core #Your native package manager here
For Windows users Git, Mercurial, and PIL are best installed through downloaded
installers because there are several build issues when using python packaging.
You will also want to install
pip to to manage your python
https://git.wiki.kernel.org/index.php/MSysGit:InstallMSysGit http://mercurial.selenic.com/wiki/Download#Windows http://www.pythonware.com/products/pil/ http://pypi.python.org/pypi/setuptools
You will likely need to edit the
/c/Program Files/Git/etc/profile file to put
both python and setuptools on your PATH for the GitBash shell.
You can then boot up a new bash terminal and grab the pip, BeautifulSoup and Django packages
easy_install pip pip install BeautifulSoup django
Since it deals primarily with external data sources, Observatory uses a set of
scripts to pull data down and store it in the local database. There scripts are
located in the
observatory/dashboard/fetch directory. There are two primary
fetch_repositories.py, the purpose of each
being fairly obvious. For development purposes, there is also a
script (located up a directory from the others) which runs both fetch scripts.
The primary reason for splitting up the fetching process into two scripts is that previously, the update process was somewhat unpleasant for users: either click the update link (which didn't always work), or wait up to an hour. While blogs update infrequently, commits (should) happen much more frequently. Therefore, it is ideal to run the repository fetching script more often than the blog fetching one. Both scripts tend to run fairly quickly (with the exception of the initial import).
As threads and Python don't get along so well, fetching instead uses multiple
processes (via the
subprocess module). The amount of processes can be
configured in the
settings.py file. The usual rules about processes per CPU
core don't necessarily apply here, because a lot of the time (especially for
blog fetching) is spent waiting for servers to respond.
If you would like to help out with Observatory, that is probably a good thing. You can either use the fork + pull request feature of Github, or just send in patches (use Issues or email).
To set up a development environment is very easy. Just follow the instructions in the "Setup" above, but skip the part about configuring a web server and database, since you can use the Django development server and SQLite.
There are two scripts that are useful: (Scripts need to be run from the Observatory directory.)
observatory/dashboard/demo.pyloads up a demo set of projects and users.
observatory/dashboard/fetch.pyruns the repository and blog fetch scripts.
(Optional) If you don't want the demo set, you need to use syncdb manually:
observatory/manage.py syncdbcreates the necessary database tables.
Once these have been run, the database will be populated with the most
recent commits and blog posts for the demo projects. Then, you can just run the
./manage.py runserver in the
observatory directory, and access
it (typically) at
If you're looking for something to work on, check out the Issues page or ask
me, via email or on