SlideShare ist ein Scribd-Unternehmen logo
1 von 92
Downloaden Sie, um offline zu lesen
Building a platform from open source at Yahoo!


                                              Dustin Whittle – Yahoo! Developer Network
          Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
Overview


•     Why symfony?
•     symfony vs ysymfony
•     What does scaling really mean?
•     Social Search: Delicious and Answers
•     Yahoo! Open Strategy
     –    What is the Yahoo! Open Stack?
     –    Application Platform + Developer Tool
•     Developer Tools
     –    YUI, Design Patterns, Tutorials
•     Data (YQL) & Social APIs
     –    YQL, Geo, Profiles, Connections, Updates, …
     –    YOS SDK for PHP
•     Building an open application with symfony and YOS
     –    OAuth / YQL / OpenSocial


                  Building a platform from open source at Yahoo! | Dus$n Whi*le 
Who am I?


•  Working with symfony since open source
•  symfony Core Team Member
•  Responsible for the development and support of
   symfony at Yahoo!
   –  Worked with Y! Answers, Delicious, Y! Widgets, Y!
      Bookmarks, Yahoo! Application Platform
•  Consultant
   –  Commercial symfony support + training (USA)



             Building a platform from open source at Yahoo! | Dus$n Whi*le 
EXAMPLES | TUTORIALS | CODE SAMPLES

DEVELOPER.YAHOO.COM


Building a platform from open source at Yahoo! | Dus$n Whi*le 
FREEBSD | LINUX | APACHE | PHP | MYSQL | BUGZILLA | HADOOP | SYMFONY

YAHOO! IS POWERED BY OPEN SOURCE
           TECHNOLOGIES
            Building a platform from open source at Yahoo! | Dus$n Whi*le 
W3C | MICROFORMATS | OAUTH | OPENID | OPENSOCIAL

YAHOO! EMBRACES OPEN STANDARDS


      Building a platform from open source at Yahoo! | Dus$n Whi*le 
RASMUS LERDORF | DOUG CROCKFORD | DOUG CUTTING | CHRISTIAN HEILMANN

YAHOO! HIRES OPEN SOURCE DEVELOPERS


             Building a platform from open source at Yahoo! | Dus$n Whi*le 
YUI | BROWSER PLUS | DESIGN PATTERNS | R3 | YSLOW + PERFORMANCE RULES

YAHOO! GIVES BACK TO OPEN SOURCE


             Building a platform from open source at Yahoo! | Dus$n Whi*le 
YQL | PIPES | BOSS | CONTACTS | UPDATES | MAIL | DELICIOUS | FLICKR | UPCOMING |
HOTJOBS | MAPS | FIREEAGLE | GEOLOCATION | LOCAL | TRAFFIC | WEATHER | MUSIC |
                     ANSWERS | SHOPPING | FINANCE | TRAVEL

  YAHOO! SHARES ITS DATA THROUGH
    OPEN APIS AND WEB SERVICES
                Building a platform from open source at Yahoo! | Dus$n Whi*le 
Conferences | Hack Days | HackU | Tech Talks | YDN Theater

YAHOO! ENGAGES COMMUNITIES WITH OPEN
   HACK EVENTS AROUND THE WORLD

         Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
Users 

                                      Load Balancers 

                                           Frontend 
    Apache                                         PHP                        ysymfony / YUI 
 Custom Modules                   APC, PEAR, PECL, Custom Extensions 



                                           Backend 
MySQL/Oracle                  Web Services                          Ad API        User API 


                             FreeBSD 4.x/6.x, Linux 2.6.x 

            Building a platform from open source at Yahoo! | Dus$n Whi*le 
Y! needs from a frontend platfrom


•  Fit existing environment (RHEL/PHP5/Apache)
•  Development Cycle – How easy to develop, test, and
   deploy?
•  Clean separation between data, logic, and display (MVC)
•  Independent model layer to fit service oriented
   architecture
•  Extensible and pluggable
•  Internationalization and localization support
•  Detailed documentation and active community of support
•  Open source and ability to contribute back
            Building a platform from open source at Yahoo! | Dus$n Whi*le 
Why a frontend presentation platform?


•  Rasmus says “frameworks are not well suited for Y!”
   –  Build applications to requirements
      •  Do exactly what you need: no more, no less
      •  Understand that frameworks add a lot of overhead
      •  Choosing functional components is a better fit
•  Despite choosing open source or building your own
   –  Everyone uses a framework
   –  If you use open source, use only the pieces you need




             Building a platform from open source at Yahoo! | Dus$n Whi*le 
Why a framework at all?


•  Another software layer (ysymfony, yphp, yapache)
•  Factors out common patterns
   –  Code Layout
   –  Configuration
   –  URL Routing
   –  Authentication / Security
   –  Form Validation / Repopulation
   –  Internationalization / Localization
•  Encourages good design
•  Abstraction > Consistency > Maintainability

             Building a platform from open source at Yahoo! | Dus$n Whi*le 
The choice to adopt symfony?


•  Philosophy
   –  Full-stack framework for building complex web applications
   –  Adopt best ideas from anywhere, using existing code if
      available (Mojavi, Prado, Rails, Django)
•  Design
   –  Clean separation between Model, View, and Controller
   –  Controller using modules and actions
   –  Views using templates in straight PHP with helpers
   –  Easy to reuse view modules to compose a page
      •  Layouts, Components, Partials, Slots


              Building a platform from open source at Yahoo! | Dus$n Whi*le 
The choice to use symfony


•    Configurability / Flexibility
•    Features we do not want are easily disabled
•    Use of factories for easy customization
•    Documentation / Support Community
•    The Definitive Guide to symfony (free online)
•    Excellent tutorials and example applications
     –  Askeet & Jobeet
•  Active community with wiki, mailing lists, forums, irc
   channel

               Building a platform from open source at Yahoo! | Dus$n Whi*le 
Why ysymfony for Yahoo! teams?


•  Eliminate common patterns by adding a layer on PHP
   –  Code layout/structure (MVC)
   –  Configuration
   –  Internationalization
•  ysymfony is just a toolkit
   –  Learn one set of tools
      •  Shift between multiple projects
      •  Consistency
   –  Long term maintainability through platform



              Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
How Yahoo! uses symfony


•  Full Stack
   –  Yahoo! Bookmarks
   –  Yahoo! Answers
   –  Delicious
   –  Yahoo! Widgets
   –  Yahoo! Application Platform Developer Tool
   –  Corporate Reporting Tools
•  Components
   –  Forms
   –  Caching
   –  Routing

                Building a platform from open source at Yahoo! | Dus$n Whi*le 
symfony MVC framework




Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
A look at Yahoo! Answers


•  http://answers.yahoo.com
•  Yahoo! Answers is the largest collection of human
   knowledge on the Web with more than 135 million
   users and 515 million answers worldwide (Yahoo!
   Internal Data, March 2008).
•  Yahoo! Answers is the 2nd ranked education &
   reference site on the web (comScore)
•  Available in 26 markets and 12 languages



           Building a platform from open source at Yahoo! | Dus$n Whi*le 
Yahoo! Answers at the beginning


•  Started as a small development team on PHP4 from a
   fork of Yahoo! Taiwan Knowledge+
•  Launched December 2005 by December 2006 there
   were 60 million users and 65 million answers
•  The code base eventually became difficult to maintain
   and iterate new features
•  Large distributed development teams (US / UK)




           Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
The big picture


•  A complete platform for building web applications
   from frameworks
   –  PHP Framework
   –  JavaScript Framework
   –  CSS Framework
   –  UI Design Patterns + Best Practices
   –  Development Tools (logger, profiler, debugger, docs)
   –  Unit + Functional Testing Frameworks (LIME / YUI Test)
   –  Deployment Tools (rsync deployment system)



             Building a platform from open source at Yahoo! | Dus$n Whi*le 
What does Yahoo! change?


•  Minor changes to fit our environment (bsd/php/apache)
   –  Most of our changes are easily implemented via factories
•  Added dimensions to configurations
   (ysfDimensionsPlugin)
•  Integrate R3 translation/template management
   (ysfR3Plugin)
   –  R3 - http://developer.yahoo.com/r3/
•  Dropped the ORM and pushed down the stack (SOA)
   –  Added a parallel API Dispatcher (ysfAPIClientPlugin)
•  Created a build and deployment solution (ysfBuildPlugin)
•  Integrate support for Y! User Interface libraries
   (ysfYUIPlugin)

              Building a platform from open source at Yahoo! | Dus$n Whi*le 
Propel or Doctrine or ???


•  No ORM for large projects
•  Propel or Doctrine for large projects
   –  Doctrine for internal projects (best supported)
•  Service Oriented Architecture
   –  Platforms as services (reusable to all)
   –  No heavy lifting, push down the stack
   –  Thin Controller/Fat Model (where model == services)
•  Java/C++/Erlang + JSON/XML



             Building a platform from open source at Yahoo! | Dus$n Whi*le 
Localizing the experience with dimensions


•  Cascading Configuration based on YAML
   –  Framework -> Project -> Application -> Module
•  Extending the cascade to be based on dimensions
   –  Dimensions can be anything (and can be chained together)
      •    Data Center + Environment for customizing configurations
      •    Culture for localizing user interface + data
      •    Theme for customizing look and feel
      •    User info (is user on corporate intranet?)
•  Caching


                Building a platform from open source at Yahoo! | Dus$n Whi*le 
symfony I18n + L10n


•  Translation + Template Management
  –  Integrated with symfony i18n + view layers
     •  <r3:trans>hello</r3:trans> vs __(‘hello’)
     •  Dictionary Management (YALA)
  –  SQLite/XLIFF Backend
•  Added tasks
  –  Importing/Exporting XLIFF dictionary
  –  Generating translations for projects
  –  Find missing strings



             Building a platform from open source at Yahoo! | Dus$n Whi*le 
A build and deployment system


•    Aggregate and minify stylesheets and javascripts
•    Rewrite templates, css, js for CDN (Akamai, S3, …)
•    Generate translations for configurations + templates
•    Generate configuration cache
•    Aggregate core classes + remove debug statements
•    Run lint, unit, functional tests
•    Package applications as .tgz
•    Deployment via rsync


              Building a platform from open source at Yahoo! | Dus$n Whi*le 
What does it mean to scale?


•  A system whose performance improves after adding
   hardware, proportionally to the capacity added, is said to
   be a scalable system.
•  High Availability + Scalability + Performance
•  Bigger dataset, more traffic, maintainable
•  Not about performance
   –  PHP is slow, but it is not your bottleneck
•  Languages do not scale, architectures do.
•  Planning to grow and planning to fail
   –  Capacity Planning
   –  Business Continuity Planning

              Building a platform from open source at Yahoo! | Dus$n Whi*le 
Scaling – Planning


•  Planning hardware purchases and hosting options to
   have as much as you need without breaking your
   wallet
•  Partitioning and distributing databases to support
   large datasets and simultaneous transactions
•  Monitoring your applications to find and clear
   bottlenecks
•  Providing services APIs and using services from other
   providers to increase your site's reach and capabilities
•  Think Minimal, Plan to grow, Plan to fail.

            Building a platform from open source at Yahoo! | Dus$n Whi*le 
Scaling – The basics in PHP


•  PHP is rarely the bottleneck
•  “Most performance comes not from the language, but from
   application design” - Rasmus
•  Share Nothing Architecture
   –  Independent, self-sufficient, no single point of contention
   –  No local storage = No PHP Sessions
       •  Use a database (works for distributed)
       •  Use a small signed cookie (ideal)
            –  Important data in database
            –  Individual expiration on session objects
            –  Small data items
   –  Use a distributed cache
       •  Memcache
•  Forget about small efficiencies -- Premature optimization is the
   root of all evil.

                 Building a platform from open source at Yahoo! | Dus$n Whi*le 
Scaling Databases – The basics


•  Master/Slave Replication
   –  First steps
   –  Helps with reads, writes are still bottleneck
•  Partitioning
   –  Segmenting data
•  Sharding (horizontal partitioning)
   –  Segmenting data onto different physical machines
   –  Make problems smaller, easier to grow



             Building a platform from open source at Yahoo! | Dus$n Whi*le 
Improving latency with Caching


•  Always use PHP opcode cache (APC, Xcache, etc)
   –  Use for routing and i18n cache
•  Memcache (distributed cache)
   –  Use for view cache
      •  Distributed invalidation can be a pain
      •  sfViewCacheManager makes this easy!
      •  Be intelligent about cache_keys (uri, user, state)
•  There is a fine line to caching
   –  At what point do you spend more time managing the cache,
      than reading from it?


              Building a platform from open source at Yahoo! | Dus$n Whi*le 
Tweaking Performance


•  Don’t use features you do not need
     –  settings.yml / factories.yml
•    Use core_compile (aggregate classes)
•    Remove debug statements (sfOptimizerPlugin)
•    Do not use .htaccess (move to real apache config)
•    Set a minimal include path
•    Increase realpath_cache_size + realpath_cache_ttl
•    Use apc.stat=0
•    Use @routeName
•    Do not use components in loop

                Building a platform from open source at Yahoo! | Dus$n Whi*le 
Do it yourself for cheap


•  Open source software = Free
  –  Apache
  –  PHP
  –  MySQL
  –  Memcache / Perlbal / MogileFS / Squid / Gearman
  –  symfony / Doctrine / Propel / Swift
  –  Nagios
•  Amazon Shared Infrastructure = Cheap
  –  EC2 Cloud Computing
  –  S3 Distributed Storage
  –  SimpleDB

            Building a platform from open source at Yahoo! | Dus$n Whi*le 
Yahoo! Open Strategy




          Building a platform from open source at Yahoo! | Dus$n Whi*le 
OPENID | XRDS | OAUTH | PORTABLE CONTACTS | OPEN SOCIAL

OPEN PLATFORMS + COLLABORATION


          Building a platform from open source at Yahoo! | Dus$n Whi*le 
The Open Web




        Building a platform from open source at Yahoo! | Dus$n Whi*le 
Y! OS – The Open Stack




          Building a platform from open source at Yahoo! | Dus$n Whi*le 
What does Yahoo! offer developers?

                                    •  Yahoo! Developer Network 
                                        •  Developer Tools (YUI, etc) 
                                    •  Social APIs 
                                        •  Profiles 
                                        •  ConnecWons 
                                        •  Updates 
                                    •  Data APIs 
                                        •  OAuth 
                                    •  Yahoo! Query Language 
                                    •  Yahoo! ApplicaWon PlaYorm 
                                        •  OpenSocial 

          Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
developer.yahoo.com




         Building a platform from open source at Yahoo! | Dus$n Whi*le 
What is Yahoo! Developer Network?


     The Yahoo! Developer Network offers open source tools and
         open data APIs to make it easy for developers to build
                      applications and mashups.

•  50+ APIs / Web Services
      –  Developer Dashboard
      –  Tutorials + Code Samples
      –  API Documentation

•    Yahoo! User Interface libraries + ASTRA
•    Design Patterns Library
•    PHP / Python / Ruby Dev Centers
•    Evangelism: Conferences / Theater / Blogs / Events

                    Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
Y! Developer Network – YUI Javascript

 •  JavaScript Framework
    –  Utilities - YAHOO, Dom, Event, Animation, Browser History
       Manager, Connection Manager, Cookie, DataSource, Drag and
       Drop, Element, Get, ImageLoader, JSON, Resize, Selector,
       Loader
    –  Controls / Widgets - AutoComplete, Button, Calendar, Charts,
       Color Picker, DataTable, ImageCropper, Rich Text Editor,
       Slider, Uploader
    –  Container (Module, Overlay, Panel, Tooltip, Dialog), Layout
       Manager, Menu, TabView, TreeView
    –  Debug – Logger, Profiler, Test

              Building a platform from open source at Yahoo! | Dus$n Whi*le 
Y! Developer Network – YUI CSS

 •  CSS Foundation
    –  Reset - Neutralizes browser CSS styles
    –  Base - Applies consistent style foundation
    –  Fonts - Foundation for typography and font-sizing
    –  Grids - Thousands of wireframe layouts
 •  User Interface Design Patterns Library
    –  Proven solutions to common interfaces
    –  http://developer.yahoo.com/ypatterns/
   –  Grade Browser Support / Progressive Enhancement


              Building a platform from open source at Yahoo! | Dus$n Whi*le 
Y! Developer Network – Documentation

 •  More than 275 functional examples
    –  http://developer.yahoo.com/yui/examples/
 •  YSlow + Performance Rules
    –  http://developer.yahoo.com/performance
 •  YUI Blog
    –  http://yuiblog.com/
 •  Mailing List @ Yahoo! Groups
    –  http://tech.groups.yahoo.com/group/ydn-javascript/



               Building a platform from open source at Yahoo! | Dus$n Whi*le 
A Query Language for the Web




       SELECT  * FROM INTERNET 
         Building a platform from open source at Yahoo! | Dus$n Whi*le 
Before YQL

 •  Thousands of Web Services that provide valuable data
 •  Require developers to read documentation and form
    URLs/queries.
 •  Data is isolated
 •  Needs combining, tweaking, shaping even after it gets
    to the developer.




             Building a platform from open source at Yahoo! | Dus$n Whi*le 
Y! Open Stack – YQL

 •  SQL-Like Language
    –  Synonymous with Data access
    –  Familiar to developers
    –  Expressive enough to get the right data
 •  Self Describing - show, desc table
 •  Allows you to query, filter and join data across Web
    Services.




              Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
YQL – Open Tables


    •    Twitter                                              •    Delicious
    •    Weather                                              •    Dopplr
    •    Wesabe                                               •    Friendfeed
    •    Whitepages                                           •    Github
    •    Zillow                                               •    New York Times
    •    ….                                                   •    Shopping




                     Building a platform from open source at Yahoo! | Dus$n Whi*le 
Available on github ‐ h[p://github.com/spullara/yql‐tables/ 
YQL – Open Tables




           Building a platform from open source at Yahoo! | Dus$n Whi*le 
YQL – Open Tables




           Building a platform from open source at Yahoo! | Dus$n Whi*le 
YQL – Open Tables




           Building a platform from open source at Yahoo! | Dus$n Whi*le 
YQL - Examples



 •    select * from social.connections
 •    select * from delicious.feeds.popular
 •    select * from flickr.photos.interestingness
 •    select * from friendfeed.status
 •    select * from github.checkins




               Building a platform from open source at Yahoo! | Dus$n Whi*le 
YQL – Javascript Execute


•  Allows executing of javascript on the server side to
   mashup (join, filter, etc)
•  Makes combining many web services very simple
•  Support for Oauth




            Building a platform from open source at Yahoo! | Dus$n Whi*le 
YQL – API End Points

 OAuth Endpoint
 •  http://query.yahooapis.com/v1/yql?q=...

 Public Endpoint
 •  http://query.yahooapis.com/v1/public/yql?q=

 YQL Console
 •  http://developer.yahoo.com/yql/console


            Building a platform from open source at Yahoo! | Dus$n Whi*le 
Y! Open Stack – Application Platform


  •  Allows developers to deploy their own web based
     applications on Yahoo!
  •  Multiple Views: Small and Canvas
  •  Social Context: the new Yahoo! Social Directory
  •  OpenSocial 0.8 Javascript APIs




            Building a platform from open source at Yahoo! | Dus$n Whi*le 
Y! Open Stack – Open Applications




           Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
Y! Open Stack – SDKs


                          PHP SDK Available 
                          Open and OAuth Applica$ons 




                          Ac$onScript 3 SDK Available 
                          Open Applica$ons 




                          Objec$veC SDK Available 
                          Open and OAuth Applica$ons 


           Building a platform from open source at Yahoo! | Dus$n Whi*le 
YOSSDK – Methods


 3‐Legged OAuth                                                2‐Legged OAuth 
 getSessionedUser                    (session)                 setSmallView            (applicaWon) 
 getOwner                        (session)                     query                   (applicaWon)         
 getUser                           (session) 
 query                               (session) 
 getPresence                    (user) 
 setPresence                    (user) 
 listUpdates                      (user) 
 listConnecWonUpdates    (user) 
 insertUpdate                   (user) 
 deleteUpdate                  (user) 
 loadProfile                      (user) 
 getConnecWons              (user) 
 getContacts                    (user) 
 setSmallView                 (user) 

                       Building a platform from open source at Yahoo! | Dus$n Whi*le 
YOSSDK – 2-Legged OAuth




Used For: 
‐  Public user data and open APIs 




               Building a platform from open source at Yahoo! | Dus$n Whi*le 
YOSSDK – 3-Legged OAuth




Used For: 
‐  Private data access 




                Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building an Open App : CommonGround




    Experience:  Basic Web Dev Knowledge – PHP/HTML/CSS/
    Javascript 

    What we are building: Common ground –  Find out what 
    you have in common with your social graph: music, 
    movies, books, hobbies. 

    What we will use: YOSSDK, YQL, YAP 



            Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 

            h*p://developer.yahoo.com/dashboard 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 
CommonGround available on GitHub




       http://github.com/dwhittle/commonground




           Building a platform from open source at Yahoo! | Dus$n Whi*le 
QUESTIONS?
(I will be around for the whole event, so please do say hello and ask questions)




               Building a platform from open source at Yahoo! | Dus$n Whi*le 
WANT TO JOIN YAHOO?
WE ARE HIRING AND HAVE INTERNSHIPS!

      Building a platform from open source at Yahoo! | Dus$n Whi*le 
ENJOY THE REST OF SYMFONYLIVE 2009 

            EXAMPLES | TUTORIALS | CODE SAMPLES
      DEVELOPER.YAHOO.COM
      Building a platform from open source at Yahoo! | Dus$n Whi*le 
Books worth reading




         Building a platform from open source at Yahoo! | Dus$n Whi*le 
Building a platform from open source at Yahoo! | Dus$n Whi*le 

Weitere ähnliche Inhalte

Andere mochten auch

A Scalable Approach to Deploying and Managing Appliances
A Scalable Approach to Deploying and Managing AppliancesA Scalable Approach to Deploying and Managing Appliances
A Scalable Approach to Deploying and Managing Applianceselliando dias
 
Things to notice about disneyland
Things to notice about disneylandThings to notice about disneyland
Things to notice about disneylandWendy Castleman
 
Guy Kawasaki's Enchantment
Guy Kawasaki's EnchantmentGuy Kawasaki's Enchantment
Guy Kawasaki's EnchantmentMark Silva
 
Corporate accelerators and disruptive innovation KITE Solutions Inc
Corporate accelerators and disruptive innovation KITE Solutions IncCorporate accelerators and disruptive innovation KITE Solutions Inc
Corporate accelerators and disruptive innovation KITE Solutions IncMark Silva
 
Brands for Augmented Reality Dev Ecosystem
Brands for Augmented Reality Dev EcosystemBrands for Augmented Reality Dev Ecosystem
Brands for Augmented Reality Dev EcosystemMark Silva
 

Andere mochten auch (6)

A Scalable Approach to Deploying and Managing Appliances
A Scalable Approach to Deploying and Managing AppliancesA Scalable Approach to Deploying and Managing Appliances
A Scalable Approach to Deploying and Managing Appliances
 
Things to notice about disneyland
Things to notice about disneylandThings to notice about disneyland
Things to notice about disneyland
 
Guy Kawasaki's Enchantment
Guy Kawasaki's EnchantmentGuy Kawasaki's Enchantment
Guy Kawasaki's Enchantment
 
Corporate accelerators and disruptive innovation KITE Solutions Inc
Corporate accelerators and disruptive innovation KITE Solutions IncCorporate accelerators and disruptive innovation KITE Solutions Inc
Corporate accelerators and disruptive innovation KITE Solutions Inc
 
Brands for Augmented Reality Dev Ecosystem
Brands for Augmented Reality Dev EcosystemBrands for Augmented Reality Dev Ecosystem
Brands for Augmented Reality Dev Ecosystem
 
Smarter social workforce
Smarter social workforceSmarter social workforce
Smarter social workforce
 

Ähnlich wie Building A Platform From Open Source At Yahoo

Building A Platform From Open Source At Yahoo
Building A Platform From Open Source At YahooBuilding A Platform From Open Source At Yahoo
Building A Platform From Open Source At YahooDustin Whittle
 
Introduction to PHP - SDPHP
Introduction to PHP - SDPHPIntroduction to PHP - SDPHP
Introduction to PHP - SDPHPEric Johnson
 
Federico Feroldi: PHP in Yahoo!
Federico Feroldi: PHP in Yahoo!Federico Feroldi: PHP in Yahoo!
Federico Feroldi: PHP in Yahoo!Francesco Fullone
 
Federico Feroldi Php In Yahoo
Federico Feroldi Php In YahooFederico Feroldi Php In Yahoo
Federico Feroldi Php In YahooFederico Feroldi
 
PHP Training in Coimbatore|PHP training Coimbatore|PHP certification
PHP Training in Coimbatore|PHP training Coimbatore|PHP certificationPHP Training in Coimbatore|PHP training Coimbatore|PHP certification
PHP Training in Coimbatore|PHP training Coimbatore|PHP certificationsathyancegon
 
Open_Source_for_DT
Open_Source_for_DTOpen_Source_for_DT
Open_Source_for_DTwebuploader
 
Building Dynamic Web Applications on i5 with PHP
Building Dynamic Web Applications on i5 with PHPBuilding Dynamic Web Applications on i5 with PHP
Building Dynamic Web Applications on i5 with PHPJohn Coggeshall
 
Using WordPress as a Web Framework
Using WordPress as a Web FrameworkUsing WordPress as a Web Framework
Using WordPress as a Web FrameworkSylvain Carle
 
Intro to open source - 101 presentation
Intro to open source - 101 presentationIntro to open source - 101 presentation
Intro to open source - 101 presentationJavier Perez
 
Neev Open Source Contributions
Neev Open Source ContributionsNeev Open Source Contributions
Neev Open Source ContributionsNeev Technologies
 
First openesb submit at brussels
First openesb submit at brusselsFirst openesb submit at brussels
First openesb submit at brusselsPrabhu Pathak
 
Introduction to PHP (SDPHP)
Introduction to PHP   (SDPHP)Introduction to PHP   (SDPHP)
Introduction to PHP (SDPHP)Eric Johnson
 
A high profile project with Symfony and API Platform: beIN SPORTS
A high profile project with Symfony and API Platform: beIN SPORTSA high profile project with Symfony and API Platform: beIN SPORTS
A high profile project with Symfony and API Platform: beIN SPORTSSmile I.T is open
 
Best practices for using open source software in the enterprise
Best practices for using open source software in the enterpriseBest practices for using open source software in the enterprise
Best practices for using open source software in the enterpriseMarcel de Vries
 
Open Source in Higher Education 2007
Open Source in Higher Education 2007Open Source in Higher Education 2007
Open Source in Higher Education 2007ssorden
 
Building and deploying PHP applications with Phing
Building and deploying PHP applications with PhingBuilding and deploying PHP applications with Phing
Building and deploying PHP applications with PhingMichiel Rook
 
What's New With Appium? From 1.0 to Now
What's New With Appium? From 1.0 to NowWhat's New With Appium? From 1.0 to Now
What's New With Appium? From 1.0 to NowSauce Labs
 

Ähnlich wie Building A Platform From Open Source At Yahoo (20)

Building A Platform From Open Source At Yahoo
Building A Platform From Open Source At YahooBuilding A Platform From Open Source At Yahoo
Building A Platform From Open Source At Yahoo
 
Introduction to PHP - SDPHP
Introduction to PHP - SDPHPIntroduction to PHP - SDPHP
Introduction to PHP - SDPHP
 
Federico Feroldi: PHP in Yahoo!
Federico Feroldi: PHP in Yahoo!Federico Feroldi: PHP in Yahoo!
Federico Feroldi: PHP in Yahoo!
 
Federico Feroldi Php In Yahoo
Federico Feroldi Php In YahooFederico Feroldi Php In Yahoo
Federico Feroldi Php In Yahoo
 
PHP Training in Coimbatore|PHP training Coimbatore|PHP certification
PHP Training in Coimbatore|PHP training Coimbatore|PHP certificationPHP Training in Coimbatore|PHP training Coimbatore|PHP certification
PHP Training in Coimbatore|PHP training Coimbatore|PHP certification
 
Open_Source_for_DT
Open_Source_for_DTOpen_Source_for_DT
Open_Source_for_DT
 
Building Dynamic Web Applications on i5 with PHP
Building Dynamic Web Applications on i5 with PHPBuilding Dynamic Web Applications on i5 with PHP
Building Dynamic Web Applications on i5 with PHP
 
Using WordPress as a Web Framework
Using WordPress as a Web FrameworkUsing WordPress as a Web Framework
Using WordPress as a Web Framework
 
Intro to open source - 101 presentation
Intro to open source - 101 presentationIntro to open source - 101 presentation
Intro to open source - 101 presentation
 
Neev Open Source Contributions
Neev Open Source ContributionsNeev Open Source Contributions
Neev Open Source Contributions
 
UCLA HACKU'11
UCLA HACKU'11UCLA HACKU'11
UCLA HACKU'11
 
First openesb submit at brussels
First openesb submit at brusselsFirst openesb submit at brussels
First openesb submit at brussels
 
Introduction to PHP (SDPHP)
Introduction to PHP   (SDPHP)Introduction to PHP   (SDPHP)
Introduction to PHP (SDPHP)
 
Open source: Making connections by Sunny Pai
Open source: Making connections by Sunny PaiOpen source: Making connections by Sunny Pai
Open source: Making connections by Sunny Pai
 
A high profile project with Symfony and API Platform: beIN SPORTS
A high profile project with Symfony and API Platform: beIN SPORTSA high profile project with Symfony and API Platform: beIN SPORTS
A high profile project with Symfony and API Platform: beIN SPORTS
 
Best practices for using open source software in the enterprise
Best practices for using open source software in the enterpriseBest practices for using open source software in the enterprise
Best practices for using open source software in the enterprise
 
Open Source in Higher Education 2007
Open Source in Higher Education 2007Open Source in Higher Education 2007
Open Source in Higher Education 2007
 
Building and deploying PHP applications with Phing
Building and deploying PHP applications with PhingBuilding and deploying PHP applications with Phing
Building and deploying PHP applications with Phing
 
gsoc
gsocgsoc
gsoc
 
What's New With Appium? From 1.0 to Now
What's New With Appium? From 1.0 to NowWhat's New With Appium? From 1.0 to Now
What's New With Appium? From 1.0 to Now
 

Mehr von elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

Mehr von elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Kürzlich hochgeladen

Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...BookNet Canada
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsYoss Cohen
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
Français Patch Tuesday - Avril
Français Patch Tuesday - AvrilFrançais Patch Tuesday - Avril
Français Patch Tuesday - AvrilIvanti
 
WomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyoneWomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyoneUiPathCommunity
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 

Kürzlich hochgeladen (20)

Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platforms
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
Français Patch Tuesday - Avril
Français Patch Tuesday - AvrilFrançais Patch Tuesday - Avril
Français Patch Tuesday - Avril
 
WomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyoneWomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyone
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 

Building A Platform From Open Source At Yahoo

  • 1. Building a platform from open source at Yahoo! Dustin Whittle – Yahoo! Developer Network Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 2. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 3. Overview •  Why symfony? •  symfony vs ysymfony •  What does scaling really mean? •  Social Search: Delicious and Answers •  Yahoo! Open Strategy –  What is the Yahoo! Open Stack? –  Application Platform + Developer Tool •  Developer Tools –  YUI, Design Patterns, Tutorials •  Data (YQL) & Social APIs –  YQL, Geo, Profiles, Connections, Updates, … –  YOS SDK for PHP •  Building an open application with symfony and YOS –  OAuth / YQL / OpenSocial Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 4. Who am I? •  Working with symfony since open source •  symfony Core Team Member •  Responsible for the development and support of symfony at Yahoo! –  Worked with Y! Answers, Delicious, Y! Widgets, Y! Bookmarks, Yahoo! Application Platform •  Consultant –  Commercial symfony support + training (USA) Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 5. EXAMPLES | TUTORIALS | CODE SAMPLES DEVELOPER.YAHOO.COM Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 6. FREEBSD | LINUX | APACHE | PHP | MYSQL | BUGZILLA | HADOOP | SYMFONY YAHOO! IS POWERED BY OPEN SOURCE TECHNOLOGIES Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 7. W3C | MICROFORMATS | OAUTH | OPENID | OPENSOCIAL YAHOO! EMBRACES OPEN STANDARDS Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 8. RASMUS LERDORF | DOUG CROCKFORD | DOUG CUTTING | CHRISTIAN HEILMANN YAHOO! HIRES OPEN SOURCE DEVELOPERS Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 9. YUI | BROWSER PLUS | DESIGN PATTERNS | R3 | YSLOW + PERFORMANCE RULES YAHOO! GIVES BACK TO OPEN SOURCE Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 10. YQL | PIPES | BOSS | CONTACTS | UPDATES | MAIL | DELICIOUS | FLICKR | UPCOMING | HOTJOBS | MAPS | FIREEAGLE | GEOLOCATION | LOCAL | TRAFFIC | WEATHER | MUSIC | ANSWERS | SHOPPING | FINANCE | TRAVEL YAHOO! SHARES ITS DATA THROUGH OPEN APIS AND WEB SERVICES Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 11. Conferences | Hack Days | HackU | Tech Talks | YDN Theater YAHOO! ENGAGES COMMUNITIES WITH OPEN HACK EVENTS AROUND THE WORLD Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 12. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 13. Users  Load Balancers  Frontend  Apache  PHP  ysymfony / YUI  Custom Modules  APC, PEAR, PECL, Custom Extensions  Backend  MySQL/Oracle  Web Services  Ad API  User API  FreeBSD 4.x/6.x, Linux 2.6.x  Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 14. Y! needs from a frontend platfrom •  Fit existing environment (RHEL/PHP5/Apache) •  Development Cycle – How easy to develop, test, and deploy? •  Clean separation between data, logic, and display (MVC) •  Independent model layer to fit service oriented architecture •  Extensible and pluggable •  Internationalization and localization support •  Detailed documentation and active community of support •  Open source and ability to contribute back Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 15. Why a frontend presentation platform? •  Rasmus says “frameworks are not well suited for Y!” –  Build applications to requirements •  Do exactly what you need: no more, no less •  Understand that frameworks add a lot of overhead •  Choosing functional components is a better fit •  Despite choosing open source or building your own –  Everyone uses a framework –  If you use open source, use only the pieces you need Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 16. Why a framework at all? •  Another software layer (ysymfony, yphp, yapache) •  Factors out common patterns –  Code Layout –  Configuration –  URL Routing –  Authentication / Security –  Form Validation / Repopulation –  Internationalization / Localization •  Encourages good design •  Abstraction > Consistency > Maintainability Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 17. The choice to adopt symfony? •  Philosophy –  Full-stack framework for building complex web applications –  Adopt best ideas from anywhere, using existing code if available (Mojavi, Prado, Rails, Django) •  Design –  Clean separation between Model, View, and Controller –  Controller using modules and actions –  Views using templates in straight PHP with helpers –  Easy to reuse view modules to compose a page •  Layouts, Components, Partials, Slots Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 18. The choice to use symfony •  Configurability / Flexibility •  Features we do not want are easily disabled •  Use of factories for easy customization •  Documentation / Support Community •  The Definitive Guide to symfony (free online) •  Excellent tutorials and example applications –  Askeet & Jobeet •  Active community with wiki, mailing lists, forums, irc channel Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 19. Why ysymfony for Yahoo! teams? •  Eliminate common patterns by adding a layer on PHP –  Code layout/structure (MVC) –  Configuration –  Internationalization •  ysymfony is just a toolkit –  Learn one set of tools •  Shift between multiple projects •  Consistency –  Long term maintainability through platform Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 20. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 21. How Yahoo! uses symfony •  Full Stack –  Yahoo! Bookmarks –  Yahoo! Answers –  Delicious –  Yahoo! Widgets –  Yahoo! Application Platform Developer Tool –  Corporate Reporting Tools •  Components –  Forms –  Caching –  Routing Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 22. symfony MVC framework Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 23. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 24. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 25. A look at Yahoo! Answers •  http://answers.yahoo.com •  Yahoo! Answers is the largest collection of human knowledge on the Web with more than 135 million users and 515 million answers worldwide (Yahoo! Internal Data, March 2008). •  Yahoo! Answers is the 2nd ranked education & reference site on the web (comScore) •  Available in 26 markets and 12 languages Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 26. Yahoo! Answers at the beginning •  Started as a small development team on PHP4 from a fork of Yahoo! Taiwan Knowledge+ •  Launched December 2005 by December 2006 there were 60 million users and 65 million answers •  The code base eventually became difficult to maintain and iterate new features •  Large distributed development teams (US / UK) Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 27. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 28. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 29. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 30. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 31. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 32. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 33. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 34. The big picture •  A complete platform for building web applications from frameworks –  PHP Framework –  JavaScript Framework –  CSS Framework –  UI Design Patterns + Best Practices –  Development Tools (logger, profiler, debugger, docs) –  Unit + Functional Testing Frameworks (LIME / YUI Test) –  Deployment Tools (rsync deployment system) Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 35. What does Yahoo! change? •  Minor changes to fit our environment (bsd/php/apache) –  Most of our changes are easily implemented via factories •  Added dimensions to configurations (ysfDimensionsPlugin) •  Integrate R3 translation/template management (ysfR3Plugin) –  R3 - http://developer.yahoo.com/r3/ •  Dropped the ORM and pushed down the stack (SOA) –  Added a parallel API Dispatcher (ysfAPIClientPlugin) •  Created a build and deployment solution (ysfBuildPlugin) •  Integrate support for Y! User Interface libraries (ysfYUIPlugin) Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 36. Propel or Doctrine or ??? •  No ORM for large projects •  Propel or Doctrine for large projects –  Doctrine for internal projects (best supported) •  Service Oriented Architecture –  Platforms as services (reusable to all) –  No heavy lifting, push down the stack –  Thin Controller/Fat Model (where model == services) •  Java/C++/Erlang + JSON/XML Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 37. Localizing the experience with dimensions •  Cascading Configuration based on YAML –  Framework -> Project -> Application -> Module •  Extending the cascade to be based on dimensions –  Dimensions can be anything (and can be chained together) •  Data Center + Environment for customizing configurations •  Culture for localizing user interface + data •  Theme for customizing look and feel •  User info (is user on corporate intranet?) •  Caching Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 38. symfony I18n + L10n •  Translation + Template Management –  Integrated with symfony i18n + view layers •  <r3:trans>hello</r3:trans> vs __(‘hello’) •  Dictionary Management (YALA) –  SQLite/XLIFF Backend •  Added tasks –  Importing/Exporting XLIFF dictionary –  Generating translations for projects –  Find missing strings Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 39. A build and deployment system •  Aggregate and minify stylesheets and javascripts •  Rewrite templates, css, js for CDN (Akamai, S3, …) •  Generate translations for configurations + templates •  Generate configuration cache •  Aggregate core classes + remove debug statements •  Run lint, unit, functional tests •  Package applications as .tgz •  Deployment via rsync Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 40. What does it mean to scale? •  A system whose performance improves after adding hardware, proportionally to the capacity added, is said to be a scalable system. •  High Availability + Scalability + Performance •  Bigger dataset, more traffic, maintainable •  Not about performance –  PHP is slow, but it is not your bottleneck •  Languages do not scale, architectures do. •  Planning to grow and planning to fail –  Capacity Planning –  Business Continuity Planning Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 41. Scaling – Planning •  Planning hardware purchases and hosting options to have as much as you need without breaking your wallet •  Partitioning and distributing databases to support large datasets and simultaneous transactions •  Monitoring your applications to find and clear bottlenecks •  Providing services APIs and using services from other providers to increase your site's reach and capabilities •  Think Minimal, Plan to grow, Plan to fail. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 42. Scaling – The basics in PHP •  PHP is rarely the bottleneck •  “Most performance comes not from the language, but from application design” - Rasmus •  Share Nothing Architecture –  Independent, self-sufficient, no single point of contention –  No local storage = No PHP Sessions •  Use a database (works for distributed) •  Use a small signed cookie (ideal) –  Important data in database –  Individual expiration on session objects –  Small data items –  Use a distributed cache •  Memcache •  Forget about small efficiencies -- Premature optimization is the root of all evil. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 43. Scaling Databases – The basics •  Master/Slave Replication –  First steps –  Helps with reads, writes are still bottleneck •  Partitioning –  Segmenting data •  Sharding (horizontal partitioning) –  Segmenting data onto different physical machines –  Make problems smaller, easier to grow Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 44. Improving latency with Caching •  Always use PHP opcode cache (APC, Xcache, etc) –  Use for routing and i18n cache •  Memcache (distributed cache) –  Use for view cache •  Distributed invalidation can be a pain •  sfViewCacheManager makes this easy! •  Be intelligent about cache_keys (uri, user, state) •  There is a fine line to caching –  At what point do you spend more time managing the cache, than reading from it? Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 45. Tweaking Performance •  Don’t use features you do not need –  settings.yml / factories.yml •  Use core_compile (aggregate classes) •  Remove debug statements (sfOptimizerPlugin) •  Do not use .htaccess (move to real apache config) •  Set a minimal include path •  Increase realpath_cache_size + realpath_cache_ttl •  Use apc.stat=0 •  Use @routeName •  Do not use components in loop Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 46. Do it yourself for cheap •  Open source software = Free –  Apache –  PHP –  MySQL –  Memcache / Perlbal / MogileFS / Squid / Gearman –  symfony / Doctrine / Propel / Swift –  Nagios •  Amazon Shared Infrastructure = Cheap –  EC2 Cloud Computing –  S3 Distributed Storage –  SimpleDB Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 47. Yahoo! Open Strategy Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 48. OPENID | XRDS | OAUTH | PORTABLE CONTACTS | OPEN SOCIAL OPEN PLATFORMS + COLLABORATION Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 49. The Open Web Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 50. Y! OS – The Open Stack Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 51. What does Yahoo! offer developers? •  Yahoo! Developer Network  •  Developer Tools (YUI, etc)  •  Social APIs  •  Profiles  •  ConnecWons  •  Updates  •  Data APIs  •  OAuth  •  Yahoo! Query Language  •  Yahoo! ApplicaWon PlaYorm  •  OpenSocial  Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 52. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 53. developer.yahoo.com Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 54. What is Yahoo! Developer Network? The Yahoo! Developer Network offers open source tools and open data APIs to make it easy for developers to build applications and mashups. •  50+ APIs / Web Services –  Developer Dashboard –  Tutorials + Code Samples –  API Documentation •  Yahoo! User Interface libraries + ASTRA •  Design Patterns Library •  PHP / Python / Ruby Dev Centers •  Evangelism: Conferences / Theater / Blogs / Events Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 55. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 56. Y! Developer Network – YUI Javascript •  JavaScript Framework –  Utilities - YAHOO, Dom, Event, Animation, Browser History Manager, Connection Manager, Cookie, DataSource, Drag and Drop, Element, Get, ImageLoader, JSON, Resize, Selector, Loader –  Controls / Widgets - AutoComplete, Button, Calendar, Charts, Color Picker, DataTable, ImageCropper, Rich Text Editor, Slider, Uploader –  Container (Module, Overlay, Panel, Tooltip, Dialog), Layout Manager, Menu, TabView, TreeView –  Debug – Logger, Profiler, Test Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 57. Y! Developer Network – YUI CSS •  CSS Foundation –  Reset - Neutralizes browser CSS styles –  Base - Applies consistent style foundation –  Fonts - Foundation for typography and font-sizing –  Grids - Thousands of wireframe layouts •  User Interface Design Patterns Library –  Proven solutions to common interfaces –  http://developer.yahoo.com/ypatterns/ –  Grade Browser Support / Progressive Enhancement Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 58. Y! Developer Network – Documentation •  More than 275 functional examples –  http://developer.yahoo.com/yui/examples/ •  YSlow + Performance Rules –  http://developer.yahoo.com/performance •  YUI Blog –  http://yuiblog.com/ •  Mailing List @ Yahoo! Groups –  http://tech.groups.yahoo.com/group/ydn-javascript/ Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 59. A Query Language for the Web SELECT  * FROM INTERNET  Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 60. Before YQL •  Thousands of Web Services that provide valuable data •  Require developers to read documentation and form URLs/queries. •  Data is isolated •  Needs combining, tweaking, shaping even after it gets to the developer. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 61. Y! Open Stack – YQL •  SQL-Like Language –  Synonymous with Data access –  Familiar to developers –  Expressive enough to get the right data •  Self Describing - show, desc table •  Allows you to query, filter and join data across Web Services. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 62. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 63. YQL – Open Tables •  Twitter •  Delicious •  Weather •  Dopplr •  Wesabe •  Friendfeed •  Whitepages •  Github •  Zillow •  New York Times •  …. •  Shopping Building a platform from open source at Yahoo! | Dus$n Whi*le  Available on github ‐ h[p://github.com/spullara/yql‐tables/ 
  • 64. YQL – Open Tables Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 65. YQL – Open Tables Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 66. YQL – Open Tables Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 67. YQL - Examples •  select * from social.connections •  select * from delicious.feeds.popular •  select * from flickr.photos.interestingness •  select * from friendfeed.status •  select * from github.checkins Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 68. YQL – Javascript Execute •  Allows executing of javascript on the server side to mashup (join, filter, etc) •  Makes combining many web services very simple •  Support for Oauth Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 69. YQL – API End Points OAuth Endpoint •  http://query.yahooapis.com/v1/yql?q=... Public Endpoint •  http://query.yahooapis.com/v1/public/yql?q= YQL Console •  http://developer.yahoo.com/yql/console Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 70. Y! Open Stack – Application Platform •  Allows developers to deploy their own web based applications on Yahoo! •  Multiple Views: Small and Canvas •  Social Context: the new Yahoo! Social Directory •  OpenSocial 0.8 Javascript APIs Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 71. Y! Open Stack – Open Applications Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 72. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 73. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 74. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 75. Y! Open Stack – SDKs PHP SDK Available  Open and OAuth Applica$ons  Ac$onScript 3 SDK Available  Open Applica$ons  Objec$veC SDK Available  Open and OAuth Applica$ons  Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 76. YOSSDK – Methods 3‐Legged OAuth  2‐Legged OAuth  getSessionedUser    (session)  setSmallView    (applicaWon)  getOwner                        (session)  query             (applicaWon)          getUser                           (session)  query                               (session)  getPresence                    (user)  setPresence                    (user)  listUpdates                      (user)  listConnecWonUpdates    (user)  insertUpdate                   (user)  deleteUpdate                  (user)  loadProfile                      (user)  getConnecWons              (user)  getContacts                    (user)  setSmallView                 (user)  Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 77. YOSSDK – 2-Legged OAuth Used For:  ‐  Public user data and open APIs  Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 78. YOSSDK – 3-Legged OAuth Used For:  ‐  Private data access  Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 79. Building an Open App : CommonGround Experience:  Basic Web Dev Knowledge – PHP/HTML/CSS/ Javascript  What we are building: Common ground –  Find out what  you have in common with your social graph: music,  movies, books, hobbies.  What we will use: YOSSDK, YQL, YAP  Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 80. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 81. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 82. Building a platform from open source at Yahoo! | Dus$n Whi*le  h*p://developer.yahoo.com/dashboard 
  • 83. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 84. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 85. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 86. Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 87. CommonGround available on GitHub http://github.com/dwhittle/commonground Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 88. QUESTIONS? (I will be around for the whole event, so please do say hello and ask questions) Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 89. WANT TO JOIN YAHOO? WE ARE HIRING AND HAVE INTERNSHIPS! Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 90. ENJOY THE REST OF SYMFONYLIVE 2009  EXAMPLES | TUTORIALS | CODE SAMPLES DEVELOPER.YAHOO.COM Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 91. Books worth reading Building a platform from open source at Yahoo! | Dus$n Whi*le 
  • 92. Building a platform from open source at Yahoo! | Dus$n Whi*le