DOI: 10.5281/zenodo.1345171
title: Data And Material For: "Content Classification Of Development Emails"

description: This data and material support the paper "Content classification of development emails" published in the proceedings of the 34th International Conference on Software Engineering (ICSE 2012).

Every software system has a history. <strong>We find traces of a system's history in software repositories</strong>, which are used by developers when building and maintaining their systems. Each repository tells us a part of the history, from its perspective: Issue repositories murmur dark events involving defective and flawed entities; versioning system repositories narrate about restless artifacts and classes that nobody would ever touch; mailing list archives report of unexpected stories on developers’ interactions and opinions.

But... <strong>can we seriously trust these repositories?</strong> Can we just listen to what they tell us and behave accordingly? Many wise researchers warmly warned us about the risks of showing such a naive faith in data repositories: Versioning system repositories might seduce us with enchanting stories of always changing entities, but in reality many of these entities may just modify their make up and maintain their old behaviour; or issue repositories might tell us a partial truth about certain very special entities, or developers. We do agree with these researchers: Especially <strong>natural language documents contain information in different languages, surrounded by much noise</strong>. We must pay a special attention when using them.

We created <strong>MUCCA</strong>, a classification method to use when dealing with natural language documents. It recognizes source code fragments, patches, stack traces, noise, and natural language with significantly high accuracy. In this way, it allows one to subsequently apply ad hoc analysis techniques to exploit the peculiarities of each category, and extract reliable information.

This Zenodo upload supports the paper that describe our work on this topic.

 

<strong>1. Source code & Virtual Image</strong>

MUCCA is written in Cincom VisualWorks Smalltalk and is composed of several components.<br>
You can download the source code of the following MUCCA components from this upload (<code>mucca-source_code</code> folder):


	Miler2, the core of MUCCA, including metamodels, importers, classification engine, etc.;
	MailPeek, our web application for the manual classification of email content;
	PetitIsland, our grammar to generate island parsers;
	PetitJava, the grammar of Java, which we implemented for PetitParser;
	PetitSTrace, our island parser for java stack traces.


Note that, in order to make Miler2 run, you will also need the following external Smalltalk components: Moose, Glorp, Seaside, TwoFlower, MetaDB, PetitParser.

In addition, we make use of the Weka workbench, for the machine learning tasks. You can download the two trained classifiers that compose MUCCA (<code>mucca-classifiers</code> folder): Naive Bayes based classifier (<code>classifier1-nb.model</code>), Decision Tree based classifier (<code>classifier2-dt.model</code>).

Alternatively, we created a VirtualBox image with a pre-configured VisualWorks environment, which includes all the MUCCA components, and pre-requisites (both Smalltalk and Java): <code>MUCCA.ova</code> (Both user and password are <code>muccauser</code>).

 

<strong>2. Benchmark</strong>

To train machine-learning classifiers and evaluate the effectiveness of the different approaches, we <strong>manually</strong> create a benchmark, in which emails are classified at character granularity.

Given the time and effort needed to create such a benchmark, we humbly think it is a valuable contribution to the community. With the help of this benchmark, other researchers can reproduce our experiments and devise new classification methods, which can be immediately compared to ours.

You can download the dataset from the GitHub repository (a dump of the GitHub repository is uploaded here (<code>benchmark/githubDump.zip</code>), or download the full database dump in PostgreSQL format (<code>benchmark/benchmarkDump.tar.bz2</code>).