Why this lecture exists ITK Lecture 12: Open Source & Cross Platform Software Development Methods in Image Analysis CMU Robotics Institute 16-725 U. Pitt Bioengineering 2630 Spring Term, 2006 Successfully managing any software project is not an easy job There are a lot of tools out there that make your life easier Some we ve talked about, some we haven t CMake You should now be very familiar with CMake, what it does, and why it s important CMake is a pretty unique tool - be sure to keep it in mind for future projects Revision control Allows many developers to change a common code base simultaneously Revision control of ASCII text files is easy; binary files are harder CVS Basic CVS operations are pretty simple; favorite GUI client is TortoiseCVS CVS server configuration: pserver - relatively easy to configure on the client side, low security SSH - high security, client & server configuration a bit trickier CVS benefits Reference version control software - many different client applications Does the job well enough to require serious thought before replacing 1
CVS problems Security! The normal pserver security is poor at best SSH security is much better, but much trickier to use Some odd side effects of versioning - can t delete directories Subversion A newer CVS alternative, core syntax is identical Server configuration: Apache web server svnserve - custom server svnserve & ssh - custom server with encryption layer Subversion benefits More capable versioning core - directory deletion a legal operation More flexible configuration options Fewer security issues Subversion problems Fewer clients available Windows (Tortoise SVN) Mac (SVNx) Command line (most other Unixes) Version control interaction Use CVSWeb to provide HTML access to a CVS repository Subversion supports native HTML access to the repository Useful for viewing differences between file versions Code testing How to keep track of multiple OS s and continuous revision of a common codebase? Option 1 don t worry Option 2 use a testing framework 2
DART DART, cont. Dashboard generator Coordinates builds and tests from multiple sources Client produces build/test results in XML Server converts XML to HTML web pages Supports continuous build process Graphics Toolkits/Libraries Low level: OpenGL Scientific visualization: VTK Other toolkits exist which are a bit more geared towards game development Plib Fonts: Freetype & FTGL GUI toolkits GLUT - an older but still useful very lightweight toolkit for GL development George wrote a C++ GLUT wrapper called Glutmaster FLTK - my personal favorite; not the prettiest, but does everything you need GUI toolkits, cont. wxwidgets - wraps native widget sets on each platform; therefore looks great, but fewer widgets than other toolkits QT - the luxury swiss army approach to cross platform GUIs; expensive for proprietary devel, licensing issues for open source Documentation Doxygen is the gold standard Easy to integrate with your web server to automatically generate fresh documentation each night 3
Bug tracking May or may not be useful depending on the number of users/developers you have First line of defense is a mailing list, telephone conferencing, or meetings If that s not adequate, try GNATS or another bug tracking program Open source licensing There are many options Don t assume they re all the same Popular licenses you ll likely run across: GPL LGPL BSD GPL Possibly the most pervasive license in the Linux world Often referred to as viral Other licenses may be termed GPLcompatible Derivative code must still be GPL d LGPL Similar to the GPL, but more permissive Your code can use LGPL code in library form without having to be released under the GPL Common license for libraries (graphics, sound, etc.) as opposed to end-user programs BSD A very permissive license that essentially requires only an acknowledgement and waiver of liability Good for open source projects that will be used in close-sourced code ITK and VTK are released under a BSD flavored license Licensing take-home If you choose to open-source your code, choose your license carefully With the GPL in particular it can be easy to have your code get away from you My opinion: the BSD license is the most academic friendly, others disagree 4
What level to buy in at? Solo project - CVS/SVN, Doxygen documentation Small lab - perform manual build tests and fix problems via a mailing list, CVS/SVN web access Large lab/several labs - add automated build testing, GNATS bug tracking Unless you have a good reason, always Program with multiple OS s in mind Test on alternative OS s if practical Document, document, document Store your code using revision control There s NEVER a good reason not to do this. NEVER EVER. You are a fool if you don t use revision control. Get it? 5