DIY Zoning: Source Code

DIY Zoning Source Code

The application itself is done, however, there are parts of it that are still proprietary at the moment, and there's a good chance that they will stay proprietary. Nevertheless, the skeleton of the application along with parts that are reasonable to put under LGPL will be made available - it is just a matter of time.

There are two ways to get the source (see the links on the left) - download the tarball (or better yet, RPM), or get the code from the Subversion. At this stage, the entry threshold is quite high, and the project code changes quite a bit between releases.

The main trunk in the Subversion is relatively stable, but the branches are not guaranteed to be. Depending on current state of affairs, the code in the branches may be anywhere from completely usable to completely broken. Usually, the Release Notes page will contain up-to-date information about status of different Subversion branches.


Hint: use to get the missing components.

This is what you need to run DZ:

Embedded Dependencies

These are included with the DZ distribution (as of 0.1p7dev2 release), there's no need to download them separately:

  • JRobin (alternative to RRDTool) - a Java based data logging and graphing tool. Versions 1.2.2 and 1.3.1 are known to work, but later should work, too;
  • Jukebox - a distributed middleware framework;
  • ServoMaster - a unified servo controller driver.

Required Dependencies

  • Apache Xerces, xerces-j2-2.2.1-1jpp RPM is known to work;
  • Apache XML Commons, xml-commons-1.0-0.b2.3jpp RPM is known to work;
  • Java SDK or JRE. All versions up to 1.4.2_04 are known to work. Versions 1.5.0_04 and up work as well (see note about RxTx below).

    Development with versions of JDK prior to 1.5 has been terminated. If you are planning to use DZ, now is a good time to think of a transition plan - go get the JDK_15 branch.
  • RxTx - see below.

Optional Components

  • Jakarta Regexp - jakarta-regexp-1.2-4 RPM is known to work. You will need this if you want advanced control over system logs (actually, this is a recommended component);
  • javax.usb. You will need this if you are using USB based servo controllers, in particular, Phidgets;
  • OWFS - it is not used per se today, but a 1-Wire® driver using OWFS is in development;
  • RRDTool (alternative to JRobin) - this is a C/Perl based data logging and graphing tool;
  • RxTx - see below. You will need this if you are using serial adapters and connectors.
    You will most probably need it, so it is listed as required as well.

Special Note: RxTx

For a long time, RxTx was stable as a rock, at least until version 1.4-15 (with uninterrupted uptime exceeding months). Then, somehow, the stability ended (at least for me), and all the subsequent versions (basically 2.x) couldn't work with DZ for more than a few seconds without a core dump.

Recently (mid-July 2005), I decided to give it a try again, and lo and behold, the current CVS version now works (at least with JDK 1.5, which suits me just fine), and at the moment of writing the uptime has reached a week - which is quite acceptable, for now.

So the recommendation for now is: if you can't run JDK 1.5, stick with RxTx 1.4-15 (or try the Subversion version), if you can, try current Subversion version or one of the latest releases. In both cases, I'd really appreciate a note telling what exactly had worked for you.

Breaking News

As of February 6 2006, DZ works with the current RxTx release, namely 2.1-7, in JDK_15 branch. No attempts to verify whether it works with JDK 1.4 will be made.

Development Tools

This is what you need to build DZ:

  • Ant, versions 1.5.1 (ant-1.5.1-3jpp and ant-optional-full-1.5.1-3jpp RPMs, DZ up to 0.1p5) and 1.6.1 (no RPM, get the binary, DZ 0.1p6 and up) are known to work;
    Unfortunately, distribution model chosen by Ant developers doesn't allow multiple versions of Ant to coexist on the same box. If you have the RPM installed, the binary won't work because it will try to read /etc/ant.conf and will fail.
  • GNU autoconf, version 2.53 is known to work;
  • GNU automake, version 1.4p6 is known to work;
  • GNU libtool, version 1.3.5 is known to work;
  • GNU make, almost any version is good (known to work with 3.79.1).