The Insight Segmentation and Registration Toolkit (ITK at itk.org) was funded by NIH/National Library of Medicine. From the beginning of the $10 million project, the contract required all code and data to be delivered in open-source form. It defined a consortium of 6 prime contractors (3 academic, 3 commercial) each of whom had a particular role (e.g., architecture, algorithms, software process). It has been a great experience (version 1.4 will be released in two weeks).
Kitware www.kitware.com has received on the order of millions of dollars to develop three open-source systems: VTK, ITK, and CMake (vtk.org, itk.org, cmake.org). Sponsors are the US National Labs who are invsting to make VTK (the Visualization Toolkit) run on large parallel supercomputers; the National Library of Medicine who have funded the entire development of ITK (Insight Segmenation and Registration Toolkit); and both have helped fund CMake a cross-platform build management tool.
BTW- we use a BSD-style license. GPL is an extreme license, it is not business friendly and comes with it's own strings attached. Strings mean limits on freedom...
We use the following tools in our VTK (vtk.org) and ITK (itk.org) projects. Both these systems are cross-platform and are used by some pretty heavy hitters like the National Labs and National Library of Medicine. The systems are also quite large and complex.
+ CMake (www.cmake.org) manages the build process in a cross-platform manner. Using simple configuration files, it produces a native build environment (e.g., Makefiles, workspaces, etc.) on Unix, Linux, Windows, Mac. That way you can use native development tools on each platform. CMake is becoming pretty popular; it's available from cygwin, Debian, etc.
+ The testing process is managed by DART (http://public.kitware.com/Dart/HTML/Index.shtml) and an example Dartboard can be found here http://www.vtk.org/Testing/Dashboard/MostRecentRes ults-Nightly/Dashboard.html. Notice that we test nightly (actually continuously) on many different platforms and compiler combinations.
+ We use CVS for source code control
+ VTK provides cross-platform 3D graphics, image processing and visualization. ITK provides image processing, segmentation and registration.
+ We have created a C++ class that encapsulates threading details and use it in a general fashion. Both ITK and VTK use this. (VTK also encapsulates distributed parallel processing such as MPI. We have used it on a 1024 processor National Lab Machine to process nearly a petabyte of data.)
+ Tk (Tcl/Tk, Python/Tk, C++/Tk) work okay for the GUI. Qt, FLTK, and wxWindows are also candidates.
+ We like to create hybrid compiled/interpreted environments. That is a C++ core, which is automatically "wrapped" into language bindings for Tcl, Python, Java, etc. We now have a tool called CABLE that can wrap arbitrarily complex C++ code into Tcl (soon Python). See http://www.kitware.com/Cable for more information. Applications built with the wrappers are pretty portable.
For those wishing to understand the differences between open source licenses, I recommend the book "Open Source Licensing" by lawyer Lawrence Rosen (it is also available online at http://www.rosenlaw.com/oslbook.htm). There is also an interesting discussion on this topic summarized here http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:C ommunity_Licensing.
The Insight Segmentation and Registration Toolkit (ITK at itk.org) was funded by NIH/National Library of Medicine. From the beginning of the $10 million project, the contract required all code and data to be delivered in open-source form. It defined a consortium of 6 prime contractors (3 academic, 3 commercial) each of whom had a particular role (e.g., architecture, algorithms, software process). It has been a great experience (version 1.4 will be released in two weeks).
Kitware www.kitware.com has received on the order of millions of dollars to develop three open-source systems: VTK, ITK, and CMake (vtk.org, itk.org, cmake.org). Sponsors are the US National Labs who are invsting to make VTK (the Visualization Toolkit) run on large parallel supercomputers; the National Library of Medicine who have funded the entire development of ITK (Insight Segmenation and Registration Toolkit); and both have helped fund CMake a cross-platform build management tool. BTW- we use a BSD-style license. GPL is an extreme license, it is not business friendly and comes with it's own strings attached. Strings mean limits on freedom...
We use the following tools in our VTK (vtk.org) and ITK (itk.org) projects. Both these systems are cross-platform and are used by some pretty heavy hitters like the National Labs and National Library of Medicine. The systems are also quite large and complex.
s ults-Nightly/Dashboard.html. Notice that we test nightly (actually continuously) on many different platforms and compiler combinations.
+ CMake (www.cmake.org) manages the build process in a cross-platform manner. Using simple configuration files, it produces a native build environment (e.g., Makefiles, workspaces, etc.) on Unix, Linux, Windows, Mac. That way you can use native development tools on each platform. CMake is becoming pretty popular; it's available from cygwin, Debian, etc.
+ The testing process is managed by DART (http://public.kitware.com/Dart/HTML/Index.shtml) and an example Dartboard can be found here http://www.vtk.org/Testing/Dashboard/MostRecentRe
+ We use CVS for source code control
+ VTK provides cross-platform 3D graphics, image processing and visualization. ITK provides image processing, segmentation and registration.
+ We have created a C++ class that encapsulates threading details and use it in a general fashion. Both ITK and VTK use this. (VTK also encapsulates distributed parallel processing such as MPI. We have used it on a 1024 processor National Lab Machine to process nearly a petabyte of data.)
+ Tk (Tcl/Tk, Python/Tk, C++/Tk) work okay for the GUI. Qt, FLTK, and wxWindows are also candidates.
+ We like to create hybrid compiled/interpreted environments. That is a C++ core, which is automatically "wrapped" into language bindings for Tcl, Python, Java, etc. We now have a tool called CABLE that can wrap arbitrarily complex C++ code into Tcl (soon Python). See http://www.kitware.com/Cable for more information. Applications built with the wrappers are pretty portable.
-W