an overview of the nuget ecosystem - mobel.io
TRANSCRIPT
An overview of the NuGet ecosystemMaarten Balliauw@maartenballiauw
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
Agenda NuGet New Problems Solutions! The NuGet Ecosystem Conclusion
NuGet
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?
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”)
NuGet!
With NuGet: third-party and OSS One repository: NuGet.org OSS and Microsoft provided libraries mixed Dependencies, Configuration changes, Versioning
With NuGet: sharing own code Create a NuGet package Specify dependencies, enforce versioning Consuming project: specify version Updating is a joy
Windows Phone Exampleshttps://www.nuget.org/packages?q=windowsphone
Windows 8Exampleshttps://www.nuget.org/packages?q=windows8
Let’s install one!And look at some internals
demo
New Problems
Versioning U depends on T Y depends on T Let’s upgrade T!
One repository It’s a bit of an App Store… Fine for OSS, but what with my own frameworks?
Overconsumption That’s a cool library! And that’s a cool library! And that one too! Ooh, another one! How to limit choice?
Licensing Developers on a roll don’t care! But you may do… How to limit choice?
Solutions!
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.0empty = latest version
Recommendation Engine http://concierge.nuget.org Upload packages.config Find recommendations
Hosting Your Own Repository Folder / File share NuGet.Server package NuGet Gallery – www.github.com/nuget/nugetgallery MyGet – www.myget.org
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
MyGetExamplesCompany feedLimiting choice,LicensingCreating packagesPackage promotionSecurity demo
One more recommendation… Don’t just update Not everyone respects SemVer…
Don’t autoupdate during builds Continuous Integration: Same Input = Same Output
The NuGet Ecosystem
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
Chocolatey NuGet developer library packages
Chocolatey applications and tools packager “yum” or “apt-get” for Windows
www.chocolatey.org
Automate deployments Build results in .nupkg Octopus deploys to its tentacles Test tentacles Staging tentacles Production tentacles
www.octopusdeploy.com
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/
Creating your own plugin system
demo
Conclusion
Conclusion NuGet New Problems Solutions! The NuGet Ecosystem Conclusion
Thank you!http://
blog.maartenballiauw.be@maartenballiauw
http://amzn.to/pronugethttp://www.myget.org