Spectrometer
Welcome to Spectrometer
- 1 Welcome to Spectrometer
- 2 Introduction
- 2.1 Spectrometer Architecture
- 2.1.1 Git commits history
- 2.1.2 Gerrit History
- 2.1.3 Mailing list activity
- 2.1.4 Corrections
- 2.1.5 Updates to original Spectrometer
- 2.1 Spectrometer Architecture
- 3 Feel free to edit this section as necessary
- 4 Documentation
- 4.1 Key Features
- 4.2 Project Information
- 5 Release Planning
- 6 Release Notes
Introduction
The main purpose of Spectrometer is to deliver transparent statistics of contributions to OpenDaylight Project. It collects activity data such
Commits and number of code lines changed from ODL Git repositories
Reviews from Gerrit
Activities related to each project from mailing lists and presents the statistics in a user-friendly manner
Spectrometer Architecture
The spectrometer architecture has three components: the backend processor called workers, the datastore with in memory cache available, and the frontend visualization components for the UI/UX.
The architecture is described in more details in the Spectrometer Architecture Guide.
Git commits history
In first version of Spectrometer, Git history is acquired using following command:
git log --pretty="commit_id:'%H%ndate:%at%nauthor:%an%nauthor_email:%ae%nsubject:%s%nmessage:%b%n'" --shortstat -M --no-merges
which produces output like:
commit_id:b5a416ac344160512f95751ae16e6612aefd4a57 date:1369119386 author:Akihiro MOTOKI author_email:motoki@da.jp.nec.com subject:Remove class-based import in the code repo message:Fixes bug 1167901 This commit also removes backslashes for line break. Change-Id: Id26fdfd2af4862652d7270aec132d40662efeb96 diff_stat: 21 files changed, 340 insertions(+), 408 deletions(-) This commit changes 21 files and 340 + 408 = 748 LOC (Line Of Code). I.e. LOC is a sum of insertions and deletions.
The same status can be acquired using Gerrit REST API. https://git.opendaylight.org/gerrit/Documentation/rest-api-changes.html#list-changes
Gerrit History
Gerrit provides a command line interface for retrieval of review source data.
gerrit query --all-approvals --patch-sets --format JSON module branch:master limit:100
This command outputs a list of the latest reviews on the module.
Spectrometer provides the following analytics for reviews:
Number of reviews
Statistics of positive and negative reviews
Ratio of positive to negative reviews.
Mailing list activity
Mailing list activity is polled via the web-based OpenDaylight archives.
Spectrometer searches the following places to choose the module to which an email is related, in order:
Module name in brackets in email subject
Module name without brackets in email subject
If none of the above locations yields a known module, the email is attributed to the 'unknown' module.
The list of tracked web pages with mail archives is managed in default_data.json under the section marked 'mail_lists'.
Corrections
LOC is an unreliable metric as it can be easily skewed by large scale renaming and refactoring. Spectrometer provides a framework for a community-driven correction process. It works as follows: Corrections are stored in the corrections.json JSON file.
These corrections look something like this:
"corrections": [ { "commit_id": "ee3fe4e836ca1c81e50a8324a9b5f982de4fa97f", "correction_comment": "Reset LOC to 0", "lines_added": 0, "lines_deleted": 0 } ]
Updates to original Spectrometer
Start with a new code base
Spectrometer will support only one version of Python, this will result in simplification of the code and ease of maintenance
A code base that is viewable/accessible easily to the people working on the project.
Spectrometer will be developed on ODL infrastructure so it can have a real time update of working version, consequently real time access to updated results and Testing using ODL CI infrastructure with real data
Project Facts
Project Creation Date: Nov 12th, 2015
Lifecycle State: Incubation
Primary Contact: Tom Nadeau <tnadeau@lucidvision.com>
Project Lead: Tom Nadeau <tnadeau@lucidvision.com>
Committers:
Tom Nadeau tnadeau@lucidvision.com.com tnadeau
Mohammad Hassan Zahraee moh_zahraee@yahoo.com zahraee
Thanh Ha thanh.ha@linuxfoundation.org tha
An Ho an.ho@huawei.com anipbu
Vasu Srinivasan vasya10@gmail.com vasya10
Mailing List: spectrometer-dev@lists.opendaylight.org
Archives: mailing list archives
Meetings: See Community Meetings
Repository: git clone https://git.opendaylight.org/gerrit/spectrometer
Jenkins: jenkins silo
Gerrit Patches: code patches/reviews
Bugs:
Documentation
Key Features
Collecting stats from repositories, mailing list interface, and Gerrit
Web UI shows stats by: Module, company, contributor, ...
Documentation for the code and installation guide
Testing Spectrometer using ODL CI infrastructure with real data
Project Information
POC: The original POC for Spectrometer is described here.
Project Proposal: The original project proposal is described here
Requirements
Release Planning
Release | Release Plan | Release Notes | Release Review | Installation Guide | User Guide | Developer Guide |
---|---|---|---|---|---|---|
Boron |
Meetings
Trello Project Tracking
|Trello Project Tracking: [1]
Pulling and Hacking The Code
To pull the code, use the usual git clone mechanism with the new spectrometer repository:
git clone ssh://${ODL_USERNAME}@git.opendaylight.org:29418/spectrometer spectrometer
Spectrometer Documentation and Getting Started
Documentation can be found here: [2]