Open Source Software Development Environment William Cohen NCSU CSC 591W January 16, 2008
Outline Community Communication Local machine environment
Community Mixture of people working on OSS projects: Volunteers: Want to learn more by doing Think project is cool Need project for something else Contributors for hire: Someone see value in the project Adding specific features Distributed contributors: Different companies Different continents Different timezones
Communication Email: Usually on mailing lists to allow wider participation Allows archiving information Good for people that are differing timezones IRC: Interactive Often used for quick questions Phone: Maybe have people awake at odd times due to TZ Face-to-face: Less frequent Usually at conferences, e.g. Ottawa Linux Symposium
Local Machine Environment Environment varies based on OSS project Components: Revision Control Systems (RCS) Editing Building Debugging
Revision Control Systems Manages code base for projects Identifies each set of changes Allow multiple versions (branches) of the software to be in development Enables retrieval of specific versions of software Perform comparison between different versions Allow merging of changes from one version to another
RCS Vocabulary Commit Log message Update Repository Checkout Working copy Revision, change, changeset Diff Tag Branch Merge Conflict Lock
Example RCS Systems Centralized (one master repository): CVS Subversion Distributed (multiple repositories): Mercurial Git Monotone
Editing Need write the code Some environments such as eclipse have built in editors Editor individual choice for many projects: Emacs vs. vi Pick what works for you Some editors have highlight and other support for various languages (e.g. Vim and emacs)
Building Have the required supporting software installed on the machine Configure Build Install
Configure Determine the build environment: Operating system Target architecture Where supporting library and include files are located Enable/disable optional features in software Specify installation location
Build Convert the human readable source code into computer can executable code “make” often used to drive build: Makefile lists dependencies for files Makefile contains rules on how to build file from other files
Install Puts software in appropriate locations Separate process after the code is built Usually requires root permissions May need to do other steps to: Inform OS about new shared libraries Enable background process
Debugging Need methods of inspecting code to determine what is going wrong or point out problem area Primitive debugging: Use print statements to print out pieces of information Less primitive: Compile software with additional symbols so debugger knows where things are located Use tools such as gdb or totalview