SlideShare a Scribd company logo
1 of 32
Download to read offline
The Lives of Others
Open-Source Development Practices Elsewhere


              Peter Eisentraut

             Senior Software Engineer
                Lab Development
              F-Secure Corporation


                PGCon 2009
Ground Rules




               I don’t know
               everything.
               If you are involved
               in other projects,
               chime in.
               Discussion
               welcome
Whom To Learn From?

    Look at the biggest
    open-source projects
    Metric: installation
    footprint, installation
    count
    Where to find those
    numbers?
         the Universal Debian
         Database
         doesn’t count OS
         distributions such as
         Debian, Fedora,
         FreeBSD,
         OpenSolaris
         Java also
         underrepresented
Sidetrack: The Universal Debian Database


  Example: query for packages with largest install footprint and
  popularity

  SELECT rank() OVER (ORDER BY score DESC),
         source,
         sum(installed_size::numeric * insts) AS score
  FROM packages JOIN popcon_src USING (source)
  WHERE distribution = 'debian'
    AND release = 'lenny'
    AND component = 'main'
    AND architecture IN ('all', 'i386')
  GROUP BY source
  ORDER BY score DESC
  LIMIT 100;
The Biggest Projects




  OpenOffice.org, Linux, GCC, GCJ, Qt, Mesa, KDE, Glibc,
  Firefox, MySQL, Boost, Perl, Samba, LDP, Vim, Gtk+, FFmpeg,
  OPAL, Evolution, OpenJDK, Gtk−−, wxWidgets, PyQt, Gimp, TeX Live,
  X.org, SCOWL, OpenSSL, Thunderbird, Xalan, Berkeley DB, ncurses,
  Foomatic, SELinux, Gutenprint, PHP, GNU binutils, Python, KOffice, Wine, Ruby, ICU,
  LAPACK, Webkit, PostgreSQL, glib, libsigc++, Inkscape, PWLib, GNOME, Apache, HPLIP, Xerces,
  Libxml, GNU Gettext, CUPS, SANE, Net-SNMP, Ghostscript, Mono, Eclipse, Pidgin
PostgreSQL — A Role Model?




  Things to keep in mind:
   1. Process details are hard to gather for outsiders.
   2. Other projects are not without problems.
   3. Many of them have worse problems than we do.
   4. Others look at the PostgreSQL project for advice and
      inspiration.
   5. It’s amazing that anything gets done. :-)
Version Control




     In the lead: Git, Subversion
     Also-rans: CVS, Mercurial, Bazaar
     Commercial systems phased out
     Automatic conversion services in use
Build Tools




     Autotools continue to rule!
     CMake might be challenger
         well-known usage: KDE, MySQL (for Windows only)
         uptake still slow (88 of 12000 packages in Debian)
     That’s it, for C programs.
Documentation Tools



     DocBook emerged as the standard.
         XML vs. SGML
     Texinfo (only at GNU)
     man pages
     HTML
     some specialized solutions:
         Python: reStructuredText
         Perl: Perldoc
         Qt: qdoc
Discussion Forums




     Mailing lists are clearly the standard.
     But don’t argue about Reply-To!
     Usenet is dead. :-)
     Web-forums serve support requests and newbies better.
     . . . and then there are bug-tracking systems.
Bug Tracking




     Bugzilla is king (often heavily themed and customized).
     contenders: Roundup, Jira, *forge
     marginal: RT
Coding Styles




     Coding style appears to be an issue specific to C/C++.
     Besides the GNU style, various random styles can be
     found.
     CVS $Keywords$ are pretty much gone.
     Patch styles (-c vs. -u) are an unsettled issue.
Wikis




        About 1/3 of projects have active wikis.
        MediaWiki is most popular.
The Foundries

     Project-specific *forge services are rare.
     More popular: Common repo and Bugzilla for everyone.
     This has implications for management of sub-/sister
     projects.
Write Your Own Tools



  Some tools are side-products of other projects:
      ccache
      tmalloc
      distcc
      Bugzilla
      PatchTracker
      Contributions to build tools (autoconf, cmake, etc.) are
      welcome.
Release Scheduling


  Trend is toward time-based releases:
      OpenBSD (6 months)
      GNOME (6 months)
      Ubuntu (6 months)
      Debian (18 months)
      OpenOffice.org (6 months)
      PostgreSQL (12 months)
      Linux kernel (3 months)
      (MySQL)
      ...
  Note: The upgrade issue is fairly unique to PostgreSQL.
Minor Releases




     Stable + development branch is standard.
     Some maintain more than one stable, e.g., Samba.
     PostgreSQL’s 5+ back branches have got to be a record.
     MySQL might come close.
     Minor releases can also have a fixed schedule.
     (OpenOffice.org: 3 months)
The Rewrite Trap




  Major reengineering efforts usually have schedule and/or
  quality problems. Recall:
      Samba 4
      Perl 6
      KDE 4
Pre-Releases




     Beta, RC are standard.
     Even/odd model (Linux, Perl) is obsolescent.
     Alpha/milestone releases are rare.
Release Manager




     Some projects appoint rotating release managers.
     In other projects, these roles fall into place by tradition.
Downstream Packaging

  Various approaches:
      Tight integration, e.g.: PostgreSQL, KDE, Samba
      Laissez-faire, e.g.: Linux, GCC, MySQL
      Conflict-prone, e.g.: OpenOffice.org, Mozilla
Security Handling




                    Most sizeable projects have
                    special security
                    contacs/teams.
                    CVE numbers are
                    standard.
                    Note: Non-database
                    projects have a
                    skewed/different view of
                    “security”.
Committers



     Surprisingly, many projects seem to do with very few
     committers.
     Some projects have very large amounts of committers.
     I think this is strongly related to the software architecture
     and project layout. Compare:
         KDE has everything in one repo; hundreds of committers.
         PostgreSQL has PgFoundry etc.
         Linux kernel uses a very different model.
     Managing external committers tends to be a problem for
     company-run projects.
Project Steering




      Company-run projects have a clear direction (usually).
      In principle, the developers create their own destiny
      everywhere else.
      Some projects have elected boards etc., but these don’t
      have technical influence.
      Most projects are steered by the “old farts”.
Forking



     Forking continues to happen.
     Contemporary cases: Go-OO.org, eglibc, OurDelta,
     Iceweasel
     Reasons:
          Faster/different feature advancement
          Licensing or trademark conflicts
          Company vs. community barrier
          Personal problems
     Many commercial forks of open-source DBMS:
     EnterpriseDB, Greenplum, Truviso, Kickfire, Infobright
Licensing




     Distributors are incredibly picky.
     So are legal departments.
     Well-known licenses are important.
     Consistent and uniform licensing helps.
     Weird licensing can kill projects.
     Many projects have had their share of problems: KDE (Qt),
     Linux (SCO, firmware), XFree86, Mambo, Apache vs.
     OpenBSD, PostgreSQL (GPL), OpenSSL vs. Debian
Copyright Notices


     Amateur legal opinion: Copyright notices are more or less
     meaningless. But they could help if you plan to go to court.
     Most company-sponsored code has standard copyright
     headers.
     FSF and Apache use copyright assignments and careful
     changelog tracking.
     Most other projects are pretty random.
         Initial author: Perl, Samba
         Various authors: KDE, Vim
         “Fake” organizations: OpenSSL, (PHP), PostgreSQL,
         wxWidgets
         nothing: Python
     Many (smaller) projects apply the GPL wrongly.
Legal and Funds Management




  Four models:
      Run and owned by a single company: OpenOffice.org,
      MySQL, Qt, Berkeley DB, CUPS, (PHP)
      Run and controlled by a non-profit association: GCC, KDE,
      Mozilla, GNOME, Apache, (Fedora)
      Loosely organized but someone in the background: Linux,
      PostgreSQL, Debian, OpenBSD
      Unorganized: Vim
Standards Organizations




  OSS participation is possible, e. g.:
      OpenOffice.org
      Linux/glibc
      KDE/GNOME/X.org/Freedesktop
      MySQL, PostgreSQL, . . . ?
The Average Sizeable Open-Source Project
2010/2011




     Written in C (or Java)
     GPL
     Source in Git
     Bugs in Bugzilla
     Built with Autoconf (or Maven)
     Released every 6 months
Open Issues for PostgreSQL



     Version control
     system
     Web forum
     Bug tracking
     system
     CMake?
     DocBook XML
     Release cycle
     length
     Upgradability
Rights and Attributions



  This presentation “The Lives of Others: Open-Source Development Practices Elsewhere” was authored by Peter
  Eisentraut and is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported
  license.

         The image on page 2 is “Comiskey Park (US Celluar Field)” by Flickr user Zol87, available under the
         Creative Commons Attribution-Noncommercial 2.0 Generic license.
         The image on page 3 is “Apples and oranges” by Flickr user Jeff Tabaco, available under the Creative
         Commons Attribution-Noncommercial-Share Alike 2.0 Generic license.
         The image on page 14 is “Valimon asema Helsinki” from Wikipedia and is in the public domain.
         The image on page 21 is “Watersfalls, Mesa Arts Center” by Flickr user cobalt123, available under the
         Creative Commons Attribution-Noncommercial-Share Alike 2.0 Generic license.
         The image on page 22 is “Suomenlinna” by Flickr user Anosmia, available under the Creative Commons
         Attribution 2.0 Generic license.
         The image on page 31 is “Committee meeting” by Flickr user Matt and Kim Rudge, available under the
         Creative Commons Attribution-Noncommercial 2.0 Generic license.

More Related Content

What's hot

Packaging for the Maemo Platform
Packaging for the Maemo PlatformPackaging for the Maemo Platform
Packaging for the Maemo PlatformJeremiah Foster
 
Poky meets Debian: Understanding how to make an embedded Linux by using an ex...
Poky meets Debian: Understanding how to make an embedded Linux by using an ex...Poky meets Debian: Understanding how to make an embedded Linux by using an ex...
Poky meets Debian: Understanding how to make an embedded Linux by using an ex...Yoshitake Kobayashi
 
Generating Linked Data descriptions of Debian packages in the Debian PTS
Generating Linked Data descriptions of Debian packages in the Debian PTSGenerating Linked Data descriptions of Debian packages in the Debian PTS
Generating Linked Data descriptions of Debian packages in the Debian PTSolberger
 
How%20to%20install%20PHP%20on%20Linux%20_%20laffers
How%20to%20install%20PHP%20on%20Linux%20_%20laffersHow%20to%20install%20PHP%20on%20Linux%20_%20laffers
How%20to%20install%20PHP%20on%20Linux%20_%20lafferstutorialsruby
 
Distributions and package management in the containers era
Distributions and package management in the containers eraDistributions and package management in the containers era
Distributions and package management in the containers eranussbauml
 
PuppetConf 2016: Puppet on Windows – Nicolas Corrarello, Puppet
PuppetConf 2016: Puppet on Windows – Nicolas Corrarello, PuppetPuppetConf 2016: Puppet on Windows – Nicolas Corrarello, Puppet
PuppetConf 2016: Puppet on Windows – Nicolas Corrarello, PuppetPuppet
 
How to build Debian packages
How to build Debian packages How to build Debian packages
How to build Debian packages Priyank Kapadia
 
Version Control & Git
Version Control & GitVersion Control & Git
Version Control & GitCraig Smith
 
Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016Clark Everetts
 
How to deploy PHP projects with docker
How to deploy PHP projects with dockerHow to deploy PHP projects with docker
How to deploy PHP projects with dockerRuoshi Ling
 
Глеб Смирнов: Что нового в FreeBSD 10.0
Глеб Смирнов: Что нового в FreeBSD 10.0Глеб Смирнов: Что нового в FreeBSD 10.0
Глеб Смирнов: Что нового в FreeBSD 10.0Yandex
 
Corwin on Containers
Corwin on ContainersCorwin on Containers
Corwin on ContainersCorwin Brown
 
Virtual Bolt Workshop - 6 May
Virtual Bolt Workshop - 6 MayVirtual Bolt Workshop - 6 May
Virtual Bolt Workshop - 6 MayPuppet
 
Linux server world
Linux server worldLinux server world
Linux server worldAkshat Singh
 
Modulesync- How vox pupuli manages 133 modules, Tim Meusel
Modulesync- How vox pupuli manages 133 modules, Tim MeuselModulesync- How vox pupuli manages 133 modules, Tim Meusel
Modulesync- How vox pupuli manages 133 modules, Tim MeuselPuppet
 
Writing Services with ZF2
Writing Services with ZF2Writing Services with ZF2
Writing Services with ZF2Mike Willbanks
 
Linux Kernel Introduction
Linux Kernel IntroductionLinux Kernel Introduction
Linux Kernel IntroductionSage Sharp
 

What's hot (20)

Packaging for the Maemo Platform
Packaging for the Maemo PlatformPackaging for the Maemo Platform
Packaging for the Maemo Platform
 
Poky meets Debian: Understanding how to make an embedded Linux by using an ex...
Poky meets Debian: Understanding how to make an embedded Linux by using an ex...Poky meets Debian: Understanding how to make an embedded Linux by using an ex...
Poky meets Debian: Understanding how to make an embedded Linux by using an ex...
 
ABCs of docker
ABCs of dockerABCs of docker
ABCs of docker
 
Generating Linked Data descriptions of Debian packages in the Debian PTS
Generating Linked Data descriptions of Debian packages in the Debian PTSGenerating Linked Data descriptions of Debian packages in the Debian PTS
Generating Linked Data descriptions of Debian packages in the Debian PTS
 
Debian packaging
Debian packagingDebian packaging
Debian packaging
 
How%20to%20install%20PHP%20on%20Linux%20_%20laffers
How%20to%20install%20PHP%20on%20Linux%20_%20laffersHow%20to%20install%20PHP%20on%20Linux%20_%20laffers
How%20to%20install%20PHP%20on%20Linux%20_%20laffers
 
Distributions and package management in the containers era
Distributions and package management in the containers eraDistributions and package management in the containers era
Distributions and package management in the containers era
 
PuppetConf 2016: Puppet on Windows – Nicolas Corrarello, Puppet
PuppetConf 2016: Puppet on Windows – Nicolas Corrarello, PuppetPuppetConf 2016: Puppet on Windows – Nicolas Corrarello, Puppet
PuppetConf 2016: Puppet on Windows – Nicolas Corrarello, Puppet
 
How to build Debian packages
How to build Debian packages How to build Debian packages
How to build Debian packages
 
Version Control & Git
Version Control & GitVersion Control & Git
Version Control & Git
 
Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016
 
hw1a
hw1ahw1a
hw1a
 
How to deploy PHP projects with docker
How to deploy PHP projects with dockerHow to deploy PHP projects with docker
How to deploy PHP projects with docker
 
Глеб Смирнов: Что нового в FreeBSD 10.0
Глеб Смирнов: Что нового в FreeBSD 10.0Глеб Смирнов: Что нового в FreeBSD 10.0
Глеб Смирнов: Что нового в FreeBSD 10.0
 
Corwin on Containers
Corwin on ContainersCorwin on Containers
Corwin on Containers
 
Virtual Bolt Workshop - 6 May
Virtual Bolt Workshop - 6 MayVirtual Bolt Workshop - 6 May
Virtual Bolt Workshop - 6 May
 
Linux server world
Linux server worldLinux server world
Linux server world
 
Modulesync- How vox pupuli manages 133 modules, Tim Meusel
Modulesync- How vox pupuli manages 133 modules, Tim MeuselModulesync- How vox pupuli manages 133 modules, Tim Meusel
Modulesync- How vox pupuli manages 133 modules, Tim Meusel
 
Writing Services with ZF2
Writing Services with ZF2Writing Services with ZF2
Writing Services with ZF2
 
Linux Kernel Introduction
Linux Kernel IntroductionLinux Kernel Introduction
Linux Kernel Introduction
 

Viewers also liked

Das leben der anderen: The lives of others.
Das leben der anderen: The lives of others. Das leben der anderen: The lives of others.
Das leben der anderen: The lives of others. Eccentric Monika
 
Ericsson Mobility Report - The lives of others
Ericsson Mobility Report - The lives of othersEricsson Mobility Report - The lives of others
Ericsson Mobility Report - The lives of othersEricsson
 
Most Wanted: Future PostgreSQL Features
Most Wanted: Future PostgreSQL FeaturesMost Wanted: Future PostgreSQL Features
Most Wanted: Future PostgreSQL FeaturesPeter Eisentraut
 
Porting Applications From Oracle To PostgreSQL
Porting Applications From Oracle To PostgreSQLPorting Applications From Oracle To PostgreSQL
Porting Applications From Oracle To PostgreSQLPeter Eisentraut
 
Getting Started with PL/Proxy
Getting Started with PL/ProxyGetting Started with PL/Proxy
Getting Started with PL/ProxyPeter Eisentraut
 
Programming with Python and PostgreSQL
Programming with Python and PostgreSQLProgramming with Python and PostgreSQL
Programming with Python and PostgreSQLPeter Eisentraut
 

Viewers also liked (6)

Das leben der anderen: The lives of others.
Das leben der anderen: The lives of others. Das leben der anderen: The lives of others.
Das leben der anderen: The lives of others.
 
Ericsson Mobility Report - The lives of others
Ericsson Mobility Report - The lives of othersEricsson Mobility Report - The lives of others
Ericsson Mobility Report - The lives of others
 
Most Wanted: Future PostgreSQL Features
Most Wanted: Future PostgreSQL FeaturesMost Wanted: Future PostgreSQL Features
Most Wanted: Future PostgreSQL Features
 
Porting Applications From Oracle To PostgreSQL
Porting Applications From Oracle To PostgreSQLPorting Applications From Oracle To PostgreSQL
Porting Applications From Oracle To PostgreSQL
 
Getting Started with PL/Proxy
Getting Started with PL/ProxyGetting Started with PL/Proxy
Getting Started with PL/Proxy
 
Programming with Python and PostgreSQL
Programming with Python and PostgreSQLProgramming with Python and PostgreSQL
Programming with Python and PostgreSQL
 

Similar to The Lives of Others: Open-Source Development Practices Elsewhere

Some wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily useSome wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily usearun.arwachin
 
An Introduction To Linux Development Environment
An Introduction To Linux Development EnvironmentAn Introduction To Linux Development Environment
An Introduction To Linux Development EnvironmentS. M. Hossein Hamidi
 
BUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesBUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesLinaro
 
Containers for Science and High-Performance Computing
Containers for Science and High-Performance ComputingContainers for Science and High-Performance Computing
Containers for Science and High-Performance ComputingDmitry Spodarets
 
You think you're not a target? A tale of three developers...
You think you're not a target? A tale of three developers...You think you're not a target? A tale of three developers...
You think you're not a target? A tale of three developers...Speck&Tech
 
Alexander Kutsan: “C++ compilation boost”
Alexander Kutsan: “C++ compilation boost” Alexander Kutsan: “C++ compilation boost”
Alexander Kutsan: “C++ compilation boost” LogeekNightUkraine
 
UniK - a unikernel compiler and runtime
UniK - a unikernel compiler and runtimeUniK - a unikernel compiler and runtime
UniK - a unikernel compiler and runtimeLee Calcote
 
Systemd: the modern Linux init system you will learn to love
Systemd: the modern Linux init system you will learn to loveSystemd: the modern Linux init system you will learn to love
Systemd: the modern Linux init system you will learn to loveAlison Chaiken
 
Managing Software Dependencies and the Supply Chain_ MIT EM.S20.pdf
Managing Software Dependencies and the Supply Chain_ MIT EM.S20.pdfManaging Software Dependencies and the Supply Chain_ MIT EM.S20.pdf
Managing Software Dependencies and the Supply Chain_ MIT EM.S20.pdfAndrew Lamb
 
Dev environment for linux (Mainly KDE and python)
Dev environment for linux  (Mainly KDE and python)Dev environment for linux  (Mainly KDE and python)
Dev environment for linux (Mainly KDE and python)Assem CHELLI
 
The adoption of FOSS workfows in commercial software development: the case of...
The adoption of FOSS workfows in commercial software development: the case of...The adoption of FOSS workfows in commercial software development: the case of...
The adoption of FOSS workfows in commercial software development: the case of...dmgerman
 
Linux Distribution Collaboration …on a Mainframe!
Linux Distribution Collaboration …on a Mainframe!Linux Distribution Collaboration …on a Mainframe!
Linux Distribution Collaboration …on a Mainframe!All Things Open
 
Iz Pack
Iz PackIz Pack
Iz PackInria
 
Systemd for developers
Systemd for developersSystemd for developers
Systemd for developersAlison Chaiken
 
The Source Control Landscape
The Source Control LandscapeThe Source Control Landscape
The Source Control LandscapeLorna Mitchell
 

Similar to The Lives of Others: Open-Source Development Practices Elsewhere (20)

Some wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily useSome wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily use
 
An Introduction To Linux Development Environment
An Introduction To Linux Development EnvironmentAn Introduction To Linux Development Environment
An Introduction To Linux Development Environment
 
BUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesBUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and Approaches
 
Foss Presentation
Foss PresentationFoss Presentation
Foss Presentation
 
Containers for Science and High-Performance Computing
Containers for Science and High-Performance ComputingContainers for Science and High-Performance Computing
Containers for Science and High-Performance Computing
 
You think you're not a target? A tale of three developers...
You think you're not a target? A tale of three developers...You think you're not a target? A tale of three developers...
You think you're not a target? A tale of three developers...
 
Open Source in the Enterprise
Open Source in the EnterpriseOpen Source in the Enterprise
Open Source in the Enterprise
 
Fedora Modularity
Fedora ModularityFedora Modularity
Fedora Modularity
 
Alexander Kutsan: “C++ compilation boost”
Alexander Kutsan: “C++ compilation boost” Alexander Kutsan: “C++ compilation boost”
Alexander Kutsan: “C++ compilation boost”
 
UniK - a unikernel compiler and runtime
UniK - a unikernel compiler and runtimeUniK - a unikernel compiler and runtime
UniK - a unikernel compiler and runtime
 
Collabograte
CollabograteCollabograte
Collabograte
 
Systemd: the modern Linux init system you will learn to love
Systemd: the modern Linux init system you will learn to loveSystemd: the modern Linux init system you will learn to love
Systemd: the modern Linux init system you will learn to love
 
Managing Software Dependencies and the Supply Chain_ MIT EM.S20.pdf
Managing Software Dependencies and the Supply Chain_ MIT EM.S20.pdfManaging Software Dependencies and the Supply Chain_ MIT EM.S20.pdf
Managing Software Dependencies and the Supply Chain_ MIT EM.S20.pdf
 
Dev environment for linux (Mainly KDE and python)
Dev environment for linux  (Mainly KDE and python)Dev environment for linux  (Mainly KDE and python)
Dev environment for linux (Mainly KDE and python)
 
olibc: Another C Library optimized for Embedded Linux
olibc: Another C Library optimized for Embedded Linuxolibc: Another C Library optimized for Embedded Linux
olibc: Another C Library optimized for Embedded Linux
 
The adoption of FOSS workfows in commercial software development: the case of...
The adoption of FOSS workfows in commercial software development: the case of...The adoption of FOSS workfows in commercial software development: the case of...
The adoption of FOSS workfows in commercial software development: the case of...
 
Linux Distribution Collaboration …on a Mainframe!
Linux Distribution Collaboration …on a Mainframe!Linux Distribution Collaboration …on a Mainframe!
Linux Distribution Collaboration …on a Mainframe!
 
Iz Pack
Iz PackIz Pack
Iz Pack
 
Systemd for developers
Systemd for developersSystemd for developers
Systemd for developers
 
The Source Control Landscape
The Source Control LandscapeThe Source Control Landscape
The Source Control Landscape
 

More from Peter Eisentraut

Porting Oracle Applications to PostgreSQL
Porting Oracle Applications to PostgreSQLPorting Oracle Applications to PostgreSQL
Porting Oracle Applications to PostgreSQLPeter Eisentraut
 
XML Support: Specifications and Development
XML Support: Specifications and DevelopmentXML Support: Specifications and Development
XML Support: Specifications and DevelopmentPeter Eisentraut
 
PostgreSQL: Die Freie Datenbankalternative
PostgreSQL: Die Freie DatenbankalternativePostgreSQL: Die Freie Datenbankalternative
PostgreSQL: Die Freie DatenbankalternativePeter Eisentraut
 
The Road to the XML Type: Current and Future Developments
The Road to the XML Type: Current and Future DevelopmentsThe Road to the XML Type: Current and Future Developments
The Road to the XML Type: Current and Future DevelopmentsPeter Eisentraut
 
Access ohne Access: Freie Datenbank-Frontends
Access ohne Access: Freie Datenbank-FrontendsAccess ohne Access: Freie Datenbank-Frontends
Access ohne Access: Freie Datenbank-FrontendsPeter Eisentraut
 
Replication Solutions for PostgreSQL
Replication Solutions for PostgreSQLReplication Solutions for PostgreSQL
Replication Solutions for PostgreSQLPeter Eisentraut
 
Access ohne Access: Freie Datenbank-Frontends
Access ohne Access: Freie Datenbank-FrontendsAccess ohne Access: Freie Datenbank-Frontends
Access ohne Access: Freie Datenbank-FrontendsPeter Eisentraut
 
Docbook: Textverarbeitung mit XML
Docbook: Textverarbeitung mit XMLDocbook: Textverarbeitung mit XML
Docbook: Textverarbeitung mit XMLPeter Eisentraut
 
Collateral Damage: Consequences of Spam and Virus Filtering for the E-Mail Sy...
Collateral Damage: Consequences of Spam and Virus Filtering for the E-Mail Sy...Collateral Damage: Consequences of Spam and Virus Filtering for the E-Mail Sy...
Collateral Damage: Consequences of Spam and Virus Filtering for the E-Mail Sy...Peter Eisentraut
 
Collateral Damage: Consequences of Spam and Virus Filtering for the E-Mail S...
Collateral Damage:
Consequences of Spam and Virus Filtering for the E-Mail S...Collateral Damage:
Consequences of Spam and Virus Filtering for the E-Mail S...
Collateral Damage: Consequences of Spam and Virus Filtering for the E-Mail S...Peter Eisentraut
 
SQL/MED: Doping for PostgreSQL
SQL/MED: Doping for PostgreSQLSQL/MED: Doping for PostgreSQL
SQL/MED: Doping for PostgreSQLPeter Eisentraut
 

More from Peter Eisentraut (17)

Porting Oracle Applications to PostgreSQL
Porting Oracle Applications to PostgreSQLPorting Oracle Applications to PostgreSQL
Porting Oracle Applications to PostgreSQL
 
PostgreSQL and XML
PostgreSQL and XMLPostgreSQL and XML
PostgreSQL and XML
 
XML Support: Specifications and Development
XML Support: Specifications and DevelopmentXML Support: Specifications and Development
XML Support: Specifications and Development
 
PostgreSQL: Die Freie Datenbankalternative
PostgreSQL: Die Freie DatenbankalternativePostgreSQL: Die Freie Datenbankalternative
PostgreSQL: Die Freie Datenbankalternative
 
The Road to the XML Type: Current and Future Developments
The Road to the XML Type: Current and Future DevelopmentsThe Road to the XML Type: Current and Future Developments
The Road to the XML Type: Current and Future Developments
 
Access ohne Access: Freie Datenbank-Frontends
Access ohne Access: Freie Datenbank-FrontendsAccess ohne Access: Freie Datenbank-Frontends
Access ohne Access: Freie Datenbank-Frontends
 
PostgreSQL and PL/Java
PostgreSQL and PL/JavaPostgreSQL and PL/Java
PostgreSQL and PL/Java
 
Replication Solutions for PostgreSQL
Replication Solutions for PostgreSQLReplication Solutions for PostgreSQL
Replication Solutions for PostgreSQL
 
PostgreSQL News
PostgreSQL NewsPostgreSQL News
PostgreSQL News
 
PostgreSQL News
PostgreSQL NewsPostgreSQL News
PostgreSQL News
 
Access ohne Access: Freie Datenbank-Frontends
Access ohne Access: Freie Datenbank-FrontendsAccess ohne Access: Freie Datenbank-Frontends
Access ohne Access: Freie Datenbank-Frontends
 
Docbook: Textverarbeitung mit XML
Docbook: Textverarbeitung mit XMLDocbook: Textverarbeitung mit XML
Docbook: Textverarbeitung mit XML
 
Collateral Damage: Consequences of Spam and Virus Filtering for the E-Mail Sy...
Collateral Damage: Consequences of Spam and Virus Filtering for the E-Mail Sy...Collateral Damage: Consequences of Spam and Virus Filtering for the E-Mail Sy...
Collateral Damage: Consequences of Spam and Virus Filtering for the E-Mail Sy...
 
Collateral Damage: Consequences of Spam and Virus Filtering for the E-Mail S...
Collateral Damage:
Consequences of Spam and Virus Filtering for the E-Mail S...Collateral Damage:
Consequences of Spam and Virus Filtering for the E-Mail S...
Collateral Damage: Consequences of Spam and Virus Filtering for the E-Mail S...
 
Spaß mit PostgreSQL
Spaß mit PostgreSQLSpaß mit PostgreSQL
Spaß mit PostgreSQL
 
SQL/MED and PostgreSQL
SQL/MED and PostgreSQLSQL/MED and PostgreSQL
SQL/MED and PostgreSQL
 
SQL/MED: Doping for PostgreSQL
SQL/MED: Doping for PostgreSQLSQL/MED: Doping for PostgreSQL
SQL/MED: Doping for PostgreSQL
 

Recently uploaded

FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FIDO Alliance
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfFIDO Alliance
 
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftOauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftshyamraj55
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe中 央社
 
Intro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxIntro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxFIDO Alliance
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?Mark Billinghurst
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024Lorenzo Miniero
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch TuesdayIvanti
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireExakis Nelite
 
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024Stephen Perrenod
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandIES VE
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxFIDO Alliance
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfSrushith Repakula
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsLeah Henrickson
 
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The InsideCollecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The InsideStefan Dietze
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxFIDO Alliance
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfUK Journal
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfFIDO Alliance
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform EngineeringMarcus Vechiato
 

Recently uploaded (20)

FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftOauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoft
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 
Intro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxIntro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptx
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
 
Overview of Hyperledger Foundation
Overview of Hyperledger FoundationOverview of Hyperledger Foundation
Overview of Hyperledger Foundation
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch Tuesday
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptx
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The InsideCollecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 

The Lives of Others: Open-Source Development Practices Elsewhere

  • 1. The Lives of Others Open-Source Development Practices Elsewhere Peter Eisentraut Senior Software Engineer Lab Development F-Secure Corporation PGCon 2009
  • 2. Ground Rules I don’t know everything. If you are involved in other projects, chime in. Discussion welcome
  • 3. Whom To Learn From? Look at the biggest open-source projects Metric: installation footprint, installation count Where to find those numbers? the Universal Debian Database doesn’t count OS distributions such as Debian, Fedora, FreeBSD, OpenSolaris Java also underrepresented
  • 4. Sidetrack: The Universal Debian Database Example: query for packages with largest install footprint and popularity SELECT rank() OVER (ORDER BY score DESC), source, sum(installed_size::numeric * insts) AS score FROM packages JOIN popcon_src USING (source) WHERE distribution = 'debian' AND release = 'lenny' AND component = 'main' AND architecture IN ('all', 'i386') GROUP BY source ORDER BY score DESC LIMIT 100;
  • 5. The Biggest Projects OpenOffice.org, Linux, GCC, GCJ, Qt, Mesa, KDE, Glibc, Firefox, MySQL, Boost, Perl, Samba, LDP, Vim, Gtk+, FFmpeg, OPAL, Evolution, OpenJDK, Gtk−−, wxWidgets, PyQt, Gimp, TeX Live, X.org, SCOWL, OpenSSL, Thunderbird, Xalan, Berkeley DB, ncurses, Foomatic, SELinux, Gutenprint, PHP, GNU binutils, Python, KOffice, Wine, Ruby, ICU, LAPACK, Webkit, PostgreSQL, glib, libsigc++, Inkscape, PWLib, GNOME, Apache, HPLIP, Xerces, Libxml, GNU Gettext, CUPS, SANE, Net-SNMP, Ghostscript, Mono, Eclipse, Pidgin
  • 6. PostgreSQL — A Role Model? Things to keep in mind: 1. Process details are hard to gather for outsiders. 2. Other projects are not without problems. 3. Many of them have worse problems than we do. 4. Others look at the PostgreSQL project for advice and inspiration. 5. It’s amazing that anything gets done. :-)
  • 7. Version Control In the lead: Git, Subversion Also-rans: CVS, Mercurial, Bazaar Commercial systems phased out Automatic conversion services in use
  • 8. Build Tools Autotools continue to rule! CMake might be challenger well-known usage: KDE, MySQL (for Windows only) uptake still slow (88 of 12000 packages in Debian) That’s it, for C programs.
  • 9. Documentation Tools DocBook emerged as the standard. XML vs. SGML Texinfo (only at GNU) man pages HTML some specialized solutions: Python: reStructuredText Perl: Perldoc Qt: qdoc
  • 10. Discussion Forums Mailing lists are clearly the standard. But don’t argue about Reply-To! Usenet is dead. :-) Web-forums serve support requests and newbies better. . . . and then there are bug-tracking systems.
  • 11. Bug Tracking Bugzilla is king (often heavily themed and customized). contenders: Roundup, Jira, *forge marginal: RT
  • 12. Coding Styles Coding style appears to be an issue specific to C/C++. Besides the GNU style, various random styles can be found. CVS $Keywords$ are pretty much gone. Patch styles (-c vs. -u) are an unsettled issue.
  • 13. Wikis About 1/3 of projects have active wikis. MediaWiki is most popular.
  • 14. The Foundries Project-specific *forge services are rare. More popular: Common repo and Bugzilla for everyone. This has implications for management of sub-/sister projects.
  • 15. Write Your Own Tools Some tools are side-products of other projects: ccache tmalloc distcc Bugzilla PatchTracker Contributions to build tools (autoconf, cmake, etc.) are welcome.
  • 16. Release Scheduling Trend is toward time-based releases: OpenBSD (6 months) GNOME (6 months) Ubuntu (6 months) Debian (18 months) OpenOffice.org (6 months) PostgreSQL (12 months) Linux kernel (3 months) (MySQL) ... Note: The upgrade issue is fairly unique to PostgreSQL.
  • 17. Minor Releases Stable + development branch is standard. Some maintain more than one stable, e.g., Samba. PostgreSQL’s 5+ back branches have got to be a record. MySQL might come close. Minor releases can also have a fixed schedule. (OpenOffice.org: 3 months)
  • 18. The Rewrite Trap Major reengineering efforts usually have schedule and/or quality problems. Recall: Samba 4 Perl 6 KDE 4
  • 19. Pre-Releases Beta, RC are standard. Even/odd model (Linux, Perl) is obsolescent. Alpha/milestone releases are rare.
  • 20. Release Manager Some projects appoint rotating release managers. In other projects, these roles fall into place by tradition.
  • 21. Downstream Packaging Various approaches: Tight integration, e.g.: PostgreSQL, KDE, Samba Laissez-faire, e.g.: Linux, GCC, MySQL Conflict-prone, e.g.: OpenOffice.org, Mozilla
  • 22. Security Handling Most sizeable projects have special security contacs/teams. CVE numbers are standard. Note: Non-database projects have a skewed/different view of “security”.
  • 23. Committers Surprisingly, many projects seem to do with very few committers. Some projects have very large amounts of committers. I think this is strongly related to the software architecture and project layout. Compare: KDE has everything in one repo; hundreds of committers. PostgreSQL has PgFoundry etc. Linux kernel uses a very different model. Managing external committers tends to be a problem for company-run projects.
  • 24. Project Steering Company-run projects have a clear direction (usually). In principle, the developers create their own destiny everywhere else. Some projects have elected boards etc., but these don’t have technical influence. Most projects are steered by the “old farts”.
  • 25. Forking Forking continues to happen. Contemporary cases: Go-OO.org, eglibc, OurDelta, Iceweasel Reasons: Faster/different feature advancement Licensing or trademark conflicts Company vs. community barrier Personal problems Many commercial forks of open-source DBMS: EnterpriseDB, Greenplum, Truviso, Kickfire, Infobright
  • 26. Licensing Distributors are incredibly picky. So are legal departments. Well-known licenses are important. Consistent and uniform licensing helps. Weird licensing can kill projects. Many projects have had their share of problems: KDE (Qt), Linux (SCO, firmware), XFree86, Mambo, Apache vs. OpenBSD, PostgreSQL (GPL), OpenSSL vs. Debian
  • 27. Copyright Notices Amateur legal opinion: Copyright notices are more or less meaningless. But they could help if you plan to go to court. Most company-sponsored code has standard copyright headers. FSF and Apache use copyright assignments and careful changelog tracking. Most other projects are pretty random. Initial author: Perl, Samba Various authors: KDE, Vim “Fake” organizations: OpenSSL, (PHP), PostgreSQL, wxWidgets nothing: Python Many (smaller) projects apply the GPL wrongly.
  • 28. Legal and Funds Management Four models: Run and owned by a single company: OpenOffice.org, MySQL, Qt, Berkeley DB, CUPS, (PHP) Run and controlled by a non-profit association: GCC, KDE, Mozilla, GNOME, Apache, (Fedora) Loosely organized but someone in the background: Linux, PostgreSQL, Debian, OpenBSD Unorganized: Vim
  • 29. Standards Organizations OSS participation is possible, e. g.: OpenOffice.org Linux/glibc KDE/GNOME/X.org/Freedesktop MySQL, PostgreSQL, . . . ?
  • 30. The Average Sizeable Open-Source Project 2010/2011 Written in C (or Java) GPL Source in Git Bugs in Bugzilla Built with Autoconf (or Maven) Released every 6 months
  • 31. Open Issues for PostgreSQL Version control system Web forum Bug tracking system CMake? DocBook XML Release cycle length Upgradability
  • 32. Rights and Attributions This presentation “The Lives of Others: Open-Source Development Practices Elsewhere” was authored by Peter Eisentraut and is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported license. The image on page 2 is “Comiskey Park (US Celluar Field)” by Flickr user Zol87, available under the Creative Commons Attribution-Noncommercial 2.0 Generic license. The image on page 3 is “Apples and oranges” by Flickr user Jeff Tabaco, available under the Creative Commons Attribution-Noncommercial-Share Alike 2.0 Generic license. The image on page 14 is “Valimon asema Helsinki” from Wikipedia and is in the public domain. The image on page 21 is “Watersfalls, Mesa Arts Center” by Flickr user cobalt123, available under the Creative Commons Attribution-Noncommercial-Share Alike 2.0 Generic license. The image on page 22 is “Suomenlinna” by Flickr user Anosmia, available under the Creative Commons Attribution 2.0 Generic license. The image on page 31 is “Committee meeting” by Flickr user Matt and Kim Rudge, available under the Creative Commons Attribution-Noncommercial 2.0 Generic license.