an overview of the nuget ecosystem - meetupfiles.meetup.com/9951662/mobel - maarten balliauw... ·...
TRANSCRIPT
An overview of the NuGet ecosystem Maarten 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 Examples https://www.nuget.org/packages?q=windowsphone
Windows 8 Examples https://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.0 empty = 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
MyGet Examples Company feed Limiting choice, Licensing Creating packages Package promotion Security 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
http://blog.maartenballiauw.be @maartenballiauw
http://amzn.to/pronuget http://www.myget.org