You can download Hackystat as a preconfigured binary distribution, or by downloading the sources directly from our Subversion repository.
The most convenient and simple way to download Hackystat is by obtaining a binary distribution zip file containing a pre-built configuration of the system. The Hackystat Developer Services Server provides links to both a "stable release" binary distribution and a "nightly build" binary distribution for a variety of configurations. A typical binary distribution zip file might be named "hackystat-standard-7.0.1201.zip", and be approximately 50 MB in size.
An alternative is to download the public Hackystat sources from our Subversion configuration management repository. In this case, you will download approximately 70 modules from Subversion for a total of around 250 MB in size.
The advantages of downloading and installing from a binary distribution is that it is much smaller in size, and is somewhat simpler to install. The advantages of downloading and installing from public Hackystat sources is that it allows you to create custom configurations of the system. If you are a developer and wish to design and implement new Hackystat modules to provide new sensors, sensor data types, or applications, then you will need to download and install Hackystat from the public sources.
If you are installing a Hackystat server for the first time, we strongly recommend that you download and install a stable binary release of the "standard" configuration. This is because there are several "one time" steps when installing Hackystat for the first time, and it is easier to debug any problems that might occur with a binary installation. Once you have successfully installed a binary release, it will be easier for you to install and configure a source-based distribution.
![]() | Do not download the "Hackystat-All" configuration of Hackystat |
|---|---|
Some administrators might be tempted to download the "Hackystat-All" configuration which includes all public modules. This is a mistake, since this configuration generally contains experimental modules that are not ready for production use, and may require installation of additional packages for successful deployment. In most cases, administrators should download the "Hackystat-Standard" configuration. | |
The next subsections describe the download and installation process. The titles for each of these sections indicate whether or not the instructions apply to the binary, source, or both kinds of installations.
To download a binary distribution, go to the Hackystat Developer Services Server and click on either the "Stable Release" or "Last Build" links. The "Stable Release" link takes you to a page containing the last (relatively) stable releases of various configurations of the system. The "Last Build" link takes you to a page containing links to various configurations that were built during the previous day. In general, you should download the stable release unless you know you need features or bug fixes available in the latest build. A typical binary distribution zip file might be named "hackystat-standard-7.0.1201.zip". (As discussed above, do not download the "Hackystat-All" configuration.)
Once you have downloaded the binary distribution, unpacking it will produce a directory tree whose root is named something like "hackystat-standard-7.0.1201". This distribution/directory name is composed of three comma-separated parts. The first part, "hackystat", indicates the system. The middle part is a text string indicating the configuration. In this example, the middle part indicates that this distribution is a "standard" configuration suitable for Hackystat evaluation by most organizations). The last part contains a version number, in this case "7.0.1201".
![]() | Note |
|---|---|
Until you are an experienced Hackystat installer, we recommend that you create a top-level directory called 'public_hackystat' under which you maintain your Hackystat (and Tomcat, and Ant distributions). This will facilitate debugging if you encounter problems during installation. Note for unix environments: Due to a bug in the Java zip implementation, directory/file permissions are munged after unzipping the distribution on Unix. To repair this, change directories to the parent directory of the hackystat distribution and invoke the chmod command on the hackystat distribution directory. For example: bertha:~ % chmod -R a+x public_hackystat/hackystat-standard-7.0.1201/
| |
Hackystat modules are arranged as sibling directories in a single parent directory along with a special file called hackystat.build.properties. The directory structure for a pre-built distribution should like something like the following (on Windows):
c:\public_hackystat\hackystat-7.0.1201\hackystat.build.properties c:\public_hackystat\hackystat-7.0.1201\hackyCore_Build\ c:\public_hackystat\hackystat-7.0.1201\hackyCore_Kernel\ c:\public_hackystat\hackystat-7.0.1201\hackyCore_Statistics\ c:\public_hackystat\hackystat-7.0.1201\hackyCore_Report\ : etc.
The specific set of subdirectories will depend upon the configuration you have downloaded.
An alternative to downloading a Hackystat binary distribution is to download the sources from our Subversion configuration management repository. To do this, you must first install a Subversion client, such as TortoiseSVN. A list of other Subversion clients is available here.
We recommend that you create a directory called 'public_hackystat' and a subdirectory inside it called 'svn' to hold the Hackystat subversion modules.
Once you have installed a Subversion client and established a directory to hold the sources, you can check out the latest version of our Hackystat sources from Subversion using the following URL:
svn://www.hackystat.org/hackystat/trunk
If prompted by your client, do not enter any username or password in order to obtain anonymous read-only access.
Approximately 70 modules (directories) will be checked out into your local directory. The resulting directory structure for a source download from Subversion should like something like the following (on Windows):
c:\public_hackystat\svn\hackyApp_BuildAnalysis\ c:\public_hackystat\svn\hackyApp_Cgqm\ c:\public_hackystat\svn\hackyApp_Cocomo\ : etc.
Once you have downloaded Hackystat as either the source or binaries, the next step is to update your Ant installation with some additional library files necessary for Hackystat. To do this, change directories to the hackyCore_Build directory, and invoke 'ant -f antupdate.build.xml'. Here is an example invocation of this command:
c:\svn\hackyCore_Build>ant -f antupdate.build.xml
Buildfile: antupdate.build.xml
hackyCore_Build.updateAntLib:
[copy] Copying 6 files to C:\apache-ant-1.6.5\lib
BUILD SUCCESSFUL
Total time: 1 second
The next step is to create a file called "hackystat.site.properties" in a directory called ".hackystat" in your home directory. For example, on Windows, for a user named "johnson", the path to this file is "c:\Documents and Settings\johnson\.hackystat\hackystat.site.properties". The hackystat.site.properties file contains properties that provide the Hackystat server (and the Hackystat testing process) with information about the location of important files and directories.
The following table documents the properties that must be defined in the hackystat.site.properties file. Note that if you are specifying a Windows file path in this file, you must use '\\' to indicate the file path separator (backslash).
Table 8.2. hackystat.site.properties file contents (required)
| Required Properties | Description/Example |
|---|---|
| hackystat.admin.email | The email of the administrator of this Hackystat server. The Hackystat server provides this email to users who require information about this server. Note: The email account cannot contain periods! For example, johnson@hawaii.edu is a valid admin email, but 'philip.johnson@hawaii.edu' is not a valid admin email. Example: johnson@hawaii.edu |
| hackystat.admin.userkey | The user key associated with the admin account for this Hackystat server. When running the Hackystat test suite to verify installation, this property allows this test code to log into this server as the administrator as required for testing purposes. While this property is not technically required, practically speaking you will want to supply it in order to run the test cases to verify your Hackystat installation. When installing a Hackystat server for the first time, whatever you provide for this property will be used to define the administrator user key. You can supply any combination of lower and upper case letters and digits as the admin user key. Of course, use the same discretion you would employ in specifying any password. Upon startup, the Hackystat server will print a warning to the Tomcat console if an already existing admin account with a different user key exists. (Note that in this case, the test cases requiring admin login will fail.) Example: TiTaUk1245 |
| hackystat.data.dir | The location of the directory in which the Hackystat server will store information about the currently registered users, including their sensor data. This directory will be created automatically if not present. We recommend that you define this directory in your "public_hackystat" directory along with the Hackystat distribution and associated infrastructure tools. Example: c:\\public_hackystat\\hackystat_data |
| hackystat.host | The URL of the host where this Hackystat server web application is located. Used by the Hackystat server to identify itself in emails and webpages. Also used by the testing process to locate the Hackystat server. Example: http://hackystat.ics.hawaii.edu/ |
| hackystat.mail.server | The host name of an SMTP mail server accessable to this Hackystat server. Used by the Hackystat server to send emails to users upon registration or when alerts are triggered. Example: mail.hawaii.edu |
| hackystat.site.name | The name to be associated with this Hackystat server on its web pages and in emails. Example: University of Hawaii |
| hackystat.timezone | The timezone in which this Hackystat server is running. Used by the Hackystat server to edit the timestamps associated with test sensor data so that tests will work correctly in timezones other than Hawaiian Standard Time. While this property is not technically required, it is necessary for all Hackystat installations outside of Hawaii who wish their test cases to work correctly. Example: US/Eastern |
| tomcat.admin.user | The account name given the admin role in tomcat-users.xml during Tomcat installation. Used by Ant to install the Hackystat server on a running Tomcat instance. Example: hackyAdmin |
| tomcat.admin.password | The password associated with the account name given the admin role in tomcat-users.xml during Tomcat installation. Used by Ant to install the Hackystat server on a running Tomcat instance. Example: hackyPwd |
In addition to the above required properties, the hackystat.site.properties file can contain the following optional properties that may be useful in certain installation contexts:
Table 8.3. hackystat.site.properties file contents (optional)
| Optional Properties | Description/Example |
|---|---|
| java.awt.headless | If the Hackystat server is to be instantiated on a "headless" server, this property should be present and set to "true" so that image display mechanisms work correctly. Example: true |
| hackystat.logging.level | Sets the amount of logging information printed to the Tomcat console and to logging files during server execution. Set to "fine" or "finest" for more detailed logging information. Default: info |
| hackystat.test.installation | Sets a flag to indicate that the Hackystat server is a testing installation. This provides a chance to allow any code on the server side to behave differently, since it knows it is running inside a "testing" installation. Currently, when this flag is set to "true", no emails are sent from the server. Default: false |
| hackystat.warranty.file.path | The "Help" page of the Hackystat server contains a link to a page that specifies Privacy policies for the data stored on the server and Warranty information for the server software. If the hackystat.warranty.file.path property is not provided, then the default version of this page specifies the Privacy policy and Warranty information for the University of Hawaii public server. To replace this page with information appropriate to your local installation, create an HTML file with your information and use this property to point the Hackystat server to that file. For help in constructing your file, you can find the default UH Privacy/Warranty file at hackyCore_Build/build/war/doc/doc.help.warranty.html. Example: c:\\public_hackystat\\local.warranty.html |
The following illustrates the contents of an example hackystat.site.properties file:
# sample hackystat.site.properties hackystat.admin.email=victor@cs.maryland.edu hackystat.admin.userkey=Tuihg65dkf hackystat.data.dir=c:\\public_hackystat\\hackystat_data hackystat.host=http://localhost:8080/ hackystat.mail.server=mail.maryland.edu hackystat.site.name=University of Maryland hackystat.warranty.file.path=c:\\public_hackystat\\maryland.warranty.html hackystat.timezone=US/Eastern tomcat.admin.user=hackyAdmin tomcat.admin.password=changethis java.awt.headless=true
If you are building Hackystat from sources, the Hackystat build system requires the installation of Hackystat sensors for several tools, including JUnit, Ant, PMD, FindBugs, Checkstyle, and DependencyFinder.
Of course, you can't do this installation from the system you just downloaded, since it isn't installed yet! To resolve this, you must do two things: (1) Download hackyInstaller.jar from the Help page of the Hackystat Public Server, and (2) Invoke Ant on the sensorupdate.build.xml file, passing it the directory location where you put the hackyInstaller.jar file. This invocation will execute hackyInstaller in command line mode and ensure that all required sensors are downloaded and installed into your environment.
Here is an example invocation of the sensorupdate.build.xml file. Note that hackyInstaller.jar was downloaded into c:\ from the public server prior to the invocation.
C:\svn\hackyCore_Build>ant -Dhackyinstaller.dir=c:\ -f sensorupdate.build.xml
Buildfile: sensorupdate.build.xml
hackyCore_Build.updateSensors:
[java] Hackystat key (ChangeThisToYourKey) is invalid or has not yet been set.
[java] The ANT_HOME path has been saved.
[java] Success
[java] Hackystat key (ChangeThisToYourKey) is invalid or has not yet been set.
[java] Downloading Ant sensor, Version: 7.3.315...
[java] ..
[java] Ant sensor installation/update completed. Version 7.3.315 installed.
[java] Success
[java] Hackystat key (ChangeThisToYourKey) is invalid or has not yet been set.
[java] Downloading Checkstyle sensor, Version: 7.3.315...
[java] .
[java] Checkstyle sensor installation/update completed. Version 7.3.315 installed.
[java] Success
[java] Hackystat key (ChangeThisToYourKey) is invalid or has not yet been set.
[java] Downloading DependencyFinder sensor, Version: 7.3.315...
[java] .
[java] DependencyFinder sensor installation/update completed. Version 7.3.315 installed.
[java] Success
[java] Hackystat key (ChangeThisToYourKey) is invalid or has not yet been set.
[java] Downloading Emma sensor, Version: 7.3.315...
[java] .
[java] Emma sensor installation/update completed. Version 7.3.315 installed.
[java] Success
[java] Hackystat key (ChangeThisToYourKey) is invalid or has not yet been set.
[java] Downloading FindBugs sensor, Version: 7.3.315...
[java] .
[java] FindBugs sensor installation/update completed. Version 7.3.315 installed.
[java] Success
[java] Hackystat key (ChangeThisToYourKey) is invalid or has not yet been set.
[java] Downloading Jblanket sensor, Version: 7.3.315...
[java] ..
[java] Jblanket sensor installation/update completed. Version 7.3.315 installed.
[java] Success
[java] Hackystat key (ChangeThisToYourKey) is invalid or has not yet been set.
[java] Downloading Junit sensor, Version: 7.3.315...
[java] .
[java] Junit sensor installation/update completed. Version 7.3.315 installed.
[java] Success
[java] Hackystat key (ChangeThisToYourKey) is invalid or has not yet been set.
[java] Downloading Jira sensor, Version: 7.3.315...
[java] ...
[java] Jira sensor installation/update completed. Version 7.3.315 installed.
[java] Success
[java] Hackystat key (ChangeThisToYourKey) is invalid or has not yet been set.
[java] Downloading Locc sensor, Version: 7.3.315...
[java] .
[java] Locc sensor installation/update completed. Version 7.3.315 installed.
[java] Success
[java] Hackystat key (ChangeThisToYourKey) is invalid or has not yet been set.
[java] Downloading Pmd sensor, Version: 7.3.315...
[java] .
[java] Pmd sensor installation/update completed. Version 7.3.315 installed.
[java] Success
[java] Hackystat key (ChangeThisToYourKey) is invalid or has not yet been set.
[java] Downloading SVN sensor, Version: 7.3.315...
[java] .........
[java] SVN sensor installation/update completed. Version 7.3.315 installed.
[java] Success
[java] Hackystat key (ChangeThisToYourKey) is invalid or has not yet been set.
[java] Downloading XmlData-Ant sensor, Version: 7.3.315...
[java] .
[java] XmlData-Ant sensor installation/update completed. Version 7.3.315 installed.
[java] Success
BUILD SUCCESSFUL
Total time: 44 seconds
In this example, the user had not yet registered with a Hackystat host and established a user key, but this does not prevent the Installer from downloading the required sensors and placing them into the ant/lib directory.
When building Hackystat from sources, the build will fail (with a descriptive failure message) if you do not have the required set of Hackystat sensors installed in your development environment. You do not need to have these sensors enabled, but you do need to have them installed by following the above instructions.
If you are building Hackystat from a binary distribution, you do not need to install sensors and can skip the instructions in this section.
A significant difference between the source and binary distributions of Hackystat is that the binary distribution is packaged with two important files: modules.build.xml and hackystat.build.properties, while the source distribution requires that you create these files locally.
If you are installing Hackystat from sources, you must now run the "AutoConfig" system to create the modules.build.xml file and a template version of hackystat.build.properties (called sample.hackystat.build.properties). You invoke the autoconfig system with "ant -f autoconfig.build.xml". Here is a sample invocation:
c:\svn\hackyCore_Build>ant -f autoconfig.build.xml
Buildfile: autoconfig.build.xml
run:
[echo] [AutoConfig] Generated modules.build.xml, sample.hackystat.build.properties, and modules.html.
autoconfig.build.default:
BUILD SUCCESSFUL
Total time: 1 second
By running the AutoConfig system in the previous step, you generated a file called sample.hackystat.build.properties in the parent directory of the directory in which you invoked the command (hackyCore_Build). The contents of the sample.hackystat.build.properties file looks something like the following:
# -*-Sh-*-
# hackystat.build.properties file
# 64 defined modules.
# Generated by AutoConfig on: Mon Jan 02 20:27:07 HST 2006
hackyApp_BuildAnalysis.available=true
hackyApp_Cgqm.available=true
hackyApp_Cocomo.available=true
hackyApp_Course.available=true
:
<Lots of lines deleted>
:
hackySensor_Vim.available=true
hackySensor_VisualStudio.available=true
hackySensor_XmlSensorData.available=true
This sample.hackystat.build.properties file, which is generated by AutoConfig, results from inspecting the set of sibling directories of hackyCore_Build to determine what Hackystat modules exist locally, then generating this file which serves as a template for creating the actual hackystat.build.properties file. The hackystat.build.properties file controls which hackystat modules are actually incorporated into the build of the system.
To setup the hackystat.build.properties file, the first step is to simply rename sample.hackystat.build.properties to hackystat.build.properties. After you do this, you have effectively instructed the build process to include all of the available hackystat modules when building the system.
Normally, of course, you will only want to include a subset of the available modules when building the system. To specify the module subset, you edit the hackystat.build.properties file and comment out the lines referring to modules that you do not wish to include in your build. Inserting a "#" character at the beginning of line comments out that line.
It turns out that you can't comment out just any old subset of the Hackystat modules, because Hackystat modules can depend upon each other. For example, a certain "application" module (such as hackyApp_Pri) might depend upon one or more other modules (such as the "sensor data type" module called hackySdt_Build). The hackySdt_Build module might then depend upon yet other modules (such as the "core" module called hackyCore_Telemetry), and so on. The Hackystat build system is aware of these dependencies, so that if you have commented out the hackyCore_Telemetry module but not all of the modules that depend upon it (such as hackyApp_Pri), the build system will fail with an error message detailing the dependency violation.
More information about Hackystat module dependencies will be forthcoming in the developer's guide. For now, simply consult a current Hackystat developer if you have questions about how to create legal subsets of the system for a build.
If you are building Hackystat from sources and intend to use the 'freshStart' target, you will need to install Checkstyle. Checkstyle is "a development tool to help programmers write Java code that adheres to a coding standard". The Hackystat source distribution includes a Checkstyle configuration file in the hackyCore_Build module that defines the coding standard to which Hackystat code should conform.
To install Checkstyle, begin by downloading Checkstyle 4.2 or later and unzipping it into a directory. Please do not unzip Checkstyle into a directory path containing spaces, such as "Program Files".
To complete the installation, define an environment variable called CHECKSTYLE_HOME that points to the directory where you installed Checkstyle. For example, this environment variable might be defined as "c:\java\checkstyle-4.2".
As a result of this section, you have downloaded Hackystat sources, updated your Ant installation with libraries, and set up the hackystat.site.properties file with properties providing information about your local environment for use in the installation.
If you downloaded a binary distribution, it came with predefined modules.build.xml and hackystat.build.properties files. If you downloaded Hackystat from sources, you needed to generate these files yourself.
The next section completes the description of the basic installation process by describing how to bring up the Hackystat server on Tomcat.