SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

Python Programming - XIII. GUI Programming
Python Programming - XIII. GUI ProgrammingPython Programming - XIII. GUI Programming
Python Programming - XIII. GUI Programming
Ranel 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 stack
Fliptop
 
Python quick guide1
Python quick guide1Python quick guide1
Python quick guide1
Kanchilug
 

Mais procurados (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
 

Destaque

Enterprise(d) Tomcat & httpd
Enterprise(d) Tomcat & httpdEnterprise(d) Tomcat & httpd
Enterprise(d) Tomcat & httpd
Vaclav Tunka
 
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
Carlos Sanchez
 

Destaque (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
 

Semelhante a A commercial open source project in Python

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
WSO2
 

Semelhante a 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
 

Último

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
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
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 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...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
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
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

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