* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download inls572_class11_opensource
Survey
Document related concepts
Transcript
Internet Applications Spring 2008 Review • Last week – Ajax / APIs – JavaScript overview – RSS reader exercises 1-5 – Questions? This week • Open source software • Exercises – Installing & Configuring Wordpress – Exercises 6 & 7 from our RSS reader • MySQL functions in PHP • Recent events – http://www.photoshop.com/express – PWN2OWN 2008 What is Open Source? • What makes open source software? – Ability for user to modify? – Legal agreements? – Community based development? – Standards based? • OSI Definitions History of open source • ARPANET, Berkley, DEC, UNIX • Software was developed by users, was tied closely to hardware, was not commoditized • Bill Gates & the Homebrew computer club – the letter • Richard Stallman (1983), GNU & the Free Software foundation • Linus Torvalds (1991) Linux • 1995 – NCSA server & Apache • 1998 – Netscape & the Open Source Initiative History of open source (2) • • • • 1998 – IBM partners with Apache 1999 – Apache Software foundation 1999 – Star Office / Open Office 2001 – LAMP environments become commonplace • 2006 – Microsoft proposes their own OOXML standard for Office 2007 (recent events, more recent events) Factors of Open Source • • • • • • Licensing & Copyright Standards adherence Sustainability Modularity / extensibility Development Cost (free / fee) Support Cost (Local, licensed) Licensing and Copyright • Copyright • Public Domain • Mickey Mouse Protection Act • CopyLeft – You can re-distribute but not modify or change license of derivative software – GNU public license • CreativeCommons • “Creative Commons licenses give you the ability to dictate how others may exercise your copyright rights—such as the right of others to copy your work, make derivative works or adaptations of your work, to distribute your work and/or make money from your work.” (CreativeCommons) • Open Source Licenses What are Open Standards? • Facets of open standards – – – – – – – Vendor neutral Published Interoperable Public domain International Consensus Based Well Defined • Benefits – Cooperative development – Cost/Time savings • Examples – – – – – HTML XML Dublin Core PDFX PNG (Portable Network Graphics) – C# OSS & OS – the Open Document Format • Formats – Open formats • Pdf • Html • Xml – Closed formats • .doc • .ppt • psd • Controversies – OOXML vs. ODF • Microsoft vs. Open Office • Redhat Magazine Disruptive technologies • “release early and often, delegate everything you can, be open to the point of promiscuity” (Raymond) • Definitions: • A technological innovation that undermines the place of other technologies in the marketplace by significantly improving performance, saving time, or redefining expectations (more at Wikipedia) – Microsoft’s Halloween documents http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ The Cathedral and the Bazaar • Every good work of software starts by scratching a developer's personal itch. • Good programmers know what to write. Great ones know what to rewrite (and reuse). • When you lose interest in a program, your last duty to it is to hand it off to a competent successor. • Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging • Release early. Release often. And listen to your customers. • Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone. • Smart data structures and dumb code works a lot better than the other way around. • Eric Raymond, 1998 http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/index.html Cathedrals & Bazaars • Proprietary Unix Systems • Large Banking Systems • Integrated Library Systems • Internet Explorer • Microsoft Office • Itunes • Ebay? • Amazon? • Red Hat Linux • • • • • • • • • • Linux Evergreen Open Office Apache FireFox Facebook? Ebay? Amazon? Audacity Dspace Case Study - Unix • 1980s, 90s – Saw competition between AT&T, Novell, Sun, SCO • 1982 – Richard Stallman starts GNU project • 1992 – Linux is released under GNU license, created by Linus Torvalds – Linux is on ~12% of servers (while Apache runs nearly 50% of websites) • 1994 – Red Hat Linux released using a vendor support model – $50 included a distribution and initial support • 1998 – IBM invests in Red Hat, partnerships with Dell, Compaq, Intel Convergence ATOM Fedora Apache Dspace Copyright Perspective Slashcode MarcEdit Yahoo SDK Second Life viewer Google Code RSS Amazon Flickr Second Life Facebook Ebay Windows Mac OS Community Participation Development models • • • • • Distributed Project based Meritocracy based Community centric Sustainable? The Law of Large numbers, Brooks Law, and the long tail • Brooks Law – “adding manpower to a late software project makes it later (Brooks, 1975). • “bugs tend strongly to cluster at the interfaces between code written by different people, and that communications / coordination overhead on a project tends to rise with the number of interfaces between human beings” (Raymond) • Law of Large Numbers • “Given a sample of independent and identically distributed random variables with a finite expected value, the average of these observations will eventually approach and stay close to the expected value.” (Wikipedia, Freund) • The Long tail • “realize significant profit out of selling small volumes of hard-tofind items to many customers, instead of only selling large volumes of a reduced number of popular items (Anderson, 2004) Economic models • Support sellers – Sell support for open products • Loss Leaders – Offer core components for free • Sell it / free it – Open proprietary systems when market demands it • Accessorizing – Sell add-on modules • Service enabling – Create applications that enable revenue-generating service • Branding – Differentiation in the market by perceived value Support models • Emergence of hybrid models: – Community developed software, community provided support – Community developed software – paid support – Branded software based on OS platform, paid support – Grant funded development, community continuation Technologies for this class • • • • Linux Apache PHP MySQL • LAMP, WAMP, MAMP – Linux (windows/mac), Apache, MySQL, Php – http://en.wikipedia.org/wiki/Comparison_of_WAMP s Open Source investigation • Form into four groups. Each group should pick one of the applications below and do some research to answer these questions: • Firefox, RedHat Linux, Apache web server, Facebook, PHP, Ruby, Dspace (Digital Library application), Ubuntu, Sun Java. 1. 2. 3. 4. 5. 6. • Is this application Open Source Software? What kind of license does it have? What is the development model (individual, community, etc)? How active is the community surrounding the application? How popular does it seem? Is it sustainable? Take 15-20 minutes to research, we will briefly report our findings XAMPP & Wordpress exercise • Exercise goals • Configuration – Overview of the XAMPP directory structures – Overview of Wordpress platform & structure • Conditions & cautions • Playtime Skills needed for exercises 6 & 7 • Ex 6 – MySQL • SQL syntax • MySQL functions in PHP • Ex 7 – Forms & form processing • Form coding and actions • Global variables • Page Logic MySQL • Open Source Relational Database • http://mysql.com • At SILS – pearl.ils.unc.edu • Relational database features • Tables, Indexes, Queries • SQL (Structured Query Language) SQL Skills • SQL – Structured query language – Uses a syntax with words like (select, where, insert, delete, from) to create logical statements • Select column from tablename where limit = ‘value’; • Insert into table (column, column) values (value 1, value 2); – A good reference • http://www.w3schools.com/sql/sql_quickref.asp SQL Examples • SELECT statements • SELECT * from feeds where username = 'mitcheet'", • SELECT * from feeds where id = ".$_REQUEST['feed'] • INSERT statements • INSERT INTO feeds (username, feedname, feedURL) values ('".$_REQUEST['username']."', '".$_REQUEST['feedName']."', '".$_REQUEST['feedUrl']."')"; • DELETE statements • DELETE from feeds where id = ".$_REQUEST['feedId'] MySQL functions in PHP • Create a connection to the database • $connection = mysql_connect($dbserver, $username, $pass); • Select a database • mysql_select_db($database, $connection); • Run a query • $result = mysql_query("SELECT * from feeds where username = 'mitcheet'", $connection); • Get the results of the query as an array • while ($row = mysql_fetch_array($result, MYSQL_NUM)) {} • Close the connection • mysql_close($connection); MySQL Example function showFeed () { $connection = mysql_connect ("pearl.ils.unc.edu", "inls572_spring08", "yreuq572"); mysql_select_db("inls572_spring08", $connection); $result = mysql_query("SELECT * from feeds where id = ".$_REQUEST['feed'], $connection); while ($row = mysql_fetch_array($result, MYSQL_NUM)) { echo $row[3]; } } Next week • Guest Speaker • More on SQL, JavaScript, and application management