Download Building an Open Source Project and Community

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Software quality wikipedia , lookup

Object-oriented programming wikipedia , lookup

Python syntax and semantics wikipedia , lookup

Python (programming language) wikipedia , lookup

Transcript
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