Evolution of NuGet
MonkeySpace 2013
Airborne (1993)
jeffhandley.com
@jeffhandley
jeff.handley@microsoft.com
• 1993: In Airborne with Seth Green and Jack Black
• 1994: Started writing code
• 1995: Started full-time in the industry as a tester
• Developed tiny, small, medium, large, and huge apps for 12½ years
• Worked for tiny, small, and medium development shops
• 2008: Joined Microsoft to work on RIA Services (eventually becoming development lead)
• 2011: Joined the NuGet team in September
• 2013: Development Lead for NuGet, the NuGet Gallery, and RIA Services
Yes, I like Nine Inch Nails
Segway, photo by oskay
http://blog.hansdezwart.info/2008/10/28/gaining-authority-by-riding-a-segway/
NuGet’s Conception
NuGet’s CoreTeam: September 2011
All Members Part-Time on NuGet
• Phil Haack (pm)
• Luan “dotnetjunky” Nguyen (dev)
• Pranav Krishnamoorthy (dev)
• Matthew Osborn (dev)
• Alex Dion (test)
• Drew Miller (test lead / gallery dev)
NuGet’s 2 ½-year History1/ 13/ 2011
1.0
2/ 12/ 2011
1.1
3/ 30/ 2011
1.2
4/ 25/ 2011
1.3
6/ 17/ 2011
1.4 8/ 30/ 2011
1.5
12/ 13/ 2011
1.6
Semantic
Version
Support
(Prerelease)
Package Restore
Integrated
Preinstalled
Packages
(Project Templates)
Private Feeds
Solution-Level
Package
Management
Package
Visualizer
Package Cache
Symbol Server
Integration
NuGet.exe and VS
Share Config
WiX+ .NET Micro
Framework
Profiles
GAC
References
Introduced
with
ASP.NET
MVC3
and
Web Pages v1
12/ 5/ 2011
New
NuGet.org
Deployed
4/ 4/ 2012
1.7
5/ 23/ 2012
1.8 6/ 19/ 2012
2.0
10/ 4/ 2012
2.1 12/ 12/ 2012
2.2
2/ 15/ 2013
2.2.1 4/ 25/ 2013
2.5
6/ 26/ 2013
2.6
Networking
Bug Fixes
Improved
Source Control
Integration
Satellite
Package
Support
VaryAll
Items by
Target
Framework
Portable
Class Library
Support
Hierarchical
Configuration
Specifying
Packages Folder
Location
VS 2012
Quick Launch
Specify Content
Target Folder
Localization
Refresh
Multi-Repository
Preinstalled
Packages
 build folder
C++ Support
Mono/ Xamarin Support
(iOS/ Android/ Mac)
Overwrite Content
Update All
8/ 22/ 2012
In the box
with
Visual Studio
2012 RTM
4/ 4/ 2013
In the box
with
VS 2012
Update 2
In the box
with
VS 2013 Preview
XDTTransforms
Machine-Wide
Config
NuGet’s CoreTeam: July 2013
All Members Full-Time on NuGet
Client Crew
• Luan “dotnetjunky” Nguyen (dev)
• DeepakVerma (test)
• Deepak Aravindakshan (dev)
• Dan Liu (test)
• Fei Ling (dev)
Gallery Crew
• Andrew Nurse (dev)
• Bhuva Krishnamurthi (test)
• Tim Lovell-Smith (dev)
• Clay Compton (test)
• JohnTaylor (dev)
Howard Dierking Jeff Handley Ranjini Mathrubootham
(pm) (dev lead) (test lead)
What we do
Client Crew
• NuGetVisual Studio Extension
• http://nuget.codeplex.com
• NuGet WebMatrix Extension
• NuGet Command-Line (nuget.exe)
• NuGet Package Explorer
(http://npe.codeplex.com)
• NuGet Packages
• NuGet.Core
• NuGet.Server
• NuGet.VisualStudio
Gallery Crew
• NuGet Gallery
• http://nuget.org
• http://github.com/nuget/nugetgallery
• NuGet Docs
• http://docs.nuget.org
• http://github.com/nuget/nugetdocs
• Developer Operations
• 1-week rotations
• Monitoring and user support
What others do
• MyGet (feeds, build)
• Chocolatey
• SharpDevelop Integration
• Xamarin Studio Integration
• CoApp’s native libraries
• TeamCity Integration
• Octopus Deploy
• scriptcs
• ProGet
• Sonatype Nexus
http://technologytheorieswiki.wikispaces.com/Critical+Mass+Theory
Cost of reaching critical mass
• Meeting Microsoft’s tenets for shipping withVisual Studio
• Package Restore consent requirement 
• Fulfilling requests from other Microsoft teams
• Earning big bets from other products while avoiding “death by success”
• Adapting to changes inVisual Studio and project systems
• Partner team and release vehicle test passes
• Aligning toVisual Studio ship schedules
• Occasionally going dark while integrating withVisual Studio
• Working within a Microsoft private fork of NuGet
http://scrapetv.com/News/News%20Pages/Technology/pages/YouTube-challenges-users-to-guess-how-much-money-its-losing-Scrape-TV-The-World-on-your-side.html#.Ue2Ou43rxbU
http://lapentoladoro.blogspot.com/2012/11/la-legalizzazione-delle-slot-mascin.html
NuGet 2.7
Late Summer 2013
DEMO
NuGet 2.7
Late Summer 2013
• Automatic Package Restore inVS
• Add ‘Restore’ command to nuget.exe
• Package Restore Consent ON BY DEFAULT!
• Group Policy control over default package sources
• Omit development-only dependencies when packing (Adam Ralph)
• Support XNA forWindows Phone
• Support pre-installed packages outside ofVSTemplates
• Build errors/warnings for packages that need reinstallation
http://ib2-business-p7.wikispaces.com/1.3+Organizational+Objectives
Discovery
• Context-sensitive enumeration and search
• Packages recently installed directly into the current target framework
• Statistics and reports for package authors and consumers
• Editable package metadata
• Package discovery through graphs
• Follow packages, owners, and users to generate custom feeds
• OAuth and authentication throughVisual Studio’s sign in
Trust
• Organizations or team accounts
• Owner reputation
• Friendly license names and filters
• Feeds for owners’ packages and followed packages
• Signed packages?
Constraint
Dependency upper-bounds suck!
http://jadedalt.wordpress.com/2012/06/12/the-mmo-tab/
Incompatibility
• Create a system for reporting package incompatibilities
• Incompatibilities would be checked before package installation
• Warning you about the risk, not preventing you from doing your work
• “Stop trying to be clever and get out of my way!”
• Also works for packages that aren’t dependencies of one another
API
• RESTful API v3
• For use by the NuGet clients
• For use by ecosystem projects
• OData will be eventually consistent
Installation
<NuGetPackageReference id=“Glimpse.Mvc4” version=“1.3.2” source=“nuget.org” />
<NuGetPackageReference project=“MyOrg.CommonExtensions” />
• Minimize modifications to the project file
• Resolve references at build time for better retargeting and multi-targeting
• Treat direct installs differently from dependencies
• Source-specific updates and restores
• Global package installations (important for native)
• nuget.exe install / nuget.exe uninstall (will require new functionality from XBuild)
• Replace PowerShell with Roslyn (install.csx/uninstall.csx)
Build
• NuGet packages as a natural part of build
• NuGet packages replace assemblies as the natural unit of reference
• Will require deeper integration with MSBuild and XBuild
http://www.flickr.com/photos/thomasguest/5491482766/
http://www.flickr.com/photos/cool_dry_place/524794828/
Newtonsoft.Json
http://getrealphilippines.com/blog/2011/08/the-catch-phrase-administration-of-president-noynoy-aquino/
Evolution of NuGet
• Ensure great package discovery at 100,000+ packages
• Establish trust relationships between package authors and consumers
• Minimize package installation constraints, while raising incompatibility awareness
• Create a RESTful API for improved ecosystem growth
• Change package installation to assume NuGet ubiquity but maintain portability
• Move logic from installation to build to adapt to project changes
• Increase our openness
• Engage our cross-platform partners, contributors, and users
• Capitalize onVisual Studio integration and support, but don’t require it
Q & A
Get some stickers
@jeffhandley
jeffhandley.com
jeff.handley@microsoft.com

Evolution of NuGet

  • 1.
  • 2.
  • 6.
    jeffhandley.com @jeffhandley jeff.handley@microsoft.com • 1993: InAirborne with Seth Green and Jack Black • 1994: Started writing code • 1995: Started full-time in the industry as a tester • Developed tiny, small, medium, large, and huge apps for 12½ years • Worked for tiny, small, and medium development shops • 2008: Joined Microsoft to work on RIA Services (eventually becoming development lead) • 2011: Joined the NuGet team in September • 2013: Development Lead for NuGet, the NuGet Gallery, and RIA Services Yes, I like Nine Inch Nails
  • 7.
    Segway, photo byoskay http://blog.hansdezwart.info/2008/10/28/gaining-authority-by-riding-a-segway/
  • 8.
  • 9.
    NuGet’s CoreTeam: September2011 All Members Part-Time on NuGet • Phil Haack (pm) • Luan “dotnetjunky” Nguyen (dev) • Pranav Krishnamoorthy (dev) • Matthew Osborn (dev) • Alex Dion (test) • Drew Miller (test lead / gallery dev)
  • 10.
    NuGet’s 2 ½-yearHistory1/ 13/ 2011 1.0 2/ 12/ 2011 1.1 3/ 30/ 2011 1.2 4/ 25/ 2011 1.3 6/ 17/ 2011 1.4 8/ 30/ 2011 1.5 12/ 13/ 2011 1.6 Semantic Version Support (Prerelease) Package Restore Integrated Preinstalled Packages (Project Templates) Private Feeds Solution-Level Package Management Package Visualizer Package Cache Symbol Server Integration NuGet.exe and VS Share Config WiX+ .NET Micro Framework Profiles GAC References Introduced with ASP.NET MVC3 and Web Pages v1 12/ 5/ 2011 New NuGet.org Deployed 4/ 4/ 2012 1.7 5/ 23/ 2012 1.8 6/ 19/ 2012 2.0 10/ 4/ 2012 2.1 12/ 12/ 2012 2.2 2/ 15/ 2013 2.2.1 4/ 25/ 2013 2.5 6/ 26/ 2013 2.6 Networking Bug Fixes Improved Source Control Integration Satellite Package Support VaryAll Items by Target Framework Portable Class Library Support Hierarchical Configuration Specifying Packages Folder Location VS 2012 Quick Launch Specify Content Target Folder Localization Refresh Multi-Repository Preinstalled Packages build folder C++ Support Mono/ Xamarin Support (iOS/ Android/ Mac) Overwrite Content Update All 8/ 22/ 2012 In the box with Visual Studio 2012 RTM 4/ 4/ 2013 In the box with VS 2012 Update 2 In the box with VS 2013 Preview XDTTransforms Machine-Wide Config
  • 11.
    NuGet’s CoreTeam: July2013 All Members Full-Time on NuGet Client Crew • Luan “dotnetjunky” Nguyen (dev) • DeepakVerma (test) • Deepak Aravindakshan (dev) • Dan Liu (test) • Fei Ling (dev) Gallery Crew • Andrew Nurse (dev) • Bhuva Krishnamurthi (test) • Tim Lovell-Smith (dev) • Clay Compton (test) • JohnTaylor (dev) Howard Dierking Jeff Handley Ranjini Mathrubootham (pm) (dev lead) (test lead)
  • 12.
    What we do ClientCrew • NuGetVisual Studio Extension • http://nuget.codeplex.com • NuGet WebMatrix Extension • NuGet Command-Line (nuget.exe) • NuGet Package Explorer (http://npe.codeplex.com) • NuGet Packages • NuGet.Core • NuGet.Server • NuGet.VisualStudio Gallery Crew • NuGet Gallery • http://nuget.org • http://github.com/nuget/nugetgallery • NuGet Docs • http://docs.nuget.org • http://github.com/nuget/nugetdocs • Developer Operations • 1-week rotations • Monitoring and user support
  • 13.
    What others do •MyGet (feeds, build) • Chocolatey • SharpDevelop Integration • Xamarin Studio Integration • CoApp’s native libraries • TeamCity Integration • Octopus Deploy • scriptcs • ProGet • Sonatype Nexus
  • 15.
  • 16.
    Cost of reachingcritical mass • Meeting Microsoft’s tenets for shipping withVisual Studio • Package Restore consent requirement  • Fulfilling requests from other Microsoft teams • Earning big bets from other products while avoiding “death by success” • Adapting to changes inVisual Studio and project systems • Partner team and release vehicle test passes • Aligning toVisual Studio ship schedules • Occasionally going dark while integrating withVisual Studio • Working within a Microsoft private fork of NuGet
  • 17.
  • 18.
  • 19.
  • 20.
    NuGet 2.7 Late Summer2013 • Automatic Package Restore inVS • Add ‘Restore’ command to nuget.exe • Package Restore Consent ON BY DEFAULT! • Group Policy control over default package sources • Omit development-only dependencies when packing (Adam Ralph) • Support XNA forWindows Phone • Support pre-installed packages outside ofVSTemplates • Build errors/warnings for packages that need reinstallation
  • 21.
  • 22.
    Discovery • Context-sensitive enumerationand search • Packages recently installed directly into the current target framework • Statistics and reports for package authors and consumers • Editable package metadata • Package discovery through graphs • Follow packages, owners, and users to generate custom feeds • OAuth and authentication throughVisual Studio’s sign in
  • 23.
    Trust • Organizations orteam accounts • Owner reputation • Friendly license names and filters • Feeds for owners’ packages and followed packages • Signed packages?
  • 24.
  • 25.
  • 26.
    Incompatibility • Create asystem for reporting package incompatibilities • Incompatibilities would be checked before package installation • Warning you about the risk, not preventing you from doing your work • “Stop trying to be clever and get out of my way!” • Also works for packages that aren’t dependencies of one another
  • 27.
    API • RESTful APIv3 • For use by the NuGet clients • For use by ecosystem projects • OData will be eventually consistent
  • 28.
    Installation <NuGetPackageReference id=“Glimpse.Mvc4” version=“1.3.2”source=“nuget.org” /> <NuGetPackageReference project=“MyOrg.CommonExtensions” /> • Minimize modifications to the project file • Resolve references at build time for better retargeting and multi-targeting • Treat direct installs differently from dependencies • Source-specific updates and restores • Global package installations (important for native) • nuget.exe install / nuget.exe uninstall (will require new functionality from XBuild) • Replace PowerShell with Roslyn (install.csx/uninstall.csx)
  • 29.
    Build • NuGet packagesas a natural part of build • NuGet packages replace assemblies as the natural unit of reference • Will require deeper integration with MSBuild and XBuild
  • 30.
  • 31.
  • 32.
  • 33.
    Evolution of NuGet •Ensure great package discovery at 100,000+ packages • Establish trust relationships between package authors and consumers • Minimize package installation constraints, while raising incompatibility awareness • Create a RESTful API for improved ecosystem growth • Change package installation to assume NuGet ubiquity but maintain portability • Move logic from installation to build to adapt to project changes • Increase our openness • Engage our cross-platform partners, contributors, and users • Capitalize onVisual Studio integration and support, but don’t require it
  • 34.
    Q & A Getsome stickers @jeffhandley jeffhandley.com jeff.handley@microsoft.com

Editor's Notes

  • #21 nuget.org package source “Microsoft and .NET” package source Machine-wide (and Group Policy) control over package sources