SlideShare a Scribd company logo
1 of 28
www.realdolmen.com




                             ORGANIZE YOUR CHICKENS:
                             NUGET FOR THE ENTERPRISE




JANUARY 16, 2013 | SLIDE 1
WHO AM I?

            Xavier Decoster
            Antwerp, Belgium

            Technical Consultant, RealDolmen
            Co-founder of MyGet.org
            Microsoft Extended Experts Team
            Author of Apress Pro NuGet

            http://www.xavierdecoster.com
            @xavierdecoster


JANUARY 16, 2013 | SLIDE 2
IN THIS SESSION




                             Chickens?!




JANUARY 16, 2013 | SLIDE 3
We all have dependencies: deal with them!

      DEPENDENCY MANAGEMENT


JANUARY 16, 2013 | SLIDE 4
SYMPTOMS YOU GOT A PROBLEM…




                                                      No Versioning Strategy
      “Not Invented Here”     Binaries Duplicated
           Syndrome              all over VCS
                                                        Release Bottlenecks

                             Time Consuming Builds    No License Management
             Monolithic
            Frameworks
                             Conflicting References       OSS Inventory




JANUARY 16, 2013 | SLIDE 5
WELCOME TO DEPENDENCY HELL


 “A term for the             frustration
                              of software users who have
 installed software packages which have
 dependencies on specific versions of other
 software packages.” (Wikipedia)




JANUARY 16, 2013 | SLIDE 6
IMPACT OF DEPENDENCY HELL


         Version Control           Delays
         Branching Strategy        Increased Time-to-market
         Requirements Management   Frustration, both for
         Architecture              developers and users
         Coding & Testing          Decreased ROI
         Continuous Integration       VCS storage size ++
                                      Time spent waiting/idle ++
         Build Management
                                      Value revenue --
         Deployment
         Release Management                         Bite me! I’m
                                                    outta here..




JANUARY 16, 2013 | SLIDE 7
A thin red line connecting many ALM processes…

      PACKAGE MANAGEMENT


JANUARY 16, 2013 | SLIDE 8
FIRST THINGS FIRST
        From dependency hell to package hell?
          Broken process/architecture cannot be fixed by a tool!


        Hell is hell, whether it’s the home of
             Assemblies
             Packages
             Gems
             What. Ever.


        Escape route
          Separating Concerns  Improves Cohesion
          Increasing Cohesion  Improves maintainability
          Improving maintainability  escaped from hell 


JANUARY 16, 2013 | SLIDE 9
NUGET: THE WAY OUT?
        NuGet is a tool for package management
          Facilitates searching & automates
           installing, upgrading, uninstalling, creating & publishing
           packages
          Encourages good practices: e.g. versioning & reuse of
           components


        Tools should
          Just work
          Reduce friction
          Empower us & guide us to do the right thing


        NuGet is such a tool
          Not the answer to everything
          But excellent at guiding you to find a way out
JANUARY 16, 2013 | SLIDE 10
HOW ABOUT FRICTION?!
        NuGet covers ~80% of typical needs
          Not only OSS needs!


        Scenarios
          Automation
          Automation
          Automation


        Most friction is caused by
          Not adhering to good ALM practices
          Not adhering to good technical design
          Lack of extensibility in / integration with other tools



JANUARY 16, 2013 | SLIDE 11
VERSIONING
        Think about your versioning!
          Semantic versioning (semver.org)

               Major           Breaking changes
               Minor           Backwards compatible API
                               additions/changes
               Patch           Bugfixes not affecting the API


          NuGet is smarter when using SemVer
                 Safe upgrades


          You can be smarter when using SemVer
                 Anticipate breaking changes



JANUARY 16, 2013 | SLIDE 12
VERSIONING
   “Zookeepers must become Rangers” (Mark Seemann)
                                       Non-negotiable deadline
                                         “Big Bang Release”

 Product

    Component A


    Component B


    Component C



                              Time


JANUARY 16, 2013 | SLIDE 13
A STORY OF CONSUMERS AND CONSUMABLES…




                   Consume packages               Can consume packages



       Typically do not produce packages
                              Consumer         Consumables
                                                     Produce packages
   Usually require installation / deployment




JANUARY 16, 2013 | SLIDE 14
THE –FORCE IS STRONG IN THIS ONE…
  “As software creators we don’t get to decide what
 version of our tools / libraries that people use. If we
    try to force them, our users will go somewhere
                    else.” (Rob Reynolds)
        As a package publisher
          Do NOT expect/force your consumers to always update to the latest version
          You can only hope they upgrade.


        As a result, dear package consumers:
          Do NOT auto-update packages!


                                Consuming any package update must be
                              a well-considered and human-made decision.



JANUARY 16, 2013 | SLIDE 15
VERSIONING TAKE-AWAYS
        Be explicit!

        Breaking change?
          Clients decide when to upgrade!
          Introduce new version side-by-side & deprecate the old one


        Monitor & measure usage
          If you don’t know if it’s used, you can’t remove it




JANUARY 16, 2013 | SLIDE 16
YOUR OWN NUGET REPOSITORY
        NuGet.org = public feed
          Privacy
          Intellectual property


        Solutions
             Local Folder / Network share
             NuGet.Server package
             NuGet Gallery
             MyGet.org




JANUARY 16, 2013 | SLIDE 17
INSTALL-PACKAGE NUGET.SERVER




JANUARY 16, 2013 | SLIDE 18
NUGET.SERVER LIMITATIONS
        Simple Implementation
          Only 1 feed per web application
          No granular security: 1 API key for all
          Minimal UI


        Conclusion:
          Something more useful requires development




JANUARY 16, 2013 | SLIDE 19
NUGET-AS-A-SERVICE
        www.myget.org
        NaaS
          No installation: Register and off you go!
          Freemium
        Key Features for enterprise scenarios
          Granular security
                   Private feeds (ADFS supported)
                   Fine-grained permissions & an API key per user
                   Integration with (private) SymbolSource repositories
                   User & Quota management
          Repository management
                 Package Retention Rules
                 Package Promotion & Mirroring



JANUARY 16, 2013 | SLIDE 20
CHANGE OF PERSPECTIVE




                              NuGet as a package
                              manager

                              NuGet as a protocol for
                              distributing packages



JANUARY 16, 2013 | SLIDE 21
NUGET AS A PROTOCOL
        Distributing tools & software
          www.Chocolatey.org
          “Apt-Get” for Windows
          WebPI support


        Distributing Web sites
          www.OctopusDeploy.com
          Build results in .nupkg
          Octopus deploys to its tentacles
                 Test/Staging/Production tentacles




JANUARY 16, 2013 | SLIDE 22
A GLIMPSE AT THE NUGET ECO-SYSTEM

              Develop


                      Build


                          Package


                          Share     Network
                                    Share




                      Collaborate


              Deploy


JANUARY 16, 2013 | SLIDE 23
CAUTION
        With great power comes great responsibility

        Package creators: behave!
          Componentize
          Version
          Minimal friction


        Package publishers: control!
          User permissions
          Repository contents


        Package consumers: validate!
          No auto-updates

JANUARY 16, 2013 | SLIDE 24
OR IN CHICKEN TERMS…




JANUARY 16, 2013 | SLIDE 25
LAST BUT NOT LEAST
        NuGet is OSS (Outercurve Foundation)

        Microsoft’s involvement
          Sponsors development
          Results in:
                 Improved Visual Studio integration
                 Increased adoption of NuGet


        Community involvement
             Contribute ideas, code, documentation!
             Share experiences, give feedback, submit issues
             Discuss: http://jabbr.net/#/rooms/nuget
             Package!


JANUARY 16, 2013 | SLIDE 26
CONCLUSION

                   Dependencies & people are chickens
                                Deal with them! NuGet can help

                                    NuGet is a tool
                          Improve your process! NuGet can help

                              Consumables vs Consumers
                          Improve your process! NuGet can help

                              NuGet as a package manager
                                   NuGet as a protocol

JANUARY 16, 2013 | SLIDE 27
http://www.xavierdecoster.com
                                                              @xavierdecoster




                                  THANK YOU!
                                                Questions?



                              Come get your MyGet stickers,
                                    you might get lucky! 


Disclaimer: no chickens were hurt during the making of this presentation
JANUARY 16, 2013 | SLIDE 28

More Related Content

Similar to Organize your chickens - NuGet for the Enterprise

SDC Sweden - Organize your chickens - NuGet for the Enterprise
SDC Sweden - Organize your chickens - NuGet for the EnterpriseSDC Sweden - Organize your chickens - NuGet for the Enterprise
SDC Sweden - Organize your chickens - NuGet for the EnterpriseMaarten Balliauw
 
Upstate DevOps - CICD - November 2019
Upstate DevOps - CICD - November 2019Upstate DevOps - CICD - November 2019
Upstate DevOps - CICD - November 2019Allen Vailliencourt
 
DZone’s 2016 Guide To Building And Deploying Applications In The Cloud
DZone’s 2016 Guide To Building And Deploying Applications In The CloudDZone’s 2016 Guide To Building And Deploying Applications In The Cloud
DZone’s 2016 Guide To Building And Deploying Applications In The CloudSingaram Subramanian
 
CE-4029, "eyeSite’s Gesture recognition technology + introducing the develope...
CE-4029, "eyeSite’s Gesture recognition technology + introducing the develope...CE-4029, "eyeSite’s Gesture recognition technology + introducing the develope...
CE-4029, "eyeSite’s Gesture recognition technology + introducing the develope...AMD Developer Central
 
Java EE Microservices
Java EE MicroservicesJava EE Microservices
Java EE Microservicesjclingan
 
SAAS IS THE ENEMY OF OPEN SOURCE GOOD THING THAT WE ARE IN THE POST-SAAS ERA
SAAS IS THE  ENEMY OF OPEN SOURCE  GOOD THING THAT WE ARE IN THE POST-SAAS ERASAAS IS THE  ENEMY OF OPEN SOURCE  GOOD THING THAT WE ARE IN THE POST-SAAS ERA
SAAS IS THE ENEMY OF OPEN SOURCE GOOD THING THAT WE ARE IN THE POST-SAAS ERAOri Pekelman
 
CE-4026, New Interfaces, by David Brebner
CE-4026, New Interfaces, by David BrebnerCE-4026, New Interfaces, by David Brebner
CE-4026, New Interfaces, by David BrebnerAMD Developer Central
 
Notes from Educator Pre-training Briefing 1 - Summary of AfG-toolset 2012-13
Notes from Educator Pre-training Briefing 1  - Summary of AfG-toolset 2012-13Notes from Educator Pre-training Briefing 1  - Summary of AfG-toolset 2012-13
Notes from Educator Pre-training Briefing 1 - Summary of AfG-toolset 2012-13CDI Apps for Good
 
MM-4104, Smart Sharpen using OpenCL in Adobe Photoshop CC – Challenges and Ac...
MM-4104, Smart Sharpen using OpenCL in Adobe Photoshop CC – Challenges and Ac...MM-4104, Smart Sharpen using OpenCL in Adobe Photoshop CC – Challenges and Ac...
MM-4104, Smart Sharpen using OpenCL in Adobe Photoshop CC – Challenges and Ac...AMD Developer Central
 
Matt Bruzek - Monitoring Your Public Cloud With Nagios
Matt Bruzek - Monitoring Your Public Cloud With NagiosMatt Bruzek - Monitoring Your Public Cloud With Nagios
Matt Bruzek - Monitoring Your Public Cloud With NagiosNagios
 
La pubblicazione di un'applicazione sullo store
La pubblicazione di un'applicazione sullo storeLa pubblicazione di un'applicazione sullo store
La pubblicazione di un'applicazione sullo storeDan Ardelean
 
UA Europe 2013: Content Delivered? Check! OK how do we use it?
UA Europe 2013: Content Delivered? Check! OK how do we use it?UA Europe 2013: Content Delivered? Check! OK how do we use it?
UA Europe 2013: Content Delivered? Check! OK how do we use it?Colum McAndrew
 
Evolving to Cloud-Native - Nate Schutta (1/2)
Evolving to Cloud-Native - Nate Schutta (1/2)Evolving to Cloud-Native - Nate Schutta (1/2)
Evolving to Cloud-Native - Nate Schutta (1/2)VMware Tanzu
 
WCAG 2.0: Why can't we all just get along?
WCAG 2.0: Why can't we all just get along?WCAG 2.0: Why can't we all just get along?
WCAG 2.0: Why can't we all just get along?AccessibilitéWeb
 
Node.JS Expreee.JS scale webapp on Google cloud
Node.JS Expreee.JS scale webapp on Google cloudNode.JS Expreee.JS scale webapp on Google cloud
Node.JS Expreee.JS scale webapp on Google cloudJimish Parekh
 
Security & Compliance in the Cloud - Hadoop Magazine Column Version 1.2 by Ja...
Security & Compliance in the Cloud - Hadoop Magazine Column Version 1.2 by Ja...Security & Compliance in the Cloud - Hadoop Magazine Column Version 1.2 by Ja...
Security & Compliance in the Cloud - Hadoop Magazine Column Version 1.2 by Ja...Jarrett Neil Ridlinghafer
 
Lessons I Learned While Scaling to 5000 Puppet Agents
Lessons I Learned While Scaling to 5000 Puppet AgentsLessons I Learned While Scaling to 5000 Puppet Agents
Lessons I Learned While Scaling to 5000 Puppet AgentsPuppet
 

Similar to Organize your chickens - NuGet for the Enterprise (20)

SDC Sweden - Organize your chickens - NuGet for the Enterprise
SDC Sweden - Organize your chickens - NuGet for the EnterpriseSDC Sweden - Organize your chickens - NuGet for the Enterprise
SDC Sweden - Organize your chickens - NuGet for the Enterprise
 
Technical Forum - November 2013
Technical Forum - November 2013Technical Forum - November 2013
Technical Forum - November 2013
 
SOLID Principles part 1
SOLID Principles part 1SOLID Principles part 1
SOLID Principles part 1
 
Upstate DevOps - CICD - November 2019
Upstate DevOps - CICD - November 2019Upstate DevOps - CICD - November 2019
Upstate DevOps - CICD - November 2019
 
DZone’s 2016 Guide To Building And Deploying Applications In The Cloud
DZone’s 2016 Guide To Building And Deploying Applications In The CloudDZone’s 2016 Guide To Building And Deploying Applications In The Cloud
DZone’s 2016 Guide To Building And Deploying Applications In The Cloud
 
CE-4029, "eyeSite’s Gesture recognition technology + introducing the develope...
CE-4029, "eyeSite’s Gesture recognition technology + introducing the develope...CE-4029, "eyeSite’s Gesture recognition technology + introducing the develope...
CE-4029, "eyeSite’s Gesture recognition technology + introducing the develope...
 
Java EE Microservices
Java EE MicroservicesJava EE Microservices
Java EE Microservices
 
SAAS IS THE ENEMY OF OPEN SOURCE GOOD THING THAT WE ARE IN THE POST-SAAS ERA
SAAS IS THE  ENEMY OF OPEN SOURCE  GOOD THING THAT WE ARE IN THE POST-SAAS ERASAAS IS THE  ENEMY OF OPEN SOURCE  GOOD THING THAT WE ARE IN THE POST-SAAS ERA
SAAS IS THE ENEMY OF OPEN SOURCE GOOD THING THAT WE ARE IN THE POST-SAAS ERA
 
CE-4026, New Interfaces, by David Brebner
CE-4026, New Interfaces, by David BrebnerCE-4026, New Interfaces, by David Brebner
CE-4026, New Interfaces, by David Brebner
 
Notes from Educator Pre-training Briefing 1 - Summary of AfG-toolset 2012-13
Notes from Educator Pre-training Briefing 1  - Summary of AfG-toolset 2012-13Notes from Educator Pre-training Briefing 1  - Summary of AfG-toolset 2012-13
Notes from Educator Pre-training Briefing 1 - Summary of AfG-toolset 2012-13
 
MM-4104, Smart Sharpen using OpenCL in Adobe Photoshop CC – Challenges and Ac...
MM-4104, Smart Sharpen using OpenCL in Adobe Photoshop CC – Challenges and Ac...MM-4104, Smart Sharpen using OpenCL in Adobe Photoshop CC – Challenges and Ac...
MM-4104, Smart Sharpen using OpenCL in Adobe Photoshop CC – Challenges and Ac...
 
Matt Bruzek - Monitoring Your Public Cloud With Nagios
Matt Bruzek - Monitoring Your Public Cloud With NagiosMatt Bruzek - Monitoring Your Public Cloud With Nagios
Matt Bruzek - Monitoring Your Public Cloud With Nagios
 
Advanced deployment scenarios
Advanced deployment scenariosAdvanced deployment scenarios
Advanced deployment scenarios
 
La pubblicazione di un'applicazione sullo store
La pubblicazione di un'applicazione sullo storeLa pubblicazione di un'applicazione sullo store
La pubblicazione di un'applicazione sullo store
 
UA Europe 2013: Content Delivered? Check! OK how do we use it?
UA Europe 2013: Content Delivered? Check! OK how do we use it?UA Europe 2013: Content Delivered? Check! OK how do we use it?
UA Europe 2013: Content Delivered? Check! OK how do we use it?
 
Evolving to Cloud-Native - Nate Schutta (1/2)
Evolving to Cloud-Native - Nate Schutta (1/2)Evolving to Cloud-Native - Nate Schutta (1/2)
Evolving to Cloud-Native - Nate Schutta (1/2)
 
WCAG 2.0: Why can't we all just get along?
WCAG 2.0: Why can't we all just get along?WCAG 2.0: Why can't we all just get along?
WCAG 2.0: Why can't we all just get along?
 
Node.JS Expreee.JS scale webapp on Google cloud
Node.JS Expreee.JS scale webapp on Google cloudNode.JS Expreee.JS scale webapp on Google cloud
Node.JS Expreee.JS scale webapp on Google cloud
 
Security & Compliance in the Cloud - Hadoop Magazine Column Version 1.2 by Ja...
Security & Compliance in the Cloud - Hadoop Magazine Column Version 1.2 by Ja...Security & Compliance in the Cloud - Hadoop Magazine Column Version 1.2 by Ja...
Security & Compliance in the Cloud - Hadoop Magazine Column Version 1.2 by Ja...
 
Lessons I Learned While Scaling to 5000 Puppet Agents
Lessons I Learned While Scaling to 5000 Puppet AgentsLessons I Learned While Scaling to 5000 Puppet Agents
Lessons I Learned While Scaling to 5000 Puppet Agents
 

Recently uploaded

Automation Ops Series: Session 3 - Solutions management
Automation Ops Series: Session 3 - Solutions managementAutomation Ops Series: Session 3 - Solutions management
Automation Ops Series: Session 3 - Solutions managementDianaGray10
 
Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2
Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2
Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2DianaGray10
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...amber724300
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
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
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Dublin_mulesoft_meetup_API_specifications.pptx
Dublin_mulesoft_meetup_API_specifications.pptxDublin_mulesoft_meetup_API_specifications.pptx
Dublin_mulesoft_meetup_API_specifications.pptxKunal Gupta
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
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
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
Laying the Data Foundations for Artificial Intelligence!
Laying the Data Foundations for Artificial Intelligence!Laying the Data Foundations for Artificial Intelligence!
Laying the Data Foundations for Artificial Intelligence!Memoori
 
A PowerPoint Presentation on Vikram Lander pptx
A PowerPoint Presentation on Vikram Lander pptxA PowerPoint Presentation on Vikram Lander pptx
A PowerPoint Presentation on Vikram Lander pptxatharvdev2010
 
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
 
Introduction-to-Wazuh-and-its-integration.pptx
Introduction-to-Wazuh-and-its-integration.pptxIntroduction-to-Wazuh-and-its-integration.pptx
Introduction-to-Wazuh-and-its-integration.pptxmprakaash5
 
Transport in Open Pits______SM_MI10415MI
Transport in Open Pits______SM_MI10415MITransport in Open Pits______SM_MI10415MI
Transport in Open Pits______SM_MI10415MIRomil Mishra
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfAarwolf Industries LLC
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentMahmoud Rabie
 
The Critical Role of Spatial Data in Today's Data Ecosystem
The Critical Role of Spatial Data in Today's Data EcosystemThe Critical Role of Spatial Data in Today's Data Ecosystem
The Critical Role of Spatial Data in Today's Data EcosystemSafe Software
 
Women in Automation 2024: Career session - explore career paths in automation
Women in Automation 2024: Career session - explore career paths in automationWomen in Automation 2024: Career session - explore career paths in automation
Women in Automation 2024: Career session - explore career paths in automationDianaGray10
 

Recently uploaded (20)

Automation Ops Series: Session 3 - Solutions management
Automation Ops Series: Session 3 - Solutions managementAutomation Ops Series: Session 3 - Solutions management
Automation Ops Series: Session 3 - Solutions management
 
Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2
Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2
Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
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)
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Dublin_mulesoft_meetup_API_specifications.pptx
Dublin_mulesoft_meetup_API_specifications.pptxDublin_mulesoft_meetup_API_specifications.pptx
Dublin_mulesoft_meetup_API_specifications.pptx
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
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
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
Laying the Data Foundations for Artificial Intelligence!
Laying the Data Foundations for Artificial Intelligence!Laying the Data Foundations for Artificial Intelligence!
Laying the Data Foundations for Artificial Intelligence!
 
A PowerPoint Presentation on Vikram Lander pptx
A PowerPoint Presentation on Vikram Lander pptxA PowerPoint Presentation on Vikram Lander pptx
A PowerPoint Presentation on Vikram Lander pptx
 
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...
 
Introduction-to-Wazuh-and-its-integration.pptx
Introduction-to-Wazuh-and-its-integration.pptxIntroduction-to-Wazuh-and-its-integration.pptx
Introduction-to-Wazuh-and-its-integration.pptx
 
Transport in Open Pits______SM_MI10415MI
Transport in Open Pits______SM_MI10415MITransport in Open Pits______SM_MI10415MI
Transport in Open Pits______SM_MI10415MI
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career Development
 
The Critical Role of Spatial Data in Today's Data Ecosystem
The Critical Role of Spatial Data in Today's Data EcosystemThe Critical Role of Spatial Data in Today's Data Ecosystem
The Critical Role of Spatial Data in Today's Data Ecosystem
 
Women in Automation 2024: Career session - explore career paths in automation
Women in Automation 2024: Career session - explore career paths in automationWomen in Automation 2024: Career session - explore career paths in automation
Women in Automation 2024: Career session - explore career paths in automation
 

Organize your chickens - NuGet for the Enterprise

  • 1. www.realdolmen.com ORGANIZE YOUR CHICKENS: NUGET FOR THE ENTERPRISE JANUARY 16, 2013 | SLIDE 1
  • 2. WHO AM I? Xavier Decoster Antwerp, Belgium Technical Consultant, RealDolmen Co-founder of MyGet.org Microsoft Extended Experts Team Author of Apress Pro NuGet http://www.xavierdecoster.com @xavierdecoster JANUARY 16, 2013 | SLIDE 2
  • 3. IN THIS SESSION Chickens?! JANUARY 16, 2013 | SLIDE 3
  • 4. We all have dependencies: deal with them! DEPENDENCY MANAGEMENT JANUARY 16, 2013 | SLIDE 4
  • 5. SYMPTOMS YOU GOT A PROBLEM… No Versioning Strategy “Not Invented Here” Binaries Duplicated Syndrome all over VCS Release Bottlenecks Time Consuming Builds No License Management Monolithic Frameworks Conflicting References OSS Inventory JANUARY 16, 2013 | SLIDE 5
  • 6. WELCOME TO DEPENDENCY HELL “A term for the frustration of software users who have installed software packages which have dependencies on specific versions of other software packages.” (Wikipedia) JANUARY 16, 2013 | SLIDE 6
  • 7. IMPACT OF DEPENDENCY HELL Version Control Delays Branching Strategy Increased Time-to-market Requirements Management Frustration, both for Architecture developers and users Coding & Testing Decreased ROI Continuous Integration VCS storage size ++ Time spent waiting/idle ++ Build Management Value revenue -- Deployment Release Management Bite me! I’m outta here.. JANUARY 16, 2013 | SLIDE 7
  • 8. A thin red line connecting many ALM processes… PACKAGE MANAGEMENT JANUARY 16, 2013 | SLIDE 8
  • 9. FIRST THINGS FIRST  From dependency hell to package hell?  Broken process/architecture cannot be fixed by a tool!  Hell is hell, whether it’s the home of  Assemblies  Packages  Gems  What. Ever.  Escape route  Separating Concerns  Improves Cohesion  Increasing Cohesion  Improves maintainability  Improving maintainability  escaped from hell  JANUARY 16, 2013 | SLIDE 9
  • 10. NUGET: THE WAY OUT?  NuGet is a tool for package management  Facilitates searching & automates installing, upgrading, uninstalling, creating & publishing packages  Encourages good practices: e.g. versioning & reuse of components  Tools should  Just work  Reduce friction  Empower us & guide us to do the right thing  NuGet is such a tool  Not the answer to everything  But excellent at guiding you to find a way out JANUARY 16, 2013 | SLIDE 10
  • 11. HOW ABOUT FRICTION?!  NuGet covers ~80% of typical needs  Not only OSS needs!  Scenarios  Automation  Automation  Automation  Most friction is caused by  Not adhering to good ALM practices  Not adhering to good technical design  Lack of extensibility in / integration with other tools JANUARY 16, 2013 | SLIDE 11
  • 12. VERSIONING  Think about your versioning!  Semantic versioning (semver.org) Major Breaking changes Minor Backwards compatible API additions/changes Patch Bugfixes not affecting the API  NuGet is smarter when using SemVer  Safe upgrades  You can be smarter when using SemVer  Anticipate breaking changes JANUARY 16, 2013 | SLIDE 12
  • 13. VERSIONING “Zookeepers must become Rangers” (Mark Seemann) Non-negotiable deadline “Big Bang Release” Product Component A Component B Component C Time JANUARY 16, 2013 | SLIDE 13
  • 14. A STORY OF CONSUMERS AND CONSUMABLES… Consume packages Can consume packages Typically do not produce packages Consumer Consumables Produce packages Usually require installation / deployment JANUARY 16, 2013 | SLIDE 14
  • 15. THE –FORCE IS STRONG IN THIS ONE… “As software creators we don’t get to decide what version of our tools / libraries that people use. If we try to force them, our users will go somewhere else.” (Rob Reynolds)  As a package publisher  Do NOT expect/force your consumers to always update to the latest version  You can only hope they upgrade.  As a result, dear package consumers:  Do NOT auto-update packages! Consuming any package update must be a well-considered and human-made decision. JANUARY 16, 2013 | SLIDE 15
  • 16. VERSIONING TAKE-AWAYS  Be explicit!  Breaking change?  Clients decide when to upgrade!  Introduce new version side-by-side & deprecate the old one  Monitor & measure usage  If you don’t know if it’s used, you can’t remove it JANUARY 16, 2013 | SLIDE 16
  • 17. YOUR OWN NUGET REPOSITORY  NuGet.org = public feed  Privacy  Intellectual property  Solutions  Local Folder / Network share  NuGet.Server package  NuGet Gallery  MyGet.org JANUARY 16, 2013 | SLIDE 17
  • 19. NUGET.SERVER LIMITATIONS  Simple Implementation  Only 1 feed per web application  No granular security: 1 API key for all  Minimal UI  Conclusion:  Something more useful requires development JANUARY 16, 2013 | SLIDE 19
  • 20. NUGET-AS-A-SERVICE  www.myget.org  NaaS  No installation: Register and off you go!  Freemium  Key Features for enterprise scenarios  Granular security  Private feeds (ADFS supported)  Fine-grained permissions & an API key per user  Integration with (private) SymbolSource repositories  User & Quota management  Repository management  Package Retention Rules  Package Promotion & Mirroring JANUARY 16, 2013 | SLIDE 20
  • 21. CHANGE OF PERSPECTIVE NuGet as a package manager NuGet as a protocol for distributing packages JANUARY 16, 2013 | SLIDE 21
  • 22. NUGET AS A PROTOCOL  Distributing tools & software  www.Chocolatey.org  “Apt-Get” for Windows  WebPI support  Distributing Web sites  www.OctopusDeploy.com  Build results in .nupkg  Octopus deploys to its tentacles  Test/Staging/Production tentacles JANUARY 16, 2013 | SLIDE 22
  • 23. A GLIMPSE AT THE NUGET ECO-SYSTEM Develop Build Package Share Network Share Collaborate Deploy JANUARY 16, 2013 | SLIDE 23
  • 24. CAUTION  With great power comes great responsibility  Package creators: behave!  Componentize  Version  Minimal friction  Package publishers: control!  User permissions  Repository contents  Package consumers: validate!  No auto-updates JANUARY 16, 2013 | SLIDE 24
  • 25. OR IN CHICKEN TERMS… JANUARY 16, 2013 | SLIDE 25
  • 26. LAST BUT NOT LEAST  NuGet is OSS (Outercurve Foundation)  Microsoft’s involvement  Sponsors development  Results in:  Improved Visual Studio integration  Increased adoption of NuGet  Community involvement  Contribute ideas, code, documentation!  Share experiences, give feedback, submit issues  Discuss: http://jabbr.net/#/rooms/nuget  Package! JANUARY 16, 2013 | SLIDE 26
  • 27. CONCLUSION Dependencies & people are chickens Deal with them! NuGet can help NuGet is a tool Improve your process! NuGet can help Consumables vs Consumers Improve your process! NuGet can help NuGet as a package manager NuGet as a protocol JANUARY 16, 2013 | SLIDE 27
  • 28. http://www.xavierdecoster.com @xavierdecoster THANK YOU! Questions? Come get your MyGet stickers, you might get lucky!  Disclaimer: no chickens were hurt during the making of this presentation JANUARY 16, 2013 | SLIDE 28

Editor's Notes

  1. Reinventing the wheelWe don’tneedthatdependency“Iftheycan do it, we can do it, but better” Whathappenedtoreuse of components?Marketing-DrivenVersioningPeople are waitingfor v2 tobuyLet’s call it v4 Platform Update SP3 November Edition KB2348063 RTW Refresh We lost ownership of AssemblyVersion ?
  2. Rangersexplicitly deal withversioning in anuncontrolled environmentZookeepers (ISVs/SaaS) don’tbecausethey control the environmentIllusion: It's impossible to predict all future feature requirements.Applications don't exist in a vacuum. They depend on other applications, and other applications depend on them.The lack of versioning leads to impossible deadlines, slipping code quality, death marches
  3. Minimal friction: extract samples in separate packagesClean up your mess afteruninstall