Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Python: Building an Open Source Project and Community SDForum Distinguished Speaker Series, 2/17/05 www.sdforum.org/dss Guido van Rossum Elemental Security, Inc. [email protected] [email protected] What to Talk About • Elemental Security, Inc. • Personal history • Python's history • Python, the language • Python, the software • The Python community • The Open Source community • Python's future • Questions Feb. 17, 2005 © 2005 Guido van Rossum 2 Elemental Security, Inc. • Enterprise security software • cross-platform policy compliance reporting and enforcement • Early stage startup in stealth mode • but not much longer! :-) • Using lots of Python • We're always hiring! • See http://www.elementalsecurity.com Feb. 17, 2005 © 2005 Guido van Rossum 3 Personal History • Age 4: first Lego kit • Age 10: first electronics kit (with two transistors) • Age 18: first computer program (on punched cards) • Age 21: first girlfriend :-) • 1982: "drs" math degree; joined CWI in Amsterdam • 1987: first worldwide open source release • 1989: started work on Python in spare time • 1995: moved to USA to join CNRI • 2000: got married • 2001: became a father • 2003: moved to California to join Elemental Security Feb. 17, 2005 © 2005 Guido van Rossum 4 Python's History • Amsterdam – Early '80s – development of ABC (by others) – 1990 – Python developed & used internally – 1991 – Python released to the world – Early '90s – growing world-wide user base • USA – 1994 – first Python workshop at NIST in Md – 1995 – Python's home moves to CNRI in Va – Late '90s – yearly Python conferences – 2000 – PythonLabs breaks loose from CNRI – 2001 – Python Software Foundation formed – 2003 – first PyCon organized by PSF Feb. 17, 2005 © 2005 Guido van Rossum 5 Python, the Langue • Dynamically typed object-oriented language • Python programs look like executable pseudo-code • Supports multiple paradigms: – procedural, object-oriented, some functional • High level data types and namespaces • A bit like Lisp and Smalltalk • Extensible in lower-level languages (C, Fortran, ...) – that's the origin of its OO nature! • Most controversial issues: – block structure through indentation – dynamic type checking Feb. 17, 2005 © 2005 Guido van Rossum 6 Example Function • def gcd(a, b): "Greatest common divisor of two integers" while b != 0: a, b = b, a%b return a • Note: – no declarations – indentation+colon for statement grouping – documentation string part of function syntax – parallel assignment (to swap a and b: "a, b = b, a") Feb. 17, 2005 © 2005 Guido van Rossum 7 Comparison to Other Languages (Apart from syntax differences!) • Perl: objects vs. regexps; TOOWTDI vs. TMTOWTDI • PHP: general purpose vs. web language • Java: dynamic vs. static typing (and all that follows) • C++: dynamic vs. static; memory management • Lisp: code != data • Smalltalk: namespaces • Haskell, ML, Prolog: different paradigms Feb. 17, 2005 © 2005 Guido van Rossum 8 Python, the Software • Open Source (non-GPL) • Used by: – Google, ILM, NASA, Disney, RealNetworks, Yahoo, ... – BitTorrent, GNU mailman, games, ... • Runs on: – Unix, Windows, Mac, Palm, VxWorks, PlayStation 2, ... • Bundled with: – Linux, Mac OS X • Written in portable ANSI C • Jython: Java version, translates to Java byte code • IronPython: C#/.NET version, translates to IL • Many 3rd party modules downloadable Feb. 17, 2005 © 2005 Guido van Rossum 9 Why Use Python? • Dynamic languages are more productive – Burton Group: P-languages 5x as productive C-languages • Python code is more readable • Python code is more maintainable – Burton Group: Python preferred for application development • Python has fast built-in very high-level data types • Developer time is more expensive than CPU time When Should You Not Use Python (Yet)? • Things like packet filters, MP3 codecs, etc. • Instead, write in C/C++ and wrap Python around it Feb. 17, 2005 © 2005 Guido van Rossum 10 Sample Use Areas • Server-side web programming (CGI, app servers) • Client-side web programming (HTML, HTTP, ...) • XML processing (including XML-RPC and SOAP) • Databases (Oracle, MySQL, PostgreSQL, ODBC, ...) • GUI programming (Qt, GTK+, Tcl/Tk, wxPython, ...) • Scientific/numeric computing (e.g. LLNL) • Testing (popular area for Jython) • Scripting Unix and Windows • Rapid prototyping (e.g. at Google) • Programming education (e.g. Oxford physics) – from middle school to college Feb. 17, 2005 © 2005 Guido van Rossum 11 The Python Community • On line: – website, newsgroups, mailing lists, IRC, blogs – many subcommunities (Zope, Twisted, SciPi, ...) – separate communities for developers and users • In stores: – books, T-shirts • In your face: – conferences, local user groups, meetups, workshops • Legally: – Python Software Foundation – Other organizations e.g. EuroPython, EuroZope, PyBiz Feb. 17, 2005 © 2005 Guido van Rossum 12 The Python Software Foundation • Is a membership organization – new members elected on merit – special regards for paying sponsor members • Is a 501(c)(3) non-profit – receives US tax-free donations • Owns or manages the copyrights to the software – dedicated to release under Open Source license • Takes financial responsibility for PyCon • Sponsors a tiny bit of Python development only • Does not control the developers – if anything, it's the other way around! Feb. 17, 2005 © 2005 Guido van Rossum 13 Python's Development Processes • Conservative release cycle – new functionality release every 12-18 months • 2.0, 2.1, 2.2, 2.3, 2.4 – bug fix releases as needed, usually 3-9 months • 2.3.1 ... 2.3.5 • PEP (Python Enhancement Proposals) – the RFC's of the Python world – can propose community processes as well as software • Checks and balances favoring slow growth – the user community wants it this way! • BDFL (Benevolent Dictator For Life; me) breaks ties – wields no actual power except through persuasion Feb. 17, 2005 © 2005 Guido van Rossum 14 Python's Developer Community • Pyramid structure: – 1 BDFL – 10 key developers ("lieutenants") – 100 core developers (checking privileges) – 1000 contributors – (numbers are rough approximations) • Key developers emerge through technical merit – there ain't no shortcut to the top • Other developers often have niche expertise – e.g. a specific module or a specific platform Feb. 17, 2005 © 2005 Guido van Rossum 15 Python's User Community • Often separate from the developer community • Many roles: – book authors, editors etc. – 3rd party module developers – teachers – self-appointed evangelists – professional users – packagers – bloggers – site administrators – Python-based businesses Feb. 17, 2005 © 2005 Guido van Rossum 16 Related Communities • Zope – web application server, CMS framenwork • Plone – built on top of Zope • Twisted – networking Swiss army knife • Scientific Python users • Database module developers • PyPy Feb. 17, 2005 © 2005 Guido van Rossum 17 The Open Source Community • Many separate communities – Linux, languages, lots of individual applications – Languages are biggest after Linux itself • Apache is a case apart – ASF served as model for PSF • Similarities, differences exist; examples: – Perl Foundation has no members – Apache has no single leader • Unifying principle – Open Source licenses (OSI-approved) • The Free Software Foundation Feb. 17, 2005 © 2005 Guido van Rossum 18 Python's Future • Slow growth • Python 3000 is years away (still!) • Optional type declarations? Feb. 17, 2005 © 2005 Guido van Rossum 19 Questions Feb. 17, 2005 © 2005 Guido van Rossum 20