Overview of FOSS
Open Source 101
The Quick and The Dirty of Open Source
© 2012 This presentation is provided with a Creative Commons BY-SA copyright license
What is Open Source?
The Open Source Initiative (OSI) defines open source in terms of Open Source Software. It requires the following criteria:
- OSI Definition for Open Source Software
- Free re-distribution of software
- Availability of source code with software
- Derived works allowed
- Integrity of author's source code is maintained
- No discrimination against person or groups
- No discrimination against fields of endeavor
What is Open Source? (cont.)
- In layman's terms
- Anything that comes with the source that can be legally used or modified at will.
- May include the ability or requirement to share with others.
Why is it good?
- Freedom (think William Wallace in Braveheart)
- Flexible (software contortion™)
- Why re-invent the wheel (recycle, it's good for the environment)
- More eyes = more secure (it takes a village)
- Avoiding vendor lock-in
- Not forcing unwanted upgrades just to maintain support or licensing terms
- Allowing use of multiple contractors to modify as needed
- Ability to utilize portions from several products to create the perfect solution
- Leveraging the work of a community of passionate developers
- Adding security because the more people that can see the source, the more people that can find and fix bugs.
Good for Government
- De facto transparency
- Governments work on behalf of their constituents.
- Since constituents are paying for the work, should they get the benefit of using it however they wish?
- Open source allows just that.
- In fact, anything the federal government does is not copyrightable for this very reason.
What it is not
- Buggy (not the kind pulled behind a horse)
- Poor quality
- Insecure (not talking about self-esteem)
- Unethical or illegal
- While it's true that some projects have these characteristics, these qualities are not because they are open source.
- Some proprietary or closed source software could be just as buggy, poor quality, insecure, or actually illegal, you just may not know about it because it's closed.
- The good news with open source projects is that you have the ability to fix the above issues on your timeline using your programmer of choice instead of relying on others and their priorities.
Who uses it?
- You do
- You use open source technology on a daily basis and probably don't even know it.
- Almost 65% of all servers use Linux (an open source operating system). Of those that use Microsoft Windows, many of those still use open source software to deliver web pages, such as Apache.
- Android smart phones and Apple Mac OSX are built upon open source operating systems.
- Mozilla Firefox is completely open source and Google Chrome is based on an open source browser called Chromium.
Why use anything else?
- Because it is not a miracle cure
- Must be analyzed on a case by case basis
- Some open source projects are in their infancy whereas proprietary alternatives may be turn-key solutions to your problem.
- The Total Cost of Ownership (TCO) should be evaluated on a case by case basis. It should include the cost of vendor lock-in for the entire platform as well as the cost of staff time for all custom enhancements.
- Open standards, protocols, and hardware
- Free software (as in free speech)
- Copyleft, public domain, software patents, and fair use
- Open source licenses such as GPL, BSD, Apache, and Creative Commons
- Transparency and net neutrality
- Open Source Initiative
- Free Software Foundation
- Mozilla: http://www.mozilla.org
- Chromium: http://www.chromium.org/
- Android: http://en.wikipedia.org/wiki/Android_%28operating_system%29
- Apple Mac OS X: http://en.wikipedia.org/wiki/OS_X#History
- Pierce Law Center: http://ipmall.info/hosted_resources/CopyrightCompendium/chapter_0200.asp
Plone Open Source CMS
- A content management system (CMS)
Plone - Name and Purpose
- Find what you are looking for...
- Allows for collaboration, while eliminating duplication of effort.
Plone is Open and Accessible
- Braille for "O" ... to be open and accessible. Available in many languages, built with accessibility in mind from the beginning.
Plone is Pluggable, extensible, amplifies your voice
- Power to integrate, modify, Plone Add-ons. The fact that logo looks like an XLR plug — a common connector for microphones — has also been noted.
A web application designed to make it easy for non-technical users to add, edit and upload content easily.
- Capable of managing content from anywhere with internet access.
Plone Design and Features
- Plone runs on the Zope application server, which is written in Python.
- Plone by default stores all information in Zope's built-in transactional object database (ZODB).
- Repeatable deployments with buildout
- Built-in scalability with Zeo
Plone Design and Features (cont.)
- Granular Role-based Security
- Excellent Workflow
- Very capable document management system
- Multilingual and unicode support is excellent
- Great community
Plone System Requirements
What is needed to run Plone?
- Operating System
Plone Operating System
- Plone can run on almost any modern operating system.
- Typically installed on a Linux distribution ex: OpenSuSe
- Officially: XP or later, OSX 10.4 or later, Linux 2.6 or later.
Plone Memory Requirements
- Plone can run on as little as 200MB to 300MB according to their documentation.
- There is a direct correlation between the speed of the site and RAM. Ex: As the site grows in content, users, product etc more RAM will be required for caching.
- We have traditionally used 1-2GB of RAM for our production sites.
- A single processor is fine for small deployments.
- We have used a single dual core AMD 64 processor for years for production sites.
- Recently we have virtualized and continue to only allocate a single processor.
- The CPU utilization is generally very low.
Plone Hardware (cont.)
- Storage requirements will naturally vary by project.
- Careertech production CMS weighs in at 164GB
- Horizon CMS just 5GB
- Traditionally we have used single SATA 7200RPM drives. Very low cost and have done well, going on 5 years.
- Software dependencies, not an inclusive list:
- libjpeg, readline, zlib, libbz2, libxslt, libxml2, python, gcc
- Note: allow your package manager to get these for you
Case Study - The CareerTech Website
Plone Hello! :-)
- 2003 - There's new technology and guess what? It's Free and Open Source.
Plone Hello - Accessibility
- HB2197 - Oklahoma's Electronic Information and Technology Accessibility Law
Plone Goodbye :-(
- Too much change, too quick, without process - can turn a good thing bad in the eyes of our users.
- In the eyes of rigid divisional areas, Plone was the devil. And if speaking its name was Taboo.
Plone in Hiding - Still Gives Freely
- While Plone and its magical abilities were embraced by the IT staff and a few divisions ready to move forward, it largely disappeared from view as an option for agency websites.
- With Accessibility laws about to pass, Plone didn't care it had been rejected, it still gave all it could.
- Plone stripped down to HTML templates created from the accessible output of Plone.
Plone Re-Invented - From the ground up
- Change is hard, but with some freebies it can be made a heck of a lot easier.
- WebTechs adoption, change is noticed.
- Plone silently and humbly pushes on, helping the content find accessible homes across the world wide web.
Plone Re-Invented - Through a Design Process
Plone Re-Invented - Permission Granted (minus the budget)
- Completely overhaul all the agency's websites. So what can be do without a budget?
- Web Team formed
- Web Design Process implemented
- Internal and External Audits of CareerTech (CT) Websites and their use of CT Branding.
- Through the years many CareerTech related websites formed to meet the needs of their expanding services to various customers.
Discovery - Ummm...
- Result: CareerTech had grown too localized and independent of one another and its brand equity was suffering. People knew of particular services, but rarely knew they were part of the CareerTech education system.
Discovery – Audit Results
- CT Website needs to be united and updated in the following areas:
- Brand Identity Design
- Consistent and Customer-focused Navigation Design
- Content Management System (CMS) for Technical Infrastructure
Discovery – Requirements
Discovery - Requirements
- Feature Requirements - Feedback from out current web contributors, aka WebTechs. Our customers have hearts.
- Content Requirements - Site-map Project workshops conducted for WebTechs.
- Total Site-maps: 60 total websites.
- 56 are major agency content areas or divisional websites
- 4 are web applications or other and will remain standalone systems.
- Requirements Document - Management sign-off before moving forward.
Design - Choosing the right CMS
- You have your requirements, time to shop.
- You mean other than plone? Yes, the wonderful world of open source CMS.
Design - Choosing the right CMS (cont.)
- CMS matrix
- Testing and demos
Design - Plone Rises!
Say wha? Why did Plone rise above the rest?
- Ease of end customer editing and it's folder like organization of content.
- Possibility to extend with other systems we have built on Plone and Zope framework.
Design - Plone Internally Branded: CT UNITED
- Plone is masked during migration. Combining the power of many sites into one.
Design - Plone Skin Before (Default)
Design - Plone Skin After (CT UNITED)
New Graphical User Interface to match current brand identity:
Design - Homepage Features
Design - Homepage Features (cont.)
View detailed explanation of the homepage features
Design - Search Feature
- You can search across the entire site! To accomplish this, simply use the Global Search Bar:
Design - Search Feature: Live and Instant Results
- The "Live Search" provides instant options as you type:
Design - Search Feature: Quickly Narrow Your Search
- You can quickly narrow your search at any time and focus only on one section or area of the site at a time:
Credits and Sources
- Plone.org - Any information on Plone that was not from my personal experience was retrieved here, because Plone is awesome.
Plone Development - Templates, Add-ons, and Coding
- Zope template attribute language (TAL)
- Form generation
- TAL allows dynamic generation of XHTML compliant web pages. Zope and Plone fans never hesitate to claim it's the best templating system in the world.
- Add and edit forms automatically generated from a schema.
- Buildout is the system building program that provides that ability to replicate a deployment.
- The Plone community created a rich add-on or plugin catalog. The slideshow on the home page of okcareertech.org extends one of the add-ons found in that catalog.
- Introduction and System Requirements
Trac - What is Trac?
- Project Management software
- Ticketing System “issue tracking”
- Versioning integration
- Wiki = A vehicle to provide project informaiton via the web to stake holders or other interested parties.
- Timeline = Similar to an event log, but web based. Displays transational events such as edits, uploads, and comments.
- Tickets = Feature rich CRM tool, include email notifications, custom components, custom reports etc.
Trac System Requirements
- HDD 3GB for our production site
- 1GB RAM
- Previously 1 SATA 7200 drive, runs great Virtualized
- You will need a Linux distro with apache and python, setuptools, Genshi “python library used for HTML output, SQLLite, PostgreSQL or MySQL.
- You can check it out from their repository or build it from source.
- Create a project environment
- Create the Apache directory
- Configure Authentication
Trac Installation cont.
- Create a project environment
- This is where you can configure customizations like email notifications etc.
- Create the Apache directory
- Configure Authentication
- Apache password file
- Provision users with Trac roles
Trac Integrated Versioning
- Integrated versioning is optional but huge!!!
- Integral development tool used by our developers.
Who's to blame
Process of managing the code and documentation of an evolving software system.
- Configuration management planning
- Defining the standards and procedures that should be used for configuration management
- Change management
- Analysing costs and benefits of proposed changes
- Version and release management
- Identifying and keeping track of the versions of a system
- System building
- Compiling and linking software components into an application
- Planning is largely decided by policy makers, but a good plan allows for adaptation for individual projects
- Change management is handled by the project request process
- VCS is what I'll be talking about
- An example of system building programs: make, buildout
- State or snapshot of a system's source (eg. code, documentation, other resources)
- Incrementing the leftmost number indicates a major enhancement or a great deal of additional functionality
- The middle number represents minor enhancements or additions
- The rightmost number counts bugfixes
Support for Version Control
All version control systems provide a basic set of capabilities
- Version and release identification
- Storage management
- Independent development
- Change History
- Project support
- Subversion (and many other VCSs) use delta compression for efficient storage
Open-source Version Control Systems
- Subversion (SVN)
Feedback & Questions
- Question time.