An overview of the NuGet ecosystem - Mobel.io

Preview:

Citation preview

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