![Page 1: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/1.jpg)
An overview of the NuGet ecosystem Maarten Balliauw @maartenballiauw
![Page 2: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/2.jpg)
Who am I? Maarten Balliauw Daytime: Technical Evangelist, JetBrains Co-founder of MyGet Author – Pro NuGet http://amzn.to/pronuget AZUG Focus on web ASP.NET MVC, Windows Azure, SignalR, ... MVP Windows Azure & ASPInsider http://blog.maartenballiauw.be @maartenballiauw
![Page 3: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/3.jpg)
Agenda NuGet New Problems Solutions! The NuGet Ecosystem Conclusion
![Page 4: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/4.jpg)
NuGet
![Page 5: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/5.jpg)
Before NuGet: third-party and OSS Everything points towards Microsoft Only for those who search Google, Bing, CodePlex, GitHub, …
False competition Microsoft things either bundled or via a neat installer
Hard to integrate OSS Compile? Find right version? Find right dependencies?
![Page 6: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/6.jpg)
Before NuGet: sharing own code Shared code in source control Or compiled code in separate assembly Separate assembly on a network share or in source control No versioning on the assembly file Update nightmare (“big solutions”)
![Page 7: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/7.jpg)
NuGet!
![Page 8: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/8.jpg)
With NuGet: third-party and OSS One repository: NuGet.org OSS and Microsoft provided libraries mixed Dependencies, Configuration changes, Versioning
![Page 9: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/9.jpg)
With NuGet: sharing own code Create a NuGet package Specify dependencies, enforce versioning Consuming project: specify version Updating is a joy
![Page 10: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/10.jpg)
Windows Phone Examples https://www.nuget.org/packages?q=windowsphone
![Page 11: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/11.jpg)
Windows 8 Examples https://www.nuget.org/packages?q=windows8
![Page 12: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/12.jpg)
Let’s install one! And look at some internals
demo
![Page 13: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/13.jpg)
New Problems
![Page 14: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/14.jpg)
Versioning U depends on T Y depends on T Let’s upgrade T!
![Page 15: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/15.jpg)
One repository It’s a bit of an App Store… Fine for OSS, but what with my own frameworks?
![Page 16: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/16.jpg)
Overconsumption That’s a cool library! And that’s a cool library! And that one too! Ooh, another one! How to limit choice?
![Page 17: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/17.jpg)
Licensing Developers on a roll don’t care! But you may do… How to limit choice?
![Page 18: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/18.jpg)
Solutions!
![Page 19: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/19.jpg)
Enforce Explicit Semantic Versioning www.semver.org
Major Breaking changes Minor Backwards compatible API additions/changes
Patch Bugfixes not affecting the API <dependency id="ExamplePackage" version="1.3.2" /> 1.0 = 1.0 ≤ x (,1.0] = x ≤ 1.0 (,1.0) = x < 1.0 [1.0] = x == 1.0 (1.0) = invalid (1.0,) = 1.0 < x (1.0,2.0) = 1.0 < x < 2.0 [1.0,2.0] = 1.0 ≤ x ≤ 2.0 empty = latest version
![Page 20: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/20.jpg)
Recommendation Engine http://concierge.nuget.org Upload packages.config Find recommendations
![Page 21: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/21.jpg)
Hosting Your Own Repository Folder / File share NuGet.Server package NuGet Gallery – www.github.com/nuget/nugetgallery MyGet – www.myget.org
![Page 22: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/22.jpg)
Create your own feed! Have a copy of your dependencies! Manage approved packages Manage licenses Host your own packages Private feeds Use it for staging packages
![Page 23: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/23.jpg)
MyGet Examples Company feed Limiting choice, Licensing Creating packages Package promotion Security demo
![Page 24: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/24.jpg)
One more recommendation… Don’t just update Not everyone respects SemVer…
Don’t autoupdate during builds Continuous Integration: Same Input = Same Output
![Page 25: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/25.jpg)
The NuGet Ecosystem
![Page 26: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/26.jpg)
Many, many, many Outercurve Foundation NuGet Project
NuGet-based tools by Microsoft
NuGet Package Explorer
MyGet (NuGet-as-a-Service)
Chocolatey
OctopusDeploy
RedGate Deployment Manager
SymbolSource
ProGet (Inedo)
CoApp
BoxStarter
SharpDevelop NuGet plug-in
Xamarin NuGet plug-in
TeamCity support for NuGet
Artifactory support for NuGet
Nexus support for NuGet
Glimpse Plug-ins
ReSharper Plug-ins
Orchard
NuGetMustHaves
NuGetFeed
NuGetLatest
NuGet server in Java
NuGet Fight
NuGit
à see http://docs.nuget.org/docs/reference/ecosystem
![Page 27: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/27.jpg)
Chocolatey NuGet developer library packages
Chocolatey applications and tools packager “yum” or “apt-get” for Windows
www.chocolatey.org
![Page 28: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/28.jpg)
Automate deployments Build results in .nupkg Octopus deploys to its tentacles Test tentacles Staging tentacles Production tentacles
www.octopusdeploy.com
![Page 29: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/29.jpg)
Plugins / AddOns / … NuGet Package Explorer – own feed OCTGN – own feed SharpDevelop – own feed ReSharper – http://resharper-plugins.jetbrains.com/ Orchard CMS – http://gallery.orchardproject.net/ EPiServer – http://nuget.episerver.com/
![Page 30: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/30.jpg)
Creating your own plugin system
demo
![Page 31: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/31.jpg)
Conclusion
![Page 32: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/32.jpg)
Conclusion NuGet New Problems Solutions! The NuGet Ecosystem Conclusion
![Page 33: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own](https://reader034.vdocuments.us/reader034/viewer/2022042222/5ec8080962c0c35055067fc2/html5/thumbnails/33.jpg)
http://blog.maartenballiauw.be @maartenballiauw
http://amzn.to/pronuget http://www.myget.org