SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
Developing a Commercial Open Source Project
                with Python

             OSDC 2007, Brisbane

                Juergen Brendel
          Principal Software Engineer
Agenda

• The SnapLogic project
• Open source opportunities / challenges
• Python opportunities / challenges




           Developing a Commercial Open Source Project with Python   Slide 2
                           OSDC 2007, Brisbane
The SnapLogic project

    Started in 2005
•
•   Open source data integration framework
•   REST
•   Targeted at developers




             Developing a Commercial Open Source Project with Python   Slide 3
                             OSDC 2007, Brisbane
Example: Browser based GUI




         Developing a Commercial Open Source Project with Python   Slide 4
                         OSDC 2007, Brisbane
Example: Resources
                 HTTP://server1.example.com/customer_list

 Databases
                                SnapLogic Server


                                                                          Client
    Files                                          HTTP

                                                                          HTTP
                      Component


                                                                          Request
 Applications

                                                                          and
 Atom / RSS
                                                                          Response
                       Resource
                       Definition



                                           • Resource Name
                                           • HTTP://server1.example.com/customer_list
                                           • Component and Behavior
                                           • SQL Query or filename
                                           • credentials
                                           • parameters




                Developing a Commercial Open Source Project with Python          Slide 5
                                OSDC 2007, Brisbane
Example: Resources
                HTTP://server1.example.com/processed_customer_list
 Databases
                                        SnapLogic Server

                                                                                   Client
    Files
                                                                            HTTP
                                                                                   HTTP
                        Component         Component          Component


                                                                                   Request
 Applications

                                                                                   and
 Atom / RSS
                                                                                   Response
                         Resource           Resource          Resource
                         Definition         Definition        Definition




                                 Read                Geocode                Sort




                  Developing a Commercial Open Source Project with Python           Slide 6
                                  OSDC 2007, Brisbane
Why open source?

• Practical reasons
• Philosophical reasons
• Business reasons




           Developing a Commercial Open Source Project with Python   Slide 7
                           OSDC 2007, Brisbane
Business reason: Lower cost
        Traditional sales funnel
                  Potential customers


                         Interested


                           Qualified


                         Opportunity


                              Sale


          Developing a Commercial Open Source Project with Python   Slide 8
                          OSDC 2007, Brisbane
Business reason: Lower cost
       Open source sales funnel
                  Potential customers


                         Interested


                           Qualified


                         Opportunity


                              Sale


          Developing a Commercial Open Source Project with Python   Slide 9
                          OSDC 2007, Brisbane
Business reason: Lower cost
    Traditional                                       FOSS




                               Sales cost

                          Development cost

                                 Income


             Developing a Commercial Open Source Project with Python   Slide 10
                             OSDC 2007, Brisbane
Business reason: Broad adoption

• Broad adoption
  –   More 'sales'
  –   More feedback
  –   Contributions
  –   Lower development cost
• OSS gets in through the side door




              Developing a Commercial Open Source Project with Python   Slide 11
                              OSDC 2007, Brisbane
Challenge: Little OSS experience

 • The open source community
 • What's public, what's private?
 • You are being watched!

 • Solution:
   – Clarify policies
   – Embrace openness




               Developing a Commercial Open Source Project with Python   Slide 12
                               OSDC 2007, Brisbane
Challenge: Licenses

• Which license to choose?
• Modified standard license?

• Solution:
  – Get professional advice
  – Keep it simple
  – Use GPL




              Developing a Commercial Open Source Project with Python   Slide 13
                              OSDC 2007, Brisbane
Challenge: Source as a feature

 • People choose OSS because of source
 • Source becomes a feature (!) of the product

 • Solution: Make source beautiful
   – Documentation
   – Consistency
   – Style and documentation guide




              Developing a Commercial Open Source Project with Python   Slide 14
                              OSDC 2007, Brisbane
Challenge: Enabling contributions

 • Open APIs more important than open
   source!
 • Enable 'deeper' contributions

 • Solution:
   – Don't rest on your laurels
   – Use your unique advantage: Deep contributions
   – Repeat after me: “APIs, modules, APIs, modules,
     APIs, modules, APIs, modules...”


               Developing a Commercial Open Source Project with Python   Slide 15
                               OSDC 2007, Brisbane
Why Python?

    One of the founders likes it
•
•   Rapid prototyping and development
•   Reasonably fast
•   Readable code
    Suitable even for large projects
•




             Developing a Commercial Open Source Project with Python   Slide 16
                             OSDC 2007, Brisbane
Challenge: Little experience

 • Can't hire Python developers
 • Even in the Silicon Valley

 • Solution:
   – Just hire good (generic) developers
   – They can learn




               Developing a Commercial Open Source Project with Python   Slide 17
                               OSDC 2007, Brisbane
Challenge: Tainted by past life

 • Team experience in other languages
 • Not using Python to its full potential

 • Solution:
   – Understand pythonic
   – Read: Python is not Java
   – Share knowledge: Code reviews




               Developing a Commercial Open Source Project with Python   Slide 18
                               OSDC 2007, Brisbane
Challenge: Getting carried away

 • Powerful and very (!) dynamic:
    >>> class Foo(object):
    >>>     def hello(self):
    >>>         print “Hello World!”

    >>> x = Foo()
    >>> dir(x)
    [ .......... , 'hello']
    >>> x.bar = 123
    >>> dir(x)
    [ .......... , 'bar', 'hello']

 • Solution:
   – Create conventional looking APIs
   – Use those APIs as documentation
               Developing a Commercial Open Source Project with Python   Slide 19
                               OSDC 2007, Brisbane
Challenge: Why didn't you just use...?

 • Python comes with Batteries included
 • Don't know all the libraries have to offer
 • Write yourself? Oh, the temptation!

 • Solution:
   – Learn to use Google
   – Read Python Cookbook and others
   – Share knowledge: Code reviews



               Developing a Commercial Open Source Project with Python   Slide 20
                               OSDC 2007, Brisbane
Challenge: Third-party package risks 1

 • Import chain madness
 • Some packages rely on C extensions
 • Normally: Don't reinvent the wheel

 • Solution:
   – Watch what you import
   – Inventing a little wheel can be helpful




               Developing a Commercial Open Source Project with Python   Slide 21
                               OSDC 2007, Brisbane
Challenge: Third-party package risks 2

 • So far, no bugs in core libraries
 • Bugs in third-party packages
 • Included patched packages in the installer

 • Solution:
   – Speed up acceptance time for submitted patches
   – Provide patch, test cases, detailed docs




               Developing a Commercial Open Source Project with Python   Slide 22
                               OSDC 2007, Brisbane
Challenge: The GIL

• Can't use multiple cores with threads

• Solution 1:
  – Use multi-processing

• Solution 2:
  – mod_wsgi




             Developing a Commercial Open Source Project with Python   Slide 23
                             OSDC 2007, Brisbane
Challenge: Hidden bugs

• No compiler to catch typos
• Duck typing

• Solution:
  – Unit testing: pyunit, buildbot
  – Coverage testing: figleaf, buildbot




              Developing a Commercial Open Source Project with Python   Slide 24
                              OSDC 2007, Brisbane
The end



    Any questions?

jbrendel@snaplogic.org




  Developing a Commercial Open Source Project with Python   Slide 25
                  OSDC 2007, Brisbane

Contenu connexe

Tendances

Python: the Project, the Language and the Style
Python: the Project, the Language and the StylePython: the Project, the Language and the Style
Python: the Project, the Language and the StyleJuan-Manuel Gimeno
 
Python course syllabus
Python course syllabusPython course syllabus
Python course syllabusSugantha T
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to pythonAgung Wahyudi
 
Advanced Python Tutorial | Learn Advanced Python Concepts | Python Programmin...
Advanced Python Tutorial | Learn Advanced Python Concepts | Python Programmin...Advanced Python Tutorial | Learn Advanced Python Concepts | Python Programmin...
Advanced Python Tutorial | Learn Advanced Python Concepts | Python Programmin...Edureka!
 
Python 101 for the .NET Developer
Python 101 for the .NET DeveloperPython 101 for the .NET Developer
Python 101 for the .NET DeveloperSarah Dutkiewicz
 
Introduction to python for Beginners
Introduction to python for Beginners Introduction to python for Beginners
Introduction to python for Beginners Sujith Kumar
 
Python tutorial
Python tutorialPython tutorial
Python tutorialGuru99
 
Python Programming - XIII. GUI Programming
Python Programming - XIII. GUI ProgrammingPython Programming - XIII. GUI Programming
Python Programming - XIII. GUI ProgrammingRanel Padon
 
How to integrate python into a scala stack
How to integrate python into a scala stackHow to integrate python into a scala stack
How to integrate python into a scala stackFliptop
 
Python quick guide1
Python quick guide1Python quick guide1
Python quick guide1Kanchilug
 
Seminar report On Python
Seminar report On PythonSeminar report On Python
Seminar report On PythonShivam Gupta
 
Using SWIG to Control, Prototype, and Debug C Programs with Python
Using SWIG to Control, Prototype, and Debug C Programs with PythonUsing SWIG to Control, Prototype, and Debug C Programs with Python
Using SWIG to Control, Prototype, and Debug C Programs with PythonDavid Beazley (Dabeaz LLC)
 
Statistics Using Python | Statistics Python Tutorial | Python Certification T...
Statistics Using Python | Statistics Python Tutorial | Python Certification T...Statistics Using Python | Statistics Python Tutorial | Python Certification T...
Statistics Using Python | Statistics Python Tutorial | Python Certification T...Edureka!
 
Introduction To Python
Introduction To PythonIntroduction To Python
Introduction To PythonVanessa Rene
 
Python Training in Pune - Ethans Tech Pune
Python Training in Pune - Ethans Tech PunePython Training in Pune - Ethans Tech Pune
Python Training in Pune - Ethans Tech PuneEthan's Tech
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to pythonManishJha237
 

Tendances (20)

Python: the Project, the Language and the Style
Python: the Project, the Language and the StylePython: the Project, the Language and the Style
Python: the Project, the Language and the Style
 
Python course syllabus
Python course syllabusPython course syllabus
Python course syllabus
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
 
Python
Python Python
Python
 
Advanced Python Tutorial | Learn Advanced Python Concepts | Python Programmin...
Advanced Python Tutorial | Learn Advanced Python Concepts | Python Programmin...Advanced Python Tutorial | Learn Advanced Python Concepts | Python Programmin...
Advanced Python Tutorial | Learn Advanced Python Concepts | Python Programmin...
 
Introduction to python
 Introduction to python Introduction to python
Introduction to python
 
Python 101 for the .NET Developer
Python 101 for the .NET DeveloperPython 101 for the .NET Developer
Python 101 for the .NET Developer
 
Python
PythonPython
Python
 
Introduction to python for Beginners
Introduction to python for Beginners Introduction to python for Beginners
Introduction to python for Beginners
 
Python tutorial
Python tutorialPython tutorial
Python tutorial
 
Basics of python
Basics of pythonBasics of python
Basics of python
 
Python Programming - XIII. GUI Programming
Python Programming - XIII. GUI ProgrammingPython Programming - XIII. GUI Programming
Python Programming - XIII. GUI Programming
 
How to integrate python into a scala stack
How to integrate python into a scala stackHow to integrate python into a scala stack
How to integrate python into a scala stack
 
Python quick guide1
Python quick guide1Python quick guide1
Python quick guide1
 
Seminar report On Python
Seminar report On PythonSeminar report On Python
Seminar report On Python
 
Using SWIG to Control, Prototype, and Debug C Programs with Python
Using SWIG to Control, Prototype, and Debug C Programs with PythonUsing SWIG to Control, Prototype, and Debug C Programs with Python
Using SWIG to Control, Prototype, and Debug C Programs with Python
 
Statistics Using Python | Statistics Python Tutorial | Python Certification T...
Statistics Using Python | Statistics Python Tutorial | Python Certification T...Statistics Using Python | Statistics Python Tutorial | Python Certification T...
Statistics Using Python | Statistics Python Tutorial | Python Certification T...
 
Introduction To Python
Introduction To PythonIntroduction To Python
Introduction To Python
 
Python Training in Pune - Ethans Tech Pune
Python Training in Pune - Ethans Tech PunePython Training in Pune - Ethans Tech Pune
Python Training in Pune - Ethans Tech Pune
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
 

En vedette

Intentional modeling for problem solving in enterprise architecture (ICEIS 20...
Intentional modeling for problem solving in enterprise architecture (ICEIS 20...Intentional modeling for problem solving in enterprise architecture (ICEIS 20...
Intentional modeling for problem solving in enterprise architecture (ICEIS 20...Dr.-Ing. Sagar Sunkle
 
Enterprise(d) Tomcat & httpd
Enterprise(d) Tomcat & httpdEnterprise(d) Tomcat & httpd
Enterprise(d) Tomcat & httpdVaclav Tunka
 
VMworld 2014: VMware NSX and vCloud Automation Center Integration Technical D...
VMworld 2014: VMware NSX and vCloud Automation Center Integration Technical D...VMworld 2014: VMware NSX and vCloud Automation Center Integration Technical D...
VMworld 2014: VMware NSX and vCloud Automation Center Integration Technical D...VMworld
 
Promoter – A Python Project for Replicating a JSS via the API
Promoter – A Python Project for Replicating a JSS via the APIPromoter – A Python Project for Replicating a JSS via the API
Promoter – A Python Project for Replicating a JSS via the APImacbrained
 
VMUG - Mastering PowerShell to Call RESTful API Endpoints
VMUG - Mastering PowerShell to Call RESTful API EndpointsVMUG - Mastering PowerShell to Call RESTful API Endpoints
VMUG - Mastering PowerShell to Call RESTful API EndpointsChris Wahl
 
VMUG - Using PowerShell to call RESTful APIs
VMUG - Using PowerShell to call RESTful APIsVMUG - Using PowerShell to call RESTful APIs
VMUG - Using PowerShell to call RESTful APIsChris Wahl
 
Reverse proxy & web cache with NGINX, HAProxy and Varnish
Reverse proxy & web cache with NGINX, HAProxy and VarnishReverse proxy & web cache with NGINX, HAProxy and Varnish
Reverse proxy & web cache with NGINX, HAProxy and VarnishEl Mahdi Benzekri
 
VMworld - vSphere Distributed Switch 6.0 Technical Deep Dive
VMworld - vSphere Distributed Switch 6.0 Technical Deep DiveVMworld - vSphere Distributed Switch 6.0 Technical Deep Dive
VMworld - vSphere Distributed Switch 6.0 Technical Deep DiveChris Wahl
 
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013Carlos Sanchez
 
Self service it with v realizeautomation and nsx
Self service it with v realizeautomation and nsxSelf service it with v realizeautomation and nsx
Self service it with v realizeautomation and nsxsolarisyougood
 
Iasa UK Archimate Overview
Iasa UK Archimate OverviewIasa UK Archimate Overview
Iasa UK Archimate OverviewIasa UK
 
VMUG - My Journey to Full Stack Engineering
VMUG - My Journey to Full Stack EngineeringVMUG - My Journey to Full Stack Engineering
VMUG - My Journey to Full Stack EngineeringChris Wahl
 
Implementing ACORD with ArchiMate
Implementing ACORD with ArchiMateImplementing ACORD with ArchiMate
Implementing ACORD with ArchiMateIver Band
 
Applying reference models with archi mate
Applying reference models with archi mateApplying reference models with archi mate
Applying reference models with archi mateBas van Gils
 
Design your Business, Model your Architecture (presentation by Marc Lankhorst...
Design your Business, Model your Architecture (presentation by Marc Lankhorst...Design your Business, Model your Architecture (presentation by Marc Lankhorst...
Design your Business, Model your Architecture (presentation by Marc Lankhorst...Patrick Van Renterghem
 
VMworld 2015: Build and Run Cloud Native Apps in your Software Defined Data C...
VMworld 2015: Build and Run Cloud Native Apps in your Software Defined Data C...VMworld 2015: Build and Run Cloud Native Apps in your Software Defined Data C...
VMworld 2015: Build and Run Cloud Native Apps in your Software Defined Data C...VMworld
 
PuppetConf 2016: Puppet and vRealize Automation: The Next Generation – Ganesh...
PuppetConf 2016: Puppet and vRealize Automation: The Next Generation – Ganesh...PuppetConf 2016: Puppet and vRealize Automation: The Next Generation – Ganesh...
PuppetConf 2016: Puppet and vRealize Automation: The Next Generation – Ganesh...Puppet
 
Tomcat and apache httpd training
Tomcat and apache httpd trainingTomcat and apache httpd training
Tomcat and apache httpd trainingFranck SIMON
 
vRA + NSX Technical Deep-Dive
vRA + NSX Technical Deep-DivevRA + NSX Technical Deep-Dive
vRA + NSX Technical Deep-DiveVMUG IT
 

En vedette (20)

Intentional modeling for problem solving in enterprise architecture (ICEIS 20...
Intentional modeling for problem solving in enterprise architecture (ICEIS 20...Intentional modeling for problem solving in enterprise architecture (ICEIS 20...
Intentional modeling for problem solving in enterprise architecture (ICEIS 20...
 
Enterprise(d) Tomcat & httpd
Enterprise(d) Tomcat & httpdEnterprise(d) Tomcat & httpd
Enterprise(d) Tomcat & httpd
 
VMworld 2014: VMware NSX and vCloud Automation Center Integration Technical D...
VMworld 2014: VMware NSX and vCloud Automation Center Integration Technical D...VMworld 2014: VMware NSX and vCloud Automation Center Integration Technical D...
VMworld 2014: VMware NSX and vCloud Automation Center Integration Technical D...
 
Promoter – A Python Project for Replicating a JSS via the API
Promoter – A Python Project for Replicating a JSS via the APIPromoter – A Python Project for Replicating a JSS via the API
Promoter – A Python Project for Replicating a JSS via the API
 
Joint workshop on security modeling archimate forum and security forum
Joint workshop on security modeling archimate forum and security forumJoint workshop on security modeling archimate forum and security forum
Joint workshop on security modeling archimate forum and security forum
 
VMUG - Mastering PowerShell to Call RESTful API Endpoints
VMUG - Mastering PowerShell to Call RESTful API EndpointsVMUG - Mastering PowerShell to Call RESTful API Endpoints
VMUG - Mastering PowerShell to Call RESTful API Endpoints
 
VMUG - Using PowerShell to call RESTful APIs
VMUG - Using PowerShell to call RESTful APIsVMUG - Using PowerShell to call RESTful APIs
VMUG - Using PowerShell to call RESTful APIs
 
Reverse proxy & web cache with NGINX, HAProxy and Varnish
Reverse proxy & web cache with NGINX, HAProxy and VarnishReverse proxy & web cache with NGINX, HAProxy and Varnish
Reverse proxy & web cache with NGINX, HAProxy and Varnish
 
VMworld - vSphere Distributed Switch 6.0 Technical Deep Dive
VMworld - vSphere Distributed Switch 6.0 Technical Deep DiveVMworld - vSphere Distributed Switch 6.0 Technical Deep Dive
VMworld - vSphere Distributed Switch 6.0 Technical Deep Dive
 
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
 
Self service it with v realizeautomation and nsx
Self service it with v realizeautomation and nsxSelf service it with v realizeautomation and nsx
Self service it with v realizeautomation and nsx
 
Iasa UK Archimate Overview
Iasa UK Archimate OverviewIasa UK Archimate Overview
Iasa UK Archimate Overview
 
VMUG - My Journey to Full Stack Engineering
VMUG - My Journey to Full Stack EngineeringVMUG - My Journey to Full Stack Engineering
VMUG - My Journey to Full Stack Engineering
 
Implementing ACORD with ArchiMate
Implementing ACORD with ArchiMateImplementing ACORD with ArchiMate
Implementing ACORD with ArchiMate
 
Applying reference models with archi mate
Applying reference models with archi mateApplying reference models with archi mate
Applying reference models with archi mate
 
Design your Business, Model your Architecture (presentation by Marc Lankhorst...
Design your Business, Model your Architecture (presentation by Marc Lankhorst...Design your Business, Model your Architecture (presentation by Marc Lankhorst...
Design your Business, Model your Architecture (presentation by Marc Lankhorst...
 
VMworld 2015: Build and Run Cloud Native Apps in your Software Defined Data C...
VMworld 2015: Build and Run Cloud Native Apps in your Software Defined Data C...VMworld 2015: Build and Run Cloud Native Apps in your Software Defined Data C...
VMworld 2015: Build and Run Cloud Native Apps in your Software Defined Data C...
 
PuppetConf 2016: Puppet and vRealize Automation: The Next Generation – Ganesh...
PuppetConf 2016: Puppet and vRealize Automation: The Next Generation – Ganesh...PuppetConf 2016: Puppet and vRealize Automation: The Next Generation – Ganesh...
PuppetConf 2016: Puppet and vRealize Automation: The Next Generation – Ganesh...
 
Tomcat and apache httpd training
Tomcat and apache httpd trainingTomcat and apache httpd training
Tomcat and apache httpd training
 
vRA + NSX Technical Deep-Dive
vRA + NSX Technical Deep-DivevRA + NSX Technical Deep-Dive
vRA + NSX Technical Deep-Dive
 

Similaire à A commercial open source project in Python

DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)dpc
 
Data Integration with server side Mashups
Data Integration with server side MashupsData Integration with server side Mashups
Data Integration with server side Mashupsjbrendel
 
Rapid Web Development with Python for Absolute Beginners
Rapid Web Development with Python for Absolute BeginnersRapid Web Development with Python for Absolute Beginners
Rapid Web Development with Python for Absolute BeginnersFatih Karatana
 
Evaluating Php As A Technology Platform For Soa Implementations
 Evaluating Php As A Technology Platform For Soa Implementations Evaluating Php As A Technology Platform For Soa Implementations
Evaluating Php As A Technology Platform For Soa ImplementationsVedanta Barooah
 
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...Alexandr Savchenko
 
"Different software evolutions from Start till Release in PHP product" Oleksa...
"Different software evolutions from Start till Release in PHP product" Oleksa..."Different software evolutions from Start till Release in PHP product" Oleksa...
"Different software evolutions from Start till Release in PHP product" Oleksa...Fwdays
 
GlueCon 2018: Are REST APIs Still Relevant Today?
GlueCon 2018: Are REST APIs Still Relevant Today?GlueCon 2018: Are REST APIs Still Relevant Today?
GlueCon 2018: Are REST APIs Still Relevant Today?LaunchAny
 
Int4 and IFTT @ SAP SIT Berlin 2017
Int4 and IFTT @ SAP SIT Berlin 2017Int4 and IFTT @ SAP SIT Berlin 2017
Int4 and IFTT @ SAP SIT Berlin 2017Michal Kowalczewski
 
Integrating PHP With System-i using Web Services
Integrating PHP With System-i using Web ServicesIntegrating PHP With System-i using Web Services
Integrating PHP With System-i using Web ServicesIvo Jansch
 
Application development using the wso2 developer studio
Application development using the wso2 developer studioApplication development using the wso2 developer studio
Application development using the wso2 developer studioWSO2
 
INTERFACE, by apidays - Lessons learned from implementing our custom ‘Big Da...
INTERFACE, by apidays  - Lessons learned from implementing our custom ‘Big Da...INTERFACE, by apidays  - Lessons learned from implementing our custom ‘Big Da...
INTERFACE, by apidays - Lessons learned from implementing our custom ‘Big Da...apidays
 
Building Beautiful REST APIs with ASP.NET Core
Building Beautiful REST APIs with ASP.NET CoreBuilding Beautiful REST APIs with ASP.NET Core
Building Beautiful REST APIs with ASP.NET CoreStormpath
 
Using PnP JS Core in Node.js
Using PnP JS Core in Node.jsUsing PnP JS Core in Node.js
Using PnP JS Core in Node.jsAndrew Koltyakov
 
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...Andrew Phillips
 
Content Strategy and Developer Engagement for DevPortals
Content Strategy and Developer Engagement for DevPortalsContent Strategy and Developer Engagement for DevPortals
Content Strategy and Developer Engagement for DevPortalsAxway
 
API Workshop Amsterdam presented by API Architect Ronnie Mitra
API Workshop Amsterdam presented by API Architect Ronnie MitraAPI Workshop Amsterdam presented by API Architect Ronnie Mitra
API Workshop Amsterdam presented by API Architect Ronnie MitraCA API Management
 
Open Source Business Models
Open Source Business ModelsOpen Source Business Models
Open Source Business ModelsExist
 
Operational API design anti-patterns (Jason Harmon)
Operational API design anti-patterns (Jason Harmon)Operational API design anti-patterns (Jason Harmon)
Operational API design anti-patterns (Jason Harmon)Nordic APIs
 

Similaire à A commercial open source project in Python (20)

DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)
 
Data Integration with server side Mashups
Data Integration with server side MashupsData Integration with server side Mashups
Data Integration with server side Mashups
 
Rapid Web Development with Python for Absolute Beginners
Rapid Web Development with Python for Absolute BeginnersRapid Web Development with Python for Absolute Beginners
Rapid Web Development with Python for Absolute Beginners
 
Evaluating Php As A Technology Platform For Soa Implementations
 Evaluating Php As A Technology Platform For Soa Implementations Evaluating Php As A Technology Platform For Soa Implementations
Evaluating Php As A Technology Platform For Soa Implementations
 
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
 
"Different software evolutions from Start till Release in PHP product" Oleksa...
"Different software evolutions from Start till Release in PHP product" Oleksa..."Different software evolutions from Start till Release in PHP product" Oleksa...
"Different software evolutions from Start till Release in PHP product" Oleksa...
 
GlueCon 2018: Are REST APIs Still Relevant Today?
GlueCon 2018: Are REST APIs Still Relevant Today?GlueCon 2018: Are REST APIs Still Relevant Today?
GlueCon 2018: Are REST APIs Still Relevant Today?
 
Int4 and IFTT @ SAP SIT Berlin 2017
Int4 and IFTT @ SAP SIT Berlin 2017Int4 and IFTT @ SAP SIT Berlin 2017
Int4 and IFTT @ SAP SIT Berlin 2017
 
Integrating PHP With System-i using Web Services
Integrating PHP With System-i using Web ServicesIntegrating PHP With System-i using Web Services
Integrating PHP With System-i using Web Services
 
Application development using the wso2 developer studio
Application development using the wso2 developer studioApplication development using the wso2 developer studio
Application development using the wso2 developer studio
 
INTERFACE, by apidays - Lessons learned from implementing our custom ‘Big Da...
INTERFACE, by apidays  - Lessons learned from implementing our custom ‘Big Da...INTERFACE, by apidays  - Lessons learned from implementing our custom ‘Big Da...
INTERFACE, by apidays - Lessons learned from implementing our custom ‘Big Da...
 
ODFKit
ODFKitODFKit
ODFKit
 
Building Beautiful REST APIs with ASP.NET Core
Building Beautiful REST APIs with ASP.NET CoreBuilding Beautiful REST APIs with ASP.NET Core
Building Beautiful REST APIs with ASP.NET Core
 
Using PnP JS Core in Node.js
Using PnP JS Core in Node.jsUsing PnP JS Core in Node.js
Using PnP JS Core in Node.js
 
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
Continuous Delivery NYC: From GitOps to an adaptable CI/CD Pattern for Kubern...
 
Content Strategy and Developer Engagement for DevPortals
Content Strategy and Developer Engagement for DevPortalsContent Strategy and Developer Engagement for DevPortals
Content Strategy and Developer Engagement for DevPortals
 
API Workshop Amsterdam presented by API Architect Ronnie Mitra
API Workshop Amsterdam presented by API Architect Ronnie MitraAPI Workshop Amsterdam presented by API Architect Ronnie Mitra
API Workshop Amsterdam presented by API Architect Ronnie Mitra
 
Open Source Business Models
Open Source Business ModelsOpen Source Business Models
Open Source Business Models
 
Operational API design anti-patterns (Jason Harmon)
Operational API design anti-patterns (Jason Harmon)Operational API design anti-patterns (Jason Harmon)
Operational API design anti-patterns (Jason Harmon)
 
Data science lifecycle with Apache Zeppelin
Data science lifecycle with Apache ZeppelinData science lifecycle with Apache Zeppelin
Data science lifecycle with Apache Zeppelin
 

Dernier

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 

Dernier (20)

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

A commercial open source project in Python

  • 1. Developing a Commercial Open Source Project with Python OSDC 2007, Brisbane Juergen Brendel Principal Software Engineer
  • 2. Agenda • The SnapLogic project • Open source opportunities / challenges • Python opportunities / challenges Developing a Commercial Open Source Project with Python Slide 2 OSDC 2007, Brisbane
  • 3. The SnapLogic project Started in 2005 • • Open source data integration framework • REST • Targeted at developers Developing a Commercial Open Source Project with Python Slide 3 OSDC 2007, Brisbane
  • 4. Example: Browser based GUI Developing a Commercial Open Source Project with Python Slide 4 OSDC 2007, Brisbane
  • 5. Example: Resources HTTP://server1.example.com/customer_list Databases SnapLogic Server Client Files HTTP HTTP Component Request Applications and Atom / RSS Response Resource Definition • Resource Name • HTTP://server1.example.com/customer_list • Component and Behavior • SQL Query or filename • credentials • parameters Developing a Commercial Open Source Project with Python Slide 5 OSDC 2007, Brisbane
  • 6. Example: Resources HTTP://server1.example.com/processed_customer_list Databases SnapLogic Server Client Files HTTP HTTP Component Component Component Request Applications and Atom / RSS Response Resource Resource Resource Definition Definition Definition Read Geocode Sort Developing a Commercial Open Source Project with Python Slide 6 OSDC 2007, Brisbane
  • 7. Why open source? • Practical reasons • Philosophical reasons • Business reasons Developing a Commercial Open Source Project with Python Slide 7 OSDC 2007, Brisbane
  • 8. Business reason: Lower cost Traditional sales funnel Potential customers Interested Qualified Opportunity Sale Developing a Commercial Open Source Project with Python Slide 8 OSDC 2007, Brisbane
  • 9. Business reason: Lower cost Open source sales funnel Potential customers Interested Qualified Opportunity Sale Developing a Commercial Open Source Project with Python Slide 9 OSDC 2007, Brisbane
  • 10. Business reason: Lower cost Traditional FOSS Sales cost Development cost Income Developing a Commercial Open Source Project with Python Slide 10 OSDC 2007, Brisbane
  • 11. Business reason: Broad adoption • Broad adoption – More 'sales' – More feedback – Contributions – Lower development cost • OSS gets in through the side door Developing a Commercial Open Source Project with Python Slide 11 OSDC 2007, Brisbane
  • 12. Challenge: Little OSS experience • The open source community • What's public, what's private? • You are being watched! • Solution: – Clarify policies – Embrace openness Developing a Commercial Open Source Project with Python Slide 12 OSDC 2007, Brisbane
  • 13. Challenge: Licenses • Which license to choose? • Modified standard license? • Solution: – Get professional advice – Keep it simple – Use GPL Developing a Commercial Open Source Project with Python Slide 13 OSDC 2007, Brisbane
  • 14. Challenge: Source as a feature • People choose OSS because of source • Source becomes a feature (!) of the product • Solution: Make source beautiful – Documentation – Consistency – Style and documentation guide Developing a Commercial Open Source Project with Python Slide 14 OSDC 2007, Brisbane
  • 15. Challenge: Enabling contributions • Open APIs more important than open source! • Enable 'deeper' contributions • Solution: – Don't rest on your laurels – Use your unique advantage: Deep contributions – Repeat after me: “APIs, modules, APIs, modules, APIs, modules, APIs, modules...” Developing a Commercial Open Source Project with Python Slide 15 OSDC 2007, Brisbane
  • 16. Why Python? One of the founders likes it • • Rapid prototyping and development • Reasonably fast • Readable code Suitable even for large projects • Developing a Commercial Open Source Project with Python Slide 16 OSDC 2007, Brisbane
  • 17. Challenge: Little experience • Can't hire Python developers • Even in the Silicon Valley • Solution: – Just hire good (generic) developers – They can learn Developing a Commercial Open Source Project with Python Slide 17 OSDC 2007, Brisbane
  • 18. Challenge: Tainted by past life • Team experience in other languages • Not using Python to its full potential • Solution: – Understand pythonic – Read: Python is not Java – Share knowledge: Code reviews Developing a Commercial Open Source Project with Python Slide 18 OSDC 2007, Brisbane
  • 19. Challenge: Getting carried away • Powerful and very (!) dynamic: >>> class Foo(object): >>> def hello(self): >>> print “Hello World!” >>> x = Foo() >>> dir(x) [ .......... , 'hello'] >>> x.bar = 123 >>> dir(x) [ .......... , 'bar', 'hello'] • Solution: – Create conventional looking APIs – Use those APIs as documentation Developing a Commercial Open Source Project with Python Slide 19 OSDC 2007, Brisbane
  • 20. Challenge: Why didn't you just use...? • Python comes with Batteries included • Don't know all the libraries have to offer • Write yourself? Oh, the temptation! • Solution: – Learn to use Google – Read Python Cookbook and others – Share knowledge: Code reviews Developing a Commercial Open Source Project with Python Slide 20 OSDC 2007, Brisbane
  • 21. Challenge: Third-party package risks 1 • Import chain madness • Some packages rely on C extensions • Normally: Don't reinvent the wheel • Solution: – Watch what you import – Inventing a little wheel can be helpful Developing a Commercial Open Source Project with Python Slide 21 OSDC 2007, Brisbane
  • 22. Challenge: Third-party package risks 2 • So far, no bugs in core libraries • Bugs in third-party packages • Included patched packages in the installer • Solution: – Speed up acceptance time for submitted patches – Provide patch, test cases, detailed docs Developing a Commercial Open Source Project with Python Slide 22 OSDC 2007, Brisbane
  • 23. Challenge: The GIL • Can't use multiple cores with threads • Solution 1: – Use multi-processing • Solution 2: – mod_wsgi Developing a Commercial Open Source Project with Python Slide 23 OSDC 2007, Brisbane
  • 24. Challenge: Hidden bugs • No compiler to catch typos • Duck typing • Solution: – Unit testing: pyunit, buildbot – Coverage testing: figleaf, buildbot Developing a Commercial Open Source Project with Python Slide 24 OSDC 2007, Brisbane
  • 25. The end Any questions? jbrendel@snaplogic.org Developing a Commercial Open Source Project with Python Slide 25 OSDC 2007, Brisbane