Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

30
Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Transcript of Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Page 1: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Software Toolkits

BuildingCommunities

Luis IbáñezKITWARE, Inc.

Page 2: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

If a tree falls in a forest…and nobody is around to hear it,

does it make a sound?

Page 3: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

No Users

=

No Toolkit

Page 4: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

How to sustain a Toolkit

Developers Mailing List

CVS Repository

CMake Configuration

Dart Dashboard

Bug Tracking

Moderator

Gatekeeper

Guru

Bad Guy

Czar

Doxygen Documentation Volunteer

Page 5: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

How to sustain a Toolkit

Writing Tests

Writing Applications

Tutorials

License

XTreme

Outsider

Prophet

Lawyer

Page 6: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

CVS

Repository

User 1

User 2

User 3

User 4

User 5

Developer X

Developer W

Developer Z

Developer Y

Developer M

Read OnlyRead / Write

Page 7: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

CVS

Who ? When ? What ? Why ?

For every change in the code, CVS provides an answer to

Also: Compare with old versions, and Restore old versions

Page 8: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

CVS

First step:

Provide CVS literacy,

Tutorials,

Set up a fake repository for practice

Page 9: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

CMake

Build configuration

LibraryA.libSource1.cxx

Source2.cxx

Source3.cxx

Source4.cxx

Source5.cxx

Source6.cxx

Source7.cxxExecutable1.exe

LibraryM.lib

LibraryK.lib

LibraryH.lib

LibraryM.lib

Page 10: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

CMake

Generating Project Files

VC++ 6.0Project.dsw

CMakeLists.txt

CMakeLists.txt

CMakeLists.txt

CMakeLists.txt

CMake

VC++ 7.0Project.sln

UnixMakefiles

BorlandMakefiles

NMakeMakefiles

Page 11: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

CMake

Functionalities

CMakeLists.txtFindOpenGL.cmake

FindITK.cmake

FindVTK.cmake

FindJPEG.cmake

TRY_COMPILE

TRY_RUN

COPY

Test Versions

Dart-Tests

Static / SharedUse / NotUse

Options

Page 12: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Dart

Every line of code is presumed brokenuntil proven correct

If it is not being compiled and testedchances are that is broken

Page 13: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Dart

DartServer

Platform XMac OS

Platform XMac OS

Platform XMac OS

Platform WWin XP, VC7

Platform WWin XP, VC7

Platform WWin XP, VC7

Platform ZLinux, GCC 3.3

Platform ZLinux, GCC 3.3

Platform ZLinux, GCC 3.3

Platform ZLinux, GCC 3.3

Platform YLinux, ICC

Platform YLinux, ICC

Platform YLinux, ICC

Platform YLinux, ICC

Platform MSun, GCC

Platform MSun, GCC

Platform MSun, GCC

Page 14: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Dart

DartWeb Page

CVSAware

NavigateDates Doxygen

RegressionTesting

Compare testsAcross platforms

CodeCoverage

PurifyValgrind

Page 15: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Dart - Dashboard

Page 16: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Dart - Dashboard

Page 17: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Dart - Dashboard

Page 18: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Bug Tracking

Bug Tracker

CVS Commentsreference Bug-ID

Feature Request

Documentation

Incorrect Code

Performance Issues

Categories

User 1

User 2

User 3

Developer A

Developer B

Developer C

Page 19: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Bug Tracking

Page 20: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Bug Tracking

Page 21: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Project Management

Who is doing whatAvoid duplication of effortInform users about future

developments Track progress of sub-projectsBut: requires some discipline

Page 22: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Project Management

Page 23: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Making Releases

Freezing Coverage 80%

BugTracker

Clearance

TestsPassing

Packaging.tar.gz

.zipCDs

Time

Page 24: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Doxygen

Generating Documentation from Code

Doxygen

HTMLLaTeX

PostScript

WindowsHelp

PDF

RTF

ClassA.h

ClassB.h

ClassC.h

ClassD.h

ClassE.h

Page 25: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Doxygen

Generating Documentation from Code

Doxygen

UMLClass

Diagrams

UMLCollaboration

Diagrams List ofClasses

ArticlePages

List ofMethods

ConceptualGrouping

/** This is documentation */class A{/** Convergence criterion */void SetTolerance( float );};

Images

Equations

Page 26: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Communications

WeeklyTCons

Users MailingList

InstantMessaging

DevelopersMeetings

Tutorials atConferences

BOF atConferences

TeleConferenceNetMeeting

FTPfor Data

Developers Users

Dev. MailingList

Page 27: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Users Mailing ListTreat the first users very well.Use:

maybe, perhaps, it seems, it looks like, you may want to.

Train users to report: platform, compiler, version.

Assume first that the user is rightDon’t say it works until you test it.Collect Frequently Asked Questions (FAQ)

Page 28: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Meta Documents

White PapersJournal PapersDiagramsSlides PresentationsBooks

Page 29: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Teaching by Example

Start from ScratchThen simple examples

showing only one featureProgress toward functional

examplesProvide examples that can be

used as toolsRegression testing examples

Page 30: Software Toolkits Building Communities Luis Ibáñez KITWARE, Inc.

Are we there yet ?