an overview of the nuget ecosystem - meetupfiles.meetup.com/9951662/mobel - maarten balliauw... ·...

Post on 22-May-2020

14 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

top related