SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Contributing to OSS in
                 a commercial non-OSS
                 environment




                                        Mike Taczak
                           mtaczak@mailtrust.com
25/11/08
                 Mailtrust, a division of Rackspace
           www.mailtrust.com | www.rackspace.com
Overview

□
    What is Mailtrust
□
    What OSS does Mailtrust use
□
    How has Mailtrust contributed to Funambol
□
    Design challenges
□
    Review of integration strategies




                                           2
□
    Formerly Webmail.us
□
    Now a division of Rackspace
       ◊   Recently went public
□
    Business-class email hosting
□
    Noteworthy Webmail
       ◊   Full-featured AJAX-y webmail application
       ◊   Competitive collaboration suite


                                                      3
Mailtrust and Open Source

□
    Heavily Used         □
                             Main Contributions
       ◊   PHP                  ◊   Funambol
       ◊   mySQL                ◊   Dovecot
       ◊   Hadoop
       ◊   Postfix
       ◊   amavisd
       ◊   policyd
       ◊   Many others


                                                  4
Contributions to Funambol

□
    DS-Server
       ◊   Webmail Connector
□
    Outlook Client
       ◊   Support for 'custom fields'
□
    Blackberry PIM Client
       ◊   Initial development in-house
       ◊   Now part of Funambol's core clients
□
    iPhone client
       ◊   2 weeks in Italy
                                                 5
Goals for Sync Service

□
    Synchronize shared data
       ◊   Read-only
□
    Give back to open source community
       ◊   But keep proprietary systems private
□
    Focus on a few highly refined clients
       ◊   Outlook
       ◊   Blackberry
       ◊   Windows Mobile


                                                  6
System Architecture Evolution, Part 1

Initial design:
●
  Very Simple
●
  Connector hit DBs directly

                                                Webmail




                                                Webmail
                                                Database
                                   Data
                    Webmail
        DS-Server              Authen
                    Module           tication
                                                  User
                                                Database

                                                           7
System Architecture Evolution, Part 1

Lessons Learned:
●
  2 code bases to maintain!
●
  Data validation duplicated
●
  Proprietary DB schemas in open
    source code!                                      Webmail
 ●
     We could not launch with this
     architecture




                                                      Webmail
                                                      Database
                                         Data
                       Webmail
          DS-Server                  Authen
                       Module              tication
                                                        User
                                                      Database

                                                                 8
System Architecture Evolution, Part 2

Introducing the Webmail-Sync API
●
  Implementation of SyncSource
   interface in API form
●
  Data parsing now in php
    ●
        Implemented a large Vobj library                Webmail
    ●
        Hope to open-source it!                         Database
●
    Uses existing structures and validation
●
    HTTP + jsON
    ●
        Connector generic enough for other uses
●
    Clear separation between Funambol
      and Webmail


                          Webmail
             DS-Server                            API     Webmail
                          Module




                                                                    9
System Architecture Evolution, Part 2

Lessons Learned
●
  PHP has an execution time limit
    ●
        Don't do too much at once
    ●
        Know your technologies intimately
●
    Distance matters                                     Webmail
    ●
        Reliability, speed deteriorates                  Database
    ●
        Retry failed requests
●
    getSyncItemByKey is slow
    ●
        Page calls and cache data




              DS-Server
                           Webmail        2000     API     Webmail
                           Module         Miles!


                                                                     10
System Architecture Evolution, Part 3

Batching calls to API
●
  Can't batch calls w/ standard code
    ●
        addItem requires returning a GUID
●
    Went one layer higher
    ●
        New BatchedSyncStrategy                     Webmail
    ●
        New BatchedSyncSource                       Database
    ●
        Completely compatible with original
●
    Reduced calls by 50-90%
                        Strategy




                                   Webmail
            DS-Server                         API     Webmail
                                   Module




                                                                11
System Architecture Evolution, Part 3

Lessons Learned:
●
  The Strategy is complicated
●
  Test, Test, Test
●
  Funambol is very flexible to these
    kind of changes                           Webmail
                                              Database
                   Strategy




                              Webmail
       DS-Server                        API     Webmail
                              Module




                                                          12
System Architecture Evolution, Part 4

New Problems
●
  Cannot upload to webmail and
    sync at the same time!
●
  Do not want load from API
    processing affecting webmail              Webmail
    users                                     Database
                   Strategy




                              Webmail
       DS-Server                        API     Webmail
                              Module




                                                          13
System Architecture Evolution, Part 4

Lessons Learned:
●
  Dedicate systems whenever                   Webmail
possible
●
  Scale services independently



                                              Webmail
                                              Database




                                                Dedicated
                   Strategy




                              Webmail           Webmail
       DS-Server                        API
                              Module               For
                                                  Sync



                                                            14
System Architecture Evolution, Part 5

New Problems, Again!
●
  Network connectivity issues                       Webmail
   caused duplicates
    ●
        Requests to addItems failed, and
        were retried
●
    Sync was hitting webmail
      databases too hard
    ●
        50 calendars can have a lot of data         Webmail
                                                    Database




                                                      Dedicated
                        Strategy




                                   Webmail            Webmail
            DS-Server                         API
                                   Module                For
                                                        Sync



                                                                  15
System Architecture Evolution, Part 5

Lessons Learned:
●
  Don't retry 'dangerous' commands                              Webmail
●
  Database connections are limited
    resources
●
  Cache everything reasonable!
    ●
        Database requests
    ●
        API requests!                                          Webmail
●
    Open source has a solution                                 Database



                                                               memcached


                                             memcached

                                                                 Dedicated
                        Strategy




                                   Webmail                       Webmail
            DS-Server                                    API
                                   Module                           For
                                                                   Sync



                                                                             16
System Architecture – Misc details

□
    SyncSourceRedirectSynclet
       ◊   Replaces remote URI in requests
       ◊   Uses content types sent by client, has defaults
       ◊   'contacts' => 'contacts-vcard21' or 'contacts-sif'
       ◊   Easier for users to configure devices
       ◊   Guarantees clients get the preferred type, if
            available




                                                                17
System Architecture – Misc details

□
    SessionConnectionLimiterSynclet
       ◊   Disconnects a session that has lasted 'too long'
       ◊   Protects service from runaway clients




                                                              18
System Architecture – Misc details

□
    Authentication
       ◊   Moved queries to mysql stored procedures
       ◊   Keeps DB schema out of code and configuration
       ◊   Allows installations to redefine these procedures




                                                               19
Summary

□
    Use abstractions to hide proprietary
    details
       ◊   Write open logic, and share it!
□
    Physically and logically separate open and
    closed source programs
       ◊   API separated synchronization logic from
            our proprietary systems and data
       ◊   Stored procedures hide our database
            behind an interface

                                                      20
Summary, cont.

□
    Rely on configurations for details
       ◊   Funambol does this already – model after
            them
       ◊   Requires flexible code, just the kind open
            source needs
□
    Work at a great company
       ◊   The kind that values open source
       ◊   The kind that lets you give back!


                                                        21
Summary, cont.

□
    Coordinate with your community
       ◊   Communication is key
       ◊   Work out a way to share code and plans
            often
              ◊   Still working on this one ;)
□
    Go to Italy!




                                                    22
The End

Questions? Comments?

mtaczak@mailtrust.com   23

Mais conteúdo relacionado

Mais procurados

Gear6 and Scaling Website Performance: Caching Session and Profile Data with...
Gear6 and Scaling Website Performance:  Caching Session and Profile Data with...Gear6 and Scaling Website Performance:  Caching Session and Profile Data with...
Gear6 and Scaling Website Performance: Caching Session and Profile Data with...Gear6
 
PACLUG sametime presentation
PACLUG sametime presentationPACLUG sametime presentation
PACLUG sametime presentationamhiggins
 
Pabug Presentation Final
Pabug Presentation   FinalPabug Presentation   Final
Pabug Presentation FinalMelissa Miller
 
facebook architecture for 600M users
facebook architecture for 600M usersfacebook architecture for 600M users
facebook architecture for 600M usersJongyoon Choi
 
Adm02. IBM Connections Adminblast
Adm02. IBM Connections AdminblastAdm02. IBM Connections Adminblast
Adm02. IBM Connections Adminblastpanagenda
 
Jee技术在移动互联网中的应用
Jee技术在移动互联网中的应用Jee技术在移动互联网中的应用
Jee技术在移动互联网中的应用javabloger
 
TechFuse 2012: Rich Coexistence
TechFuse 2012: Rich CoexistenceTechFuse 2012: Rich Coexistence
TechFuse 2012: Rich CoexistenceAvtex
 
Str02. IBM Application Modernization with panagenda ApplicationInsights
Str02. IBM Application Modernization with panagenda ApplicationInsightsStr02. IBM Application Modernization with panagenda ApplicationInsights
Str02. IBM Application Modernization with panagenda ApplicationInsightspanagenda
 
WebSphere Application Server Family (Editions Comparison)
WebSphere Application Server Family (Editions Comparison)WebSphere Application Server Family (Editions Comparison)
WebSphere Application Server Family (Editions Comparison)ejlp12
 
Integration of Web Service Stacks in an Esb
Integration of Web Service Stacks in an EsbIntegration of Web Service Stacks in an Esb
Integration of Web Service Stacks in an EsbWen Zhu
 
Enhancing the User Experience for Multi-Pod VMware View Deployments
Enhancing the User Experience for Multi-Pod VMware View DeploymentsEnhancing the User Experience for Multi-Pod VMware View Deployments
Enhancing the User Experience for Multi-Pod VMware View Deployments1CloudRoad.com
 

Mais procurados (17)

Gear6 and Scaling Website Performance: Caching Session and Profile Data with...
Gear6 and Scaling Website Performance:  Caching Session and Profile Data with...Gear6 and Scaling Website Performance:  Caching Session and Profile Data with...
Gear6 and Scaling Website Performance: Caching Session and Profile Data with...
 
EMAIL
EMAIL EMAIL
EMAIL
 
Web Hosting
Web HostingWeb Hosting
Web Hosting
 
Exchange 2013 ABC's: Architecture, Best Practices and Client Access
Exchange 2013 ABC's: Architecture, Best Practices and Client AccessExchange 2013 ABC's: Architecture, Best Practices and Client Access
Exchange 2013 ABC's: Architecture, Best Practices and Client Access
 
PACLUG sametime presentation
PACLUG sametime presentationPACLUG sametime presentation
PACLUG sametime presentation
 
Qcon
QconQcon
Qcon
 
Pabug Presentation Final
Pabug Presentation   FinalPabug Presentation   Final
Pabug Presentation Final
 
Prudhvi
PrudhviPrudhvi
Prudhvi
 
facebook architecture for 600M users
facebook architecture for 600M usersfacebook architecture for 600M users
facebook architecture for 600M users
 
Adm02. IBM Connections Adminblast
Adm02. IBM Connections AdminblastAdm02. IBM Connections Adminblast
Adm02. IBM Connections Adminblast
 
Jee技术在移动互联网中的应用
Jee技术在移动互联网中的应用Jee技术在移动互联网中的应用
Jee技术在移动互联网中的应用
 
TechFuse 2012: Rich Coexistence
TechFuse 2012: Rich CoexistenceTechFuse 2012: Rich Coexistence
TechFuse 2012: Rich Coexistence
 
Str02. IBM Application Modernization with panagenda ApplicationInsights
Str02. IBM Application Modernization with panagenda ApplicationInsightsStr02. IBM Application Modernization with panagenda ApplicationInsights
Str02. IBM Application Modernization with panagenda ApplicationInsights
 
WebSphere Application Server Family (Editions Comparison)
WebSphere Application Server Family (Editions Comparison)WebSphere Application Server Family (Editions Comparison)
WebSphere Application Server Family (Editions Comparison)
 
What's new in Exchange 2013?
What's new in Exchange 2013?What's new in Exchange 2013?
What's new in Exchange 2013?
 
Integration of Web Service Stacks in an Esb
Integration of Web Service Stacks in an EsbIntegration of Web Service Stacks in an Esb
Integration of Web Service Stacks in an Esb
 
Enhancing the User Experience for Multi-Pod VMware View Deployments
Enhancing the User Experience for Multi-Pod VMware View DeploymentsEnhancing the User Experience for Multi-Pod VMware View Deployments
Enhancing the User Experience for Multi-Pod VMware View Deployments
 

Destaque

Destaque (7)

Restructuring rails
Restructuring railsRestructuring rails
Restructuring rails
 
Five gems
Five gemsFive gems
Five gems
 
From the Keyboard to the Community
From the Keyboard to the CommunityFrom the Keyboard to the Community
From the Keyboard to the Community
 
Twitter API and Startup Ideas
Twitter API and Startup IdeasTwitter API and Startup Ideas
Twitter API and Startup Ideas
 
Rails 3.1 Asset Pipeline
Rails 3.1 Asset PipelineRails 3.1 Asset Pipeline
Rails 3.1 Asset Pipeline
 
Cultivating Community
Cultivating CommunityCultivating Community
Cultivating Community
 
Silonas Citability
Silonas CitabilitySilonas Citability
Silonas Citability
 

Semelhante a Contributing to OSS in a commercial non-OSS environment

LinkedIn Communication Architecture
LinkedIn Communication ArchitectureLinkedIn Communication Architecture
LinkedIn Communication ArchitectureLinkedIn
 
Social Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech DaySocial Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech DayTechMaster Vietnam
 
Intro in JavaEE world (TU Olomouc)
Intro in JavaEE world (TU Olomouc)Intro in JavaEE world (TU Olomouc)
Intro in JavaEE world (TU Olomouc)blahap
 
Will Web 2.0 applications break the cloud?
Will Web 2.0 applications break the cloud?Will Web 2.0 applications break the cloud?
Will Web 2.0 applications break the cloud?Flaskdata.io
 
Java Web Programming [1/9] : Introduction to Web Application
Java Web Programming [1/9] : Introduction to Web ApplicationJava Web Programming [1/9] : Introduction to Web Application
Java Web Programming [1/9] : Introduction to Web ApplicationIMC Institute
 
Introduction to the Azure Service Bus EAI & EDI featuresiedi features
Introduction to the Azure Service Bus EAI & EDI featuresiedi featuresIntroduction to the Azure Service Bus EAI & EDI featuresiedi features
Introduction to the Azure Service Bus EAI & EDI featuresiedi featuresSandro Pereira
 
M3 Modernization Case Study
M3 Modernization Case StudyM3 Modernization Case Study
M3 Modernization Case StudyADC Austin Tech
 
Couchbase presentation
Couchbase presentationCouchbase presentation
Couchbase presentationsharonyb
 
Membase Meetup - Silicon Valley
Membase Meetup - Silicon ValleyMembase Meetup - Silicon Valley
Membase Meetup - Silicon ValleyMembase
 
Membase Introduction
Membase IntroductionMembase Introduction
Membase IntroductionMembase
 
Google App Engine At A Glance
Google App Engine At A GlanceGoogle App Engine At A Glance
Google App Engine At A GlanceStefan Christoph
 
How AOL Advertising Uses NoSQL to Make Millions of Smart Targeting Decisions ...
How AOL Advertising Uses NoSQL to Make Millions of Smart Targeting Decisions ...How AOL Advertising Uses NoSQL to Make Millions of Smart Targeting Decisions ...
How AOL Advertising Uses NoSQL to Make Millions of Smart Targeting Decisions ...DATAVERSITY
 
WebClient Overview and 1.8 Roadmap
WebClient Overview and 1.8 RoadmapWebClient Overview and 1.8 Roadmap
WebClient Overview and 1.8 RoadmapCM First Group
 
A Flow Based Approach for End to End Mashups
A Flow Based Approach for End to End MashupsA Flow Based Approach for End to End Mashups
A Flow Based Approach for End to End Mashupsraniakhalaf
 
Advanced Windows Hosting
Advanced Windows HostingAdvanced Windows Hosting
Advanced Windows Hostingwebhostingguy
 
Advanced Windows Hosting
Advanced Windows HostingAdvanced Windows Hosting
Advanced Windows Hostingwebhostingguy
 

Semelhante a Contributing to OSS in a commercial non-OSS environment (20)

LinkedIn Communication Architecture
LinkedIn Communication ArchitectureLinkedIn Communication Architecture
LinkedIn Communication Architecture
 
Social Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech DaySocial Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech Day
 
Intro in JavaEE world (TU Olomouc)
Intro in JavaEE world (TU Olomouc)Intro in JavaEE world (TU Olomouc)
Intro in JavaEE world (TU Olomouc)
 
Will Web 2.0 applications break the cloud?
Will Web 2.0 applications break the cloud?Will Web 2.0 applications break the cloud?
Will Web 2.0 applications break the cloud?
 
Java Web Programming [1/9] : Introduction to Web Application
Java Web Programming [1/9] : Introduction to Web ApplicationJava Web Programming [1/9] : Introduction to Web Application
Java Web Programming [1/9] : Introduction to Web Application
 
Introduction to the Azure Service Bus EAI & EDI featuresiedi features
Introduction to the Azure Service Bus EAI & EDI featuresiedi featuresIntroduction to the Azure Service Bus EAI & EDI featuresiedi features
Introduction to the Azure Service Bus EAI & EDI featuresiedi features
 
Db trends final
Db trends   finalDb trends   final
Db trends final
 
20080528dublinpt1
20080528dublinpt120080528dublinpt1
20080528dublinpt1
 
M3 Modernization Case Study
M3 Modernization Case StudyM3 Modernization Case Study
M3 Modernization Case Study
 
Couchbase presentation
Couchbase presentationCouchbase presentation
Couchbase presentation
 
CV
CVCV
CV
 
Membase Meetup - Silicon Valley
Membase Meetup - Silicon ValleyMembase Meetup - Silicon Valley
Membase Meetup - Silicon Valley
 
Membase Introduction
Membase IntroductionMembase Introduction
Membase Introduction
 
Google App Engine At A Glance
Google App Engine At A GlanceGoogle App Engine At A Glance
Google App Engine At A Glance
 
How AOL Advertising Uses NoSQL to Make Millions of Smart Targeting Decisions ...
How AOL Advertising Uses NoSQL to Make Millions of Smart Targeting Decisions ...How AOL Advertising Uses NoSQL to Make Millions of Smart Targeting Decisions ...
How AOL Advertising Uses NoSQL to Make Millions of Smart Targeting Decisions ...
 
WebClient Overview and 1.8 Roadmap
WebClient Overview and 1.8 RoadmapWebClient Overview and 1.8 Roadmap
WebClient Overview and 1.8 Roadmap
 
A Flow Based Approach for End to End Mashups
A Flow Based Approach for End to End MashupsA Flow Based Approach for End to End Mashups
A Flow Based Approach for End to End Mashups
 
Advanced Windows Hosting
Advanced Windows HostingAdvanced Windows Hosting
Advanced Windows Hosting
 
Advanced Windows Hosting
Advanced Windows HostingAdvanced Windows Hosting
Advanced Windows Hosting
 
SQL Azure
SQL AzureSQL Azure
SQL Azure
 

Mais de Funambol

Funambol Automated Tests for SyncML Clients
Funambol Automated Tests for SyncML ClientsFunambol Automated Tests for SyncML Clients
Funambol Automated Tests for SyncML ClientsFunambol
 
Sugar and Spice - linking SugarCRM with Funambol
Sugar and Spice - linking SugarCRM with FunambolSugar and Spice - linking SugarCRM with Funambol
Sugar and Spice - linking SugarCRM with FunambolFunambol
 
Syncevolution: Open Source and Funambol
Syncevolution: Open Source and FunambolSyncevolution: Open Source and Funambol
Syncevolution: Open Source and FunambolFunambol
 
Funambol C++ API
Funambol C++ APIFunambol C++ API
Funambol C++ APIFunambol
 
Funabol Connector Development Roadmap
Funabol Connector Development RoadmapFunabol Connector Development Roadmap
Funabol Connector Development RoadmapFunambol
 
Funambol Java Clients Development: The Blackberry Case
Funambol Java Clients Development: The Blackberry CaseFunambol Java Clients Development: The Blackberry Case
Funambol Java Clients Development: The Blackberry CaseFunambol
 
Funambol Server Architecture
Funambol Server ArchitectureFunambol Server Architecture
Funambol Server ArchitectureFunambol
 
Funambol Community Programs
Funambol Community ProgramsFunambol Community Programs
Funambol Community ProgramsFunambol
 

Mais de Funambol (8)

Funambol Automated Tests for SyncML Clients
Funambol Automated Tests for SyncML ClientsFunambol Automated Tests for SyncML Clients
Funambol Automated Tests for SyncML Clients
 
Sugar and Spice - linking SugarCRM with Funambol
Sugar and Spice - linking SugarCRM with FunambolSugar and Spice - linking SugarCRM with Funambol
Sugar and Spice - linking SugarCRM with Funambol
 
Syncevolution: Open Source and Funambol
Syncevolution: Open Source and FunambolSyncevolution: Open Source and Funambol
Syncevolution: Open Source and Funambol
 
Funambol C++ API
Funambol C++ APIFunambol C++ API
Funambol C++ API
 
Funabol Connector Development Roadmap
Funabol Connector Development RoadmapFunabol Connector Development Roadmap
Funabol Connector Development Roadmap
 
Funambol Java Clients Development: The Blackberry Case
Funambol Java Clients Development: The Blackberry CaseFunambol Java Clients Development: The Blackberry Case
Funambol Java Clients Development: The Blackberry Case
 
Funambol Server Architecture
Funambol Server ArchitectureFunambol Server Architecture
Funambol Server Architecture
 
Funambol Community Programs
Funambol Community ProgramsFunambol Community Programs
Funambol Community Programs
 

Último

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
 
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
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
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)wesley chun
 
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 DevelopmentsTrustArc
 
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
 
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
 
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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
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
 
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 2024The Digital Insurer
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
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
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
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
 

Último (20)

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
 
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
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
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)
 
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
 
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
 
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...
 
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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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...
 

Contributing to OSS in a commercial non-OSS environment

  • 1. Contributing to OSS in a commercial non-OSS environment Mike Taczak mtaczak@mailtrust.com 25/11/08 Mailtrust, a division of Rackspace www.mailtrust.com | www.rackspace.com
  • 2. Overview □ What is Mailtrust □ What OSS does Mailtrust use □ How has Mailtrust contributed to Funambol □ Design challenges □ Review of integration strategies 2
  • 3. Formerly Webmail.us □ Now a division of Rackspace ◊ Recently went public □ Business-class email hosting □ Noteworthy Webmail ◊ Full-featured AJAX-y webmail application ◊ Competitive collaboration suite 3
  • 4. Mailtrust and Open Source □ Heavily Used □ Main Contributions ◊ PHP ◊ Funambol ◊ mySQL ◊ Dovecot ◊ Hadoop ◊ Postfix ◊ amavisd ◊ policyd ◊ Many others 4
  • 5. Contributions to Funambol □ DS-Server ◊ Webmail Connector □ Outlook Client ◊ Support for 'custom fields' □ Blackberry PIM Client ◊ Initial development in-house ◊ Now part of Funambol's core clients □ iPhone client ◊ 2 weeks in Italy 5
  • 6. Goals for Sync Service □ Synchronize shared data ◊ Read-only □ Give back to open source community ◊ But keep proprietary systems private □ Focus on a few highly refined clients ◊ Outlook ◊ Blackberry ◊ Windows Mobile 6
  • 7. System Architecture Evolution, Part 1 Initial design: ● Very Simple ● Connector hit DBs directly Webmail Webmail Database Data Webmail DS-Server Authen Module tication User Database 7
  • 8. System Architecture Evolution, Part 1 Lessons Learned: ● 2 code bases to maintain! ● Data validation duplicated ● Proprietary DB schemas in open source code! Webmail ● We could not launch with this architecture Webmail Database Data Webmail DS-Server Authen Module tication User Database 8
  • 9. System Architecture Evolution, Part 2 Introducing the Webmail-Sync API ● Implementation of SyncSource interface in API form ● Data parsing now in php ● Implemented a large Vobj library Webmail ● Hope to open-source it! Database ● Uses existing structures and validation ● HTTP + jsON ● Connector generic enough for other uses ● Clear separation between Funambol and Webmail Webmail DS-Server API Webmail Module 9
  • 10. System Architecture Evolution, Part 2 Lessons Learned ● PHP has an execution time limit ● Don't do too much at once ● Know your technologies intimately ● Distance matters Webmail ● Reliability, speed deteriorates Database ● Retry failed requests ● getSyncItemByKey is slow ● Page calls and cache data DS-Server Webmail 2000 API Webmail Module Miles! 10
  • 11. System Architecture Evolution, Part 3 Batching calls to API ● Can't batch calls w/ standard code ● addItem requires returning a GUID ● Went one layer higher ● New BatchedSyncStrategy Webmail ● New BatchedSyncSource Database ● Completely compatible with original ● Reduced calls by 50-90% Strategy Webmail DS-Server API Webmail Module 11
  • 12. System Architecture Evolution, Part 3 Lessons Learned: ● The Strategy is complicated ● Test, Test, Test ● Funambol is very flexible to these kind of changes Webmail Database Strategy Webmail DS-Server API Webmail Module 12
  • 13. System Architecture Evolution, Part 4 New Problems ● Cannot upload to webmail and sync at the same time! ● Do not want load from API processing affecting webmail Webmail users Database Strategy Webmail DS-Server API Webmail Module 13
  • 14. System Architecture Evolution, Part 4 Lessons Learned: ● Dedicate systems whenever Webmail possible ● Scale services independently Webmail Database Dedicated Strategy Webmail Webmail DS-Server API Module For Sync 14
  • 15. System Architecture Evolution, Part 5 New Problems, Again! ● Network connectivity issues Webmail caused duplicates ● Requests to addItems failed, and were retried ● Sync was hitting webmail databases too hard ● 50 calendars can have a lot of data Webmail Database Dedicated Strategy Webmail Webmail DS-Server API Module For Sync 15
  • 16. System Architecture Evolution, Part 5 Lessons Learned: ● Don't retry 'dangerous' commands Webmail ● Database connections are limited resources ● Cache everything reasonable! ● Database requests ● API requests! Webmail ● Open source has a solution Database memcached memcached Dedicated Strategy Webmail Webmail DS-Server API Module For Sync 16
  • 17. System Architecture – Misc details □ SyncSourceRedirectSynclet ◊ Replaces remote URI in requests ◊ Uses content types sent by client, has defaults ◊ 'contacts' => 'contacts-vcard21' or 'contacts-sif' ◊ Easier for users to configure devices ◊ Guarantees clients get the preferred type, if available 17
  • 18. System Architecture – Misc details □ SessionConnectionLimiterSynclet ◊ Disconnects a session that has lasted 'too long' ◊ Protects service from runaway clients 18
  • 19. System Architecture – Misc details □ Authentication ◊ Moved queries to mysql stored procedures ◊ Keeps DB schema out of code and configuration ◊ Allows installations to redefine these procedures 19
  • 20. Summary □ Use abstractions to hide proprietary details ◊ Write open logic, and share it! □ Physically and logically separate open and closed source programs ◊ API separated synchronization logic from our proprietary systems and data ◊ Stored procedures hide our database behind an interface 20
  • 21. Summary, cont. □ Rely on configurations for details ◊ Funambol does this already – model after them ◊ Requires flexible code, just the kind open source needs □ Work at a great company ◊ The kind that values open source ◊ The kind that lets you give back! 21
  • 22. Summary, cont. □ Coordinate with your community ◊ Communication is key ◊ Work out a way to share code and plans often ◊ Still working on this one ;) □ Go to Italy! 22