1 / 25

Open Source Software: A Case Study

Open Source Software: A Case Study. Scott A. James, President Computer Consulting Specialists, Inc. Sarasota, Florida. What is Open Source Software. www.opensource.org says 10 things, but we summarize as: Software in a community that is: Freely Used (no warranty, no limits on usage)

verne
Download Presentation

Open Source Software: A Case Study

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Open Source Software: A Case Study Scott A. James, President Computer Consulting Specialists, Inc. Sarasota, Florida

  2. What is Open Source Software • www.opensource.org says 10 things, but we summarize as: • Software in a community that is: • Freely Used (no warranty, no limits on usage) • Freely Extended (must share source, represent original works and owners) • Many varieties of licenses, they ARE different. Know what they mean. • Check out www.opensource.org for large list and details of each. Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

  3. Summary A case study of a project created with open source technology. • Project analysis: Goals & Resources • Technology: TCO, Evaluation & Decision • Implementation: Building the project • Lessons: What was learned • Resources Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

  4. Project Analysis What are we doing? What do we have?

  5. Project Analysis: Goals • Project – functional, scalable, simple. • Timeline – when will each phase roll out? • Budget – how much money do we have? • Longevity – short term utility or long term application? • Equity – invest time in ourselves, or dollars in outside vendors? Inexpensive, Build Fast, Quality: pick any two. Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

  6. Project Analysis: Resources • Staff Knowledge – what is current ability of staff? • Time – how long do we have? • Money – how much do we have? • Technology – what is already in use? Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

  7. Technology An Evaluation of Open Source Software

  8. Technology: Total Cost of Ownership (TCO) • Startup Time: days or weeks? • Development Time: weeks, months, years? • Startup Money: cost of acquisition • Development Money: recurring costs and time. • Equity: $ pay to outside, vs. pay to ourselves • Risk: Dependency on outside trends? • Support: availability? Cost? Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

  9. Technology: Investigation • LAMP: Linux, Apache, MySQL, PHP • Windows: ASP/ActiveX, .NET, SQL Server • IBM WebSphere, Sun ONE, HP Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

  10. Technology: Evaluation for TCO • Tech staff has both Windows and UNIX background • We have time (several months ok) • Low budget, little money to spend. • Prefer to invest equity in ourselves. • Would like to reduce risk from outside tech trends. • Need solid, reliable server that requires little maintenance. • Need development questions/problems solved, but not real time. Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

  11. Technology: Decision to use LAMP • This is a new project (no migration necessary) • Our staff has UNIX (Linux) experience • Large user support community for core technology • Invest into own technology equity • Reduce risk of reliance on technology trends • Low cost to entry (no license or hardware fees) Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

  12. Implementation Putting Open Source Software to Work

  13. Implementation: Development Environment • Linux server, Windows 2000 & XP workstations. • Apache, MySQL and PHP. • CVS & e-mail/IM for configuration management. • Smarty template engine (smarty.php.net) • PEAR application framework (pear.php.net) • SafeSQL - PHP Class to prepare SQL statementsGoogle to find. Written by author of Smarty. Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

  14. Implementation: Linux Server Preperation • Linux Mandrake (www.mandrakesoft.com) • Apache 2.0 (www.apache.org) • MySQL 3.23 (www.mysql.com) • PHP 4.2 (www.php.net) Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

  15. Implementation: Development Preparation • CVS for version control on Linux server • SAMBA for windows networking. • TortoiseCVS on Windows (www.tortoisecvs.org)Better than WinCVS (it’s a powerful shell extension) • Language syntax sensitive editor (Ultra Edit, Multi-Edit, vim, etc.) • Apache and PHP on local workstations for unit testing (Linux version on server, Win32 versions on workstations). Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

  16. Implementation: Development • Data model with subject matter experts, talk through 1-to-Many relationships, sanity check. • Design PHP class hierarchy for business N-tier layer. • Create shim PHP classes for web designers to use while building and testing HTML templates. This provides ability to develop GUI in parallel. • Smarty template syntax can be HTML syntax compliant for use with Dreamweaver. Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

  17. Implementation: Open Source value, case in point • We found a useful PHP class for preparing SQL statements called SafeSQL. • However, it did not provide all the functionality we wanted. • In about 2 hours we modified the source to add our features. • We then e-mailed a copy back to the author; that these features may be included in future versions (as he my decide). • We enjoy similar features added by other developers. Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

  18. Implementation: Use the Support Channels • Docs (www.apache.org, www.php.net)Save time with on-line look-up (MySQL, PHP)RTFM (Read The Fine Manual) • www.google.com - Best way to search the Internet.Search for specifics like: functions, methods and error numbers • Forums (www.phpinsider.com, www.devshed.com)Register early, try to skim articles regularly. • Wiki – web page self regulated by community, very useful.The Smarty template engine has a great Wiki. • Plan for time to interact with open source community-- support is usually not real time. Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

  19. Implementation: Flexible environment for unit testing • Perform unit testing on local Windows workstations using Windows versions of Apache, PHP and MySQL. • Regression testing is desirable, use automated methods as much as possible. • CVS provides “hooks” to execute scripts on files as they are committed to repository. Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

  20. Implementation: Deployment on servers • Deploy using automated script – fewer human actions means fewer mistakes. • Look at using SSH, TAR, RSYNC for ways to move software between hosts. • Use CVS to ‘tag’ releases for consistent software bundling. Avoid temptation to copy individual files. • Adopt versioning nomenclature like: 1.2.4.0-beta1(major.minor.fix.build) • Batch bugs/features into small groups of changes for frequent (sometimes weekly) updates. Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

  21. Lessons Learned What have we learned from our experience?

  22. Lessons Learned: Support • Subscribe to on-line newsletters early on. Look for digest versions and skim for understanding of product and current support. • Plan time for support from open source community. Response time may be days. • Don’t be afraid to ask for help. Be courteous to the open source community. Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

  23. Lessons Learned: Development • Do a small project (a prototype) to test development staff and environment. Set goals, and track progress. • Schedule tasks in parallel to allow for workflow snags and interacting with open source community. • Use in-source documentation tools (www.doxygen.org, www.phpdoc.de) to aid staff and to monitor progress. • Tap into local support network early in the project:user groups, business associates, consultants. Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

  24. Lessons Learned: Configuration Management • Frequently commit (check-in) files to CVS and tag frequently (release). • Goal: Only commit working code, and never tag broken code. • Use CVS for all files, including docs, libraries, binaries. Makes for easy reproduction of whole environment for reliable testing. • Do unit testing on local workstations with Apache & PHP running locally. Build this into the design. • Have fun, and learn a lot! Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

  25. Resources • Philosophy & Legal:www.opensource.org • Fun:www.slashdot.org For these slides and more visit: Computer Consulting Specialists, Inc. www.computercsi.com Scott@computercsi.com 941-320-7937 Scott James Computer Consulting Specialists, Inc. SuncoastLinux.com

More Related