Monday, September 1, 2008

Open Source Software Engineering

Overview

OSS?
This journey to have download, install, and use a Java-based open source system was quite... difficult. First being new to sourceforge, my initial impression of the service was overwhelming. The site consisted of: millions of projects, billions of downloads, varying categories, and ability to create your own project just to name a few. Then the question of OSS (Open Source Systems) come into play. Why are we even concerned with using OSS? Well, after reading up on it, long story short: The OSS development approach has helped produce reliable, high quality software quickly and inexpensively. Onto the experience.

The Install
The open source projects on sourceforge are very extensive in functionality, usability, compatibility, and amount of dependencies required. After browsing categories and filtering "Programming Language: Java", I found my self going through program after program, looking at supported (OS) operating systems, the amount of dependencies I had to install, check if the dependencies were compatible with my OS, most even required a back end database then they expected you to already have installed. Luckily, after an adequate amount of time searching for something plausible, I can across Arcus, https://sourceforge.net/projects/arcus/ .

Taken from the Arcus site:
"The main features of Arcus are
  • 3D display of the cube, including animated rotations and layer turns.
  • Besides solving the cube (that is, from any pattern getting to the state with one color on each side), Arcus is able to get from any pattern to any other goal pattern, which is a more general task.
  • 3D Pattern Editor to specify the goal pattern.
  • Pattern Store to gather and store pretty patterns.
  • Keeping track of each turn, allowing the user to bidirectionally walk through the cube's history.
  • Easily configurable Look and Feel, colors, mouse behavior, etc. Most of the changes take effect immediately."
Two files to work with:
- arcus-0.3.2-source.tar.gz
- arcus-0.3.2.jar

The .jar file is the actual application. In the .tar.gz file you'll find the source code, as well as the readme, makefile, change log, etc. I used the eclipse environment to create a new Java project, imported all the .java files with the accommodating packages/directories. Headache isn't over yet, error galore... Luckily Eclipse finds the causes of these errors and recommends solutions with a single click. I found that the main cause of errors were package name/declarations and my file hierarchy. I guess the way that eclipse imports them, isn't complementary to the import statements. I successfully fixed all the errors across the java files, unfortunately, they were still filled with warnings... The project was successfully able to compile, but upon execution, I hit an "Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError". The application failed to execute after that.

The Three Prime Directives for OSS Engineering
01. The system successfully accomplishes a useful task.
02. An external user can successfully install and use the system.
03. An external developer can successfully understand and enhance the system.

I actually found this application to be very useful. Its great for people who don't know the trick to actually completing the Rubik's Cube puzzle! Keep in mind that it doesn't give out tips or instructions, mainly because the functionality of the application is to analyze the algorithm used to solve the cube. The website does give out instruction for compilation, though I guess it takes a little bit more configuration for Eclipse. I'm still fairly new to errors pertaining applets and such, troubleshooting them would take a considerable amount of time. The user interface is excellent and the ability to rotate the cube, go step by step, see a rotation log, etc makes this visually pleasant. The Java classes are easy to follow and the methods/variable are logically sensible. The underbelly of the program lives in the algorithm of the Rubik's Cube. By all means an external developer can enhance the outcome. The other classes mainly pertain to the gui's, models, etc.

Conclusion
In conclusion, I am walking away with more appreciation for the difficulties involved with achieving the Three Prime Directives of Java-based Open Source Software Engineering. Even with a simpler project such as Arcus, such tasks are more than trivial and require more troubleshooting and thinking. I would imagine for a bigger project, even getting the dependencies correctly installed and configured would take a substantial amount of time.

No comments: