280 likes | 410 Views
The Tools of Open Source:. What you need to know to participate Ray Kimsey ADEC / NC State University Ron L. Roeber University of Nebraska - Lincoln. Successful Open Source Projects. Linux Apache Projects HTTP Perl PHP Sendmail. Characteristics of successful projects.
E N D
The Tools of Open Source: What you need to know to participate Ray Kimsey ADEC / NC State University Ron L. Roeber University of Nebraska - Lincoln
Successful Open Source Projects • Linux • Apache Projects • HTTP • Perl • PHP • Sendmail NETC 2002
Characteristics of successful projects 1. Good programmers working on a project on which they want to work. NETC 2002
Characteristics of successful projects 2. Communication & coordination of effort • Generally no F2F meetings • Rely on technology for communications - Email is LCD a lot of times NETC 2002
Characteristics of successful projects 3. Version management • Small number of core programmers • Large number of contributors • Patches • Features • Concurrent Versions System (CVS) NETC 2002
Characteristics of successful projects 4. Growth → Project management • Bug tracking & resolution • Task management NETC 2002
Characteristics of successful projects 5. Up-to-date web page • Explains what the software does • Provides latest project information • Details the licensing agreement • Acknowledges any special system requirements NETC 2002
CVSVersion Control &Distributed Application Development NETC 2002
What is CVS? • CVS stands for "Concurrent Versions System" • CVS records a complete history of a project • Centralized vs. Decentralized development • Team and distributed development NETC 2002
CVS Overview • CVS is a software development repositorty that facilitates the distributed development of code (Python, Perl, PHP, HTML…) • CVS allows for versioning software and websites • CVS works best with text files but does "handle" graphics and other binary files NETC 2002
CVS Software • A CVS repository resides on a server. CVS commands are issued "on the server". • CVS is not a protocol or daemon. It is "easy" to set up and get running on a server. • Developers interact (usually) with the CVS tree via locally running software • WinCVS • MacCVS • Pharmacy or tkCVS • Built-in to many tools (Emacs, Quanta…) NETC 2002
CVS Concept • Common Development Traits • Build Software, make it live • Give other people access to code • Developer/Designer at the center of activities • CVS Development • Repository is at the center of activity • Developers, designers, students…even the live web site checks out its own copy. NETC 2002
How CVS works in English • Create an application • When ready for viewing or sharing, place it in repository • Login to the server • Checkout a working copy • Make changes to your copy. . . NETC 2002
How CVS works in English • See what others have done • Resolve conflicts • Commit the changes to the repository NETC 2002
Using CVS • CVS client software allows user’s machines to interact with the CVS repository by issuing the “appropriate” commands and sub-commands. • WinCVS • MacCVS • Pharmacy • tkCVS • Built in to Emacs/Xemacs, Quanta Gold, others NETC 2002
CVS Sub-Commands • import - create a repository entry • checkout - get a copy of the files from the repository • update - Update all changes others have made and refresh my working copy accordingly. Nothing changes in the repository • commit - Add your changes to the CVS repository NETC 2002
CVS Directory Files $CVSROOT | +--oursite | | +--index.html,v | +--graphics | +--clover.png,v CVS directory contain instructions for building any previous version of the project NETC 2002
Time Travel • History files contain all the information required to construct the present version of each file. • Any previous version can be constructed • versions 1.1 or “as of May 3, 2002” can be resurrected NETC 2002
Handling Binary Files • Line Feed Format: Repository vs. Client • Keyword Substitution • Wrappers • cvs admin -kb NETC 2002
Web Access • Look at CVS tree in living color! • Browsing of a CVS repository • ViewCVS • http://viewcvs.sourceforge.net/ • CVSweb • http://people.freebsd.org/~fenner/cvsweb/ NETC 2002
Configuration Files • modules - definitions of your names for sites/projects • cvswrappers - set hook for transforming files on the way in or out of CVS (binaries) • commitinfo - checks to see if a commit is allowed based on policies • verifymsg - evaluates log message NETC 2002
Configuration Files • editinfo - program used to edit log message (*NIX) • loginfo - calls programs to run when commit is complete • cvsignore - ignore these files of mine (.BAK, .exe, .old, .ron) NETC 2002
Automations • e-mail others • update sites • check for formatting NETC 2002
What CVS is not • A substitute for management • A substitute for communication • Is not an automated testing program • Does not have a built-in process model • Does not have change control NETC 2002
Limitations • Best if you have an investment in *nix environments • Designed for programmers • Concepts are hard to grasp • Alien concept to designers NETC 2002
Helper Applications • LXR – Linux Cross Referencing Tool http://lxr.linux.no/ • Bonsai – Query contents of CVS archive-tree control http://www.mozilla.org/bonsai.html • TinderBox – prevent things from going up in flames – for large number of developers http://www.mozilla.org/tinderbox.html • Bugzilla – bug reporting and tracking http://bugzilla.mozilla.org/ NETC 2002
Alternatives • DAV - (Distributed Authoring and Versioning) http://www.webdav.org • arch - http://www.regexps.com/arch.html • Perforce – http://www.perforce.com/ NETC 2002
Demonstration • SourceForge http://www.sf.net • Bioinformatics.Org http://bioinformatics.org • ADEC http://savannah.ces.ncsu.edu NETC 2002