Free Software ~~~~~~~~~~~~~ ``Free software'' is a matter of liberty, not price. To understand the concept, you should think of ``free'' as in ``free speech,'' not as in ``free beer.'' The freedom to run the program, for any purpose The freedom to study how the program works, and adapt it to your needs The freedom to redistribute copies so you can help your neighbor The freedom to improve the program, and release your improvements to the public, so that the whole community benefits (freedom 3). Access to the source code is a precondition for this. Free does not mean non-commercial. One usually has the freedom to sell copies, if one can and wants to do so. certain restriction may apply, such as packaging rules, access to code, availability to previous authors, etc. Linux Origins ~~~~~~~~~~~~~ Desktop Linux - graphical interfaces distance the user from text (text interface itself is powerful but not necessarily user-friendly) - "Linux is user-friendly, it's just picky about who its friends are" Open Source Philosophy: Cathedral and Bazaar ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Cathedral - typical commercial world model, with one or few people working on a closed project, releasing when it is finished - Bazaar - a lot of people cooperating on the project, many unfinished releases, open source Linux Development keypoints: 1. every good work of software starts with a personal need "necessity is the mother of invention" 2. good programmers know what to rewrite (or reuse) don't reinwent the square wheel :) 3. plan to throw somethign away code will not last forever, tools are sometimes abandoned, it's natural 4. with right attitude, you will find interesting problems 5. once you lose interest, find someone competent to take over 6. treat users as co-developers obvious advantages: many testers, many of whom can suggest solutions when there's an effective leader with good communication channels, a multi-person development is always better than one person 7. release early/often yes, there will be bugs, but the progress can be seen by users/codevelopers, and feedback will eb given 8. when enough people are looking at the project, most bugs will be found quickly and solution will be obvious to someone a fresh set of eyes is often useful, the more of those the better people have various skillsets, and a given bug might be complex to one, but easy to other 9. smart data structures and dumb code, not the other way around 10. treat your testers like they're your most valuable resource, they are 11. next best thing to having good ideas, is recognizing good ideas from others this is very important, as often one insist's on one's own idea, even though it may not be optimal 12. often the most innovative solution come from recognizing your concept was all wrong 13. perfection is achieved not when there's nothing more to add, but when there's nothing left to take away 14.any tool should be useful in the intended way, but truly great tools are used in unintended ways 15.disturb the data stream as little as possible (filter concept) 16. a security system is only as secure as its secret the best security system is one with no secret Reading ~~~~~~~ Cathedral & Bazaar: http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ Free Software Foundation: http://www.gnu.org/philosophy/free-sw.html