The Open Source Project
Andreas FabriGeometryFactory
Lutz KettnerMax Planck Institute
A.Fabri, L.Kettner CGAL 2
Outline
• Current Status• Towards a Component Repository• Towards an Open Source Project
A.Fabri, L.Kettner CGAL 3
History and Mission Statement
“Make the large body of geometric algorithms developed in the field of computational geometry available for industrial applications”
Started in 1996 as joined project of:
ETH Zurich, INRIA, MPI für Informatik, Tel-Aviv U,
Utrecht U, Trier U, FU Berlin
A.Fabri, L.Kettner CGAL 4
Development Process
• Editorial board– receives/reviews submissions
• Developer manual, manual tools,one week developer meetings
• Version management system• Bug tracking system• Three internal releases per week• Testsuites
A.Fabri, L.Kettner CGAL 5
The CGAL Class Library
• 1200 C++ classes, 300 KLOC, 1100 p manual
• 40 developer years• supported platforms
– Linux, Irix, Solaris, Windows (OS X)– g++, SGI CC, SunPro CC, VC7, Intel, PG CC
• Release cycle of 12 months
• 6000 downloads per year
Towards a Component Repository
A.Fabri, L.Kettner CGAL 7
Gems vs. Libraries
• Gems– self contained, but often hard to combine– combination means reduncancy
• Libraries – often tightly coupled– often derivation hierarchies with single root
• Components – more standardized than gems– more lightweight than a library
A.Fabri, L.Kettner CGAL 8
CGAL Component Model
Generic programming: Specification of concepts
like NumberType, Kernel,...
GMP Core leda::real
boost STL
CGAL::Kernelleda::Rat_kernel
Kernelconcept
CGAL::Datastructure
double
NumberTypeconcept
A.Fabri, L.Kettner CGAL 9
template < typename Kernel >class Delaunay_triangulation_2 {
void insert(Kernel::Point_2 t) {
if(Kernel::Orientation()(p,q,t)==..)
if((Kernel::Incircle()(p,q,r,t)) }};
CGAL Component Model
Generic programming: Specification of concepts
like Kernel, TriangulationVertex_2,...
A.Fabri, L.Kettner CGAL 10
CGAL Component Repository
• Results in small overseable units• Allows differentiation
– maturity vs. early availability– access and licenses (open source,
commercial)
• Scales up– specialized datastructures– contributions
• Allows contributions to keep their identity
Towards an Open Source Project
A.Fabri, L.Kettner CGAL 12
Open Source License
• A guarantee that CGAL remains free• Goals
– promote CGAL as a standard for users – incite people to code CGAL-style
• Different licenses for different parts– LGPL for Kernel and Support Library– QPL for Basic Library
A.Fabri, L.Kettner CGAL 13
Becoming a Project Partner• A typical CV
– CGAL user assimilates design ideas – Discussions on cgal-user mailing list– Submission to Editorial Board– Invitation to internal ressources
• Legal aspect– Researchers and students do not own their
code– We need ok from technology transfer office
A.Fabri, L.Kettner CGAL 14
Project Partners/Contributors
A.Fabri, L.Kettner CGAL 15
A Good Moment to Join
• Library has reached a critical mass
• Acceptance of exact computing paradigm
• Maturity of compilers• Acceptance of
generic programming (STL)