Kitware is a privately held software company founded in 1998 that focuses on open source scientific computing tools. It has around 65 employees and is profitable. Qt is now Kitware's preferred GUI toolkit due to its cross-platform capabilities and LGPL licensing. Key open source projects developed by Kitware include VTK, ITK, ParaView, CMake, and 3D Slicer. CMake is a cross-platform build system that generates native build scripts for various platforms and IDEs. It aims to provide compile portability like Java and is widely used in both small and large open source projects.
2. Overview
• Kitware
– History and Business Model
• Qt at Kitware
– past, present and Future
• CMake/CTest/CDash
1
3. Kitware: the Company
• Founded in 1998
• Founders: 5 previous employees of GE Corporate Research
• Privately held, profitable from creation, no debt
– Revenues projected at $9 million in 2009
• ~$14 million if subcontractors included
– Principally consulting/grants, with support product revenue
• Approximately 65 employees; growing rapidly (30% in 2009)
– > 25 PhD
4. Business Model
• Open source software
– Services and support
– Consulting
– Collaborative R&D
• Commercial products
– Value-added products
– Applications built on high quality, open source base
– Custom (proprietary) software frameworks
5. Kitware: Core Technologies
Supercomputing Medical
Visualization Imaging
• Large data • Registration
• Parallel computing • Segmentation
• Client / Server • Image Processing
• Web / grid architectures
• Measurement
• Human/Computer
• Responsive GUI
Interaction
Software
Process
Open-Source Computer
Toolkits Vision
• Insight ToolKit (ITK) Expertise in:
• VisualizationToolkit (VTK) • Behavior/event recognition
• CMake • Detection and tracking
• ParaView • Segmentation
• Publications and consulting • Change Detection
9. Supercomputing Visualization
• Applicable software
– VTK (the Visualization Toolkit)
– ParaView (Parallel Visualization application)
– Overview (Information visualization application)
• Customers
– Any producer and/or consumer of large, complex data
10. Medical Imaging
• Process, analyze and visualize medical data
– Image processing- operate on images to extract
information
– Segmentation- identify features in an image
– Registration- align images
11. Medical Imaging
• Applicable Software
– ITK (Insight Segmentation and Registration Toolkit)
– IGSTK (Image Guided Surgery Toolkit)
– VolView (volume rendering application)
– Maverick (medical image analysis
application framework)
• Customers
– Medical research
– Pharma
– Orthopedics
– Medical device manufactures utilizing images
– Pre-clinical
– Biological applications (image based)
14. National Library of Medicine
Segmentation and Registration Toolkit
$13 million over 6 years
Leading edge algorithms
Open Source Software
www.itk.org
15. ParaView
• Parallel Visualization application
• Turn-key wrapper around VTK
• Supports parallel data processing and
rendering
• Supports tiled displays, Caves, etc.
• 3D widgets, LOD (level-of-detail) display
• Extended by XML modules
• Extensive animation support
16. Kitware GUI History
• 1999 – 2009 C++ GUI Choices
– tcl/TK
– FLTK -> LGPL
– Qt -> GPL
– GTK
– WxWidgets -> BSD (1992)
– MFC (Only Windows)
• Requirements
– Cross Platform, Open Source “commercializable“
• Kitware created KWWidgets on top of tcl/TK
17. Kitware Qt GPL projects
• ParaQ ParaView (converted from KWWidgets)
2005
– Pay to keep BSD license on ParaView/VTK
• Maverick DOD SBIR
• One commercial customer
16
19. Qt LGPL Changes Everything!
• Scientists and Engineers can focus on the
science and not on GUI widgets and license
issues.
• Kitware plans to use and encourage the use of
Qt for all of our projects now.
20. 3D Slicer
• Is a multi-platform, open source software for bio-medical
computing
• Initially implemented
using KWWidgets due to
GPL licensing concerns
• Utilizes open-source tools CMake, VTK, ITK
• $350K of funding for Qt port
– NAMIC National Alliance of Medical Image Computing (na-
mic.org)
– One of seven prestigiuos NIH National Roadmap Projects, a
National Center of Biomedical Computing(NCBC)
• Two year effort, effort is underway
• Cited reasons: Ease of use, cross-platform support,
available community resources, and productivity gains
21.
22. CMake – Cross Platform Build
System
• Why CMake?
• CMake Features
• Where to get help
– Mastering CMake Book
– Web Page: www.cmake.org
• http://www.cmake.org/Wiki/CMake
• mailing list: cmake@cmake.org
21
23. Why CMake? It’s easy, and
works well
Typical Project without CMake (curl)
• A build system $ ls
CHANGES RELEASE-NOTES curl-config.in missing
CMake acinclude.m4 curl-style.el mkinstalldirs
that just works CMakeLists.txt
build docs
aclocal.m4 depcomp
notes~
notes
COPYING buildconf include packages
CVS buildconf.bat install-sh reconf
ChangeLog compile lib sample.emacs
Makefile config.guess libcurl.pc.in src
Makefile.am config.sub ltmain.sh tests
Makefile.in configure m4 vc6curl.dsw
README configure.ac maketgz
• A build system $ ls src/
CMakeLists.txt Makefile.riscos curlsrc.dsp hugehelp.h version.h
CVS Makefile.vc6 curlsrc.dsw macos writeenv.c
that is easy to use Makefile.Watcom Makefile.vc8
Makefile.am
curlutil.c main.c writeenv.h
config-amigaos.h curlutil.h makefile.amiga writeout.c
Makefile.b32 config-mac.h getpass.c makefile.dj writeout.h
cross platform Makefile.in
Makefile.inc
config-riscos.h getpass.h mkhelp.pl
config-win32.h homedir.c setup.h
Makefile.m32 config.h.in homedir.h urlglob.c
Makefile.netware curl.rc hugehelp.c urlglob.h
22
24. Why CMake? It’s fast
http://blog.qgis.org/?q=node/16 : “I was quite surprised with
the speed of building Quantum GIS codebase in
comparison to Autotools. “
25. Why CMake? Everyone is using it
KDE 2006 – Tipping Point!
• 800+ downloads per day from www.cmake.org
• Major Linux distributions and Cygwin provide CMake packages
• KDE, Second Life, Boost (Expermentally), many others
26. What Is CMake?
• Family of Software Development Tools
– Build – CMake
– Test – CTest/CDash
– Package – CPack
• Open-Source License
• History
– Insight Segmentation & Registration Toolkit (~2000)
– Changed the way we build
27. How CMake Changes The Way We Build
C++
• Boost aims to give C++ a set of useful libraries like Java,
Python, and C#
• CMake aims to give C++ compile portability like the
compile once and run everywhere of Java, Python, and
C#
– Same build tool and files for all platforms
– Easy to mix both large and small libraries
28. Who Is Involved?
Users Supporters
• KDE
• Kitware
• Second Life
• ITK • ARL
• VTK • National Library of
• ParaView
Medicine
• Trilinos
• Scribus • Sandia National Labs
• Boost (Experimentaly) • Los Alamos National
• Mysql
Labs
• many more
• NAMIC
27
29. CMake Features
• One simple language for all platforms • Built-in rules for common targets
– Windows, Mac, Linux, UNIX variants
– Executables
– Embedded platforms via cross-compilation
– Shared Libraries / DLLs
• Generates native build systems
– Static Libraries (archives)
– Makefiles (GNU, NMake, Borland, etc.)
– OS X Frameworks and App Bundles
– KDevelop, Eclipse
– Visual Studio 6,7,8,9 IDE • Custom rules for other targets
– Xcode – Generated Documentation
• Out-of-source build trees leave source – Generated sources and headers
clean • Configuration rules
• Interactive configuration via GUI
– System introspection
• Multiple configurations (Debug, Release,
– Persistent variables (options,
etc.)
cached results)
– Configured header files
30. CMake Features - continued
• Automatic analysis
– Implicit dependencies (C, C++, Fortran)
– Transitive link dependencies
– Ordering of linker search path and RPATH
• Advanced Makefile generation
– Modular, Fast, Parallel
– Color and progress display
– Help targets – make help
– Preprocessor targets – make foo.i
– Assembly targets – make foo.s
37. CPack
• CPack is bundled with CMake
• Creates professional platform specific installers
– TGZ and Self extract TGZ (STGZ), NullSoft Scriptable Install
System (NSIS), OSX PackageMaker, RPM, Deb