Why this lecture exists ITK Lecture 12: Open Source & Cross Platform Software Development



Similar documents
Discover the framework and make your first steps with it.

Version Control with Subversion and Xcode

SAS in clinical trials A relook at project management,

Pragmatic Version Control

Open Source vs. Collaborative Software: FOSS is Not Enough

Version Control with Subversion

CSPA. Common Statistical Production Architecture Descritption of the Business aspects of the architecture: business models for sharing software

CMake/CTest/CDash OSCON 2009

4.1 Introduction 4.2 Explain the purpose of an operating system Describe characteristics of modern operating systems Control Hardware Access

TIME. Programming in the large. Lecture 22: Configuration Management. Agenda for today. About your Future. CM: The short version. CM: The long version

SOFTWARE DEVELOPMENT BASICS SED

Introduction to UNIX and SFTP

CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)

MayaVi: A free tool for CFD data visualization

Version Control! Scenarios, Working with Git!

SA4 Software Developer Survey Survey Specification v2.2

Mastering CMake. Sixth Edition. Bill Martin & Hoffman. Ken. Andy Cedilnik, David Cole, Marcus Hanwell, Julien Jomier, Brad King, Robert Maynard,

Introduction to Android

How To Develop An Image Guided Software Toolkit

Operating System Today s Operating Systems File Basics File Management Application Software

Version control with Subversion

Case Study: Access control 1 / 39

PxPlus Version Control System Using TortoiseSVN. Jane Raymond

An Open Source SCADA Toolkit

Bacula The Network Backup Solution

Case Studies. Joint software development Mail 1 / 38. Case Studies Joint Software Development. Mailers

Version Control with Subversion

Week Overview. Installing Linux Linux on your Desktop Virtualization Basic Linux system administration

CISC 275: Introduction to Software Engineering. Lab 5: Introduction to Revision Control with. Charlie Greenbacker University of Delaware Fall 2011

Bacula The Network Backup Solution

Advanced Computing Tools for Applied Research Chapter 4. Version control

Chapter 5: System Software: Operating Systems and Utility Programs

Virtualization Techniques for Cross Platform Automated Software Builds, Tests and Deployment

Architecture and Mode of Operation

Comparison of Version Control Systems for Software Maintenance

Documentation and Project Organization

Bacula The Network Backup Tool for *BSD, Linux, Mac, Unix and Windows

Open Directory. Apple s standards-based directory and network authentication services architecture. Features

Automation and Virtualization, the pillars of Continuous Testing

A single user ran a single program ran on a single computer there was no need for Page 1 of 6 Copyright Virtual University of Pakistan

SSL Tunnels. Introduction

Source Control Systems

CS 2112 Lab: Version Control

Luca Caucchioli Information Technology Consultant

Writing Open Source Software for BlackBerry

BlueJ Teamwork Tutorial

Bacula. The leading Opensource Backup Solution

AFS Usage and Backups using TiBS at Fermilab. Presented by Kevin Hill

Remote Access to Unix Machines

Lab Exercise Part II: Git: A distributed version control system

Open is as Open Does: Lessons from Running a Professional Open Source Company

A Cross Platform Development Workflow for C/C++ Applications.

CONNECTING TO DEPARTMENT OF COMPUTER SCIENCE SERVERS BOTH FROM ON AND OFF CAMPUS USING TUNNELING, PuTTY, AND VNC Client Utilities

Software Requirement Specification for Web Based Integrated Development Environment. DEVCLOUD Web Based Integrated Development Environment.

Version Control Tools

Robot/SCHEDULE Enterprise

One solution for all your Source Configuration Management Needs

Moving a Commercial Forecasting Product to Open Source

Version Control Tutorial using TortoiseSVN and. TortoiseGit

using version control in system administration

Code Estimation Tools Directions for a Services Engagement

nexb- Software Audit for Acquisition Due Diligence

What s New in Centrify Server Suite 2013 Update 2

Introduction to Programming Tools. Anjana & Shankar September,2010

Selection and Management of Open Source Software in Libraries.

Data management on HPC platforms

Overview of CS 282 & Android

Continuous Integration. CSC 440: Software Engineering Slide #1

How to use PDFlib products with PHP

Software configuration management

Distributed Version Control

Mercurial. Why version control (Single users)

Project Management Tools

Automate Your Deployment with Bamboo, Drush and Features DrupalCamp Scotland, 9 th 10 th May 2014

Google and Open Source. Jeremy Allison Google Open Source Programs Office

Lab: Application Lifecycle Management (ALM) Across Heterogeneous Platforms (Java/.NET)

Modulo II Software Configuration Management - SCM

Easing embedded Linux software development for SBCs

Chapter Contents. Operating System Activities. Operating System Basics. Operating System Activities. Operating System Activities 25/03/2014

The Benefits of Utilizing a Repository Manager

Introducing Xcode Source Control

SSL for VM: The Hard Way and the Easy Way

Modern Software Development Tools on OpenVMS

Web Hosting: Pipeline Program Technical Self Study Guide

Lecture 1: Introduction to UNIX

1/5/2013. Technology in Action

CatDV Pro Workgroup Serve r

AccuTerm 7 Cloud Edition Connection Designer Help. Copyright Zumasys, Inc.

Transcription:

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