Concurrent and Open Source
Software Development
Anthony N. Ilukwe
SWE 4103 Seminar 2
November 18th, 2009.
Outline
• Introduction to Concurrent Development.
• Concurrent Development and Open Source
Development
• Concurrent Versioning System (CVS)
• Concurrent Development Scenarios
• Issues and Factors Affecting Concurrent
Development
• Concurrent vs Agile vs Traditional
Concurrent Software Development
• Two or more individuals or teams
simultaneously working on a number of
development activities in a project.
• More efficiency in meeting software
requirements.
• Fast delivery of product.
• Keeping pace with rapid software evolution.
Open Source Software
• Non-commercial software with free license and
distribution.
• Open access to users for concurrent,
collaborative development and access.
• Development involves individuals and teams in
multiple cities and countries all over the globe.
Open Source Development Principles
• Availability: Source code is accessible to the
whole world.
• Maximal scope of end users
• Free implementation
• All developers are equal. No discrimination.
Open Source Development Principles
• Open source Implementation can be offered
as extensions or subsets.
• Collaboration and concurrent development to
continually improve software product.
• Freedom to create good product without
external pressure.
CVS: Concurrent Versioning System
• Developed to aid concurrent development.
• Centralization of source code in remote
repository.
• Ability to rollback code to previous state in
saved history.
• Simultaneous file modification among any
number of individuals without “locking”.
CVS Terminology
• Working Copy
• Master Copy
• ‘Update’
• ‘Checkout’
• ‘Commit’
• ‘Diff’
• Trunk
• Branch
• ‘Merge’
• Tags
Merge vs Update
• Update
CVS compares working copy to repository.
Branch Tip (modified code)
Merge
Branch Root (repository state)
Trunk
• Merge
CVS compares branch tip to branch root.
Concurrent Open Source Development with CVS
Scenario: Franz and Sally
• Seattle
• Frankfurt
• Rio de Janeiro
• Sydney
Scenario: Franz and Sally
Saves his Continues with
Franz working his working
checkout copy, goes copy. Commits
to bed. his changes.
Work 3hrs Work 4hrs
8pm Frankfurt 11pm Frankfurt Midnight Frankfurt 6am Frankfurt 7am-11am Frankfurt
6am Sydney 9am Sydney 10am Sydney 4pm Sydney 5pm-9pm Sydney
Saves her
Sally working
checkout copy and
commits
Work 6hrs
CVS ‘Diff’ View
Method add(int a, int b)
{
Sally commit a + b; Committed to master copy
4pm (Sydney) }
//last modified by Sally
Method add(int a, int b)
{
Franz working
b + a; Conflict needs to be resolved
copy
}
9pm (Sydney)
Print(add(6,7));
//last modified by Franz
CVS ‘Diff’ View
Method add(int a, int b)
{
a + b; Committed to master copy
}
//last modified by Sally
Method add(int a, int b)
{
b + a; Conflict needs to be resolved
}
Print(add(6,7));
//last modified by Franz
CVS ‘Diff’ View
Method add(int a, int b)
{
a + b;
}
//last modified by Sally
Method add(int a, int b)
{
b + a;
}
Print(add(6,7)); Applied to committed code
//last modified by Franz
Concurrent Software Development
Communication - language barrier?
• Instant Messaging
• IRC: Internet Relay Chat (Channels)
• e-Mailing Lists: Google-groups, Yahoo-groups.
• Wikis
• Bug-tracking tools
Concurrent Software Development
Human Factor
• “Bazaar style”: no formal project leader.
• Sharing of knowledge and ideas among individuals.
• Open to easy application of most up-to-date tools
and techniques
• Recognition within Open Source community over
financial reward or promotion.
Questions?