an overview of the nuget ecosystem - mobel.io

33
An overview of the NuGet ecosystem Maarten Balliauw @maartenballiauw

Upload: maarten-balliauw

Post on 10-May-2015

1.036 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: An overview of the NuGet ecosystem - Mobel.io

An overview of the NuGet ecosystemMaarten Balliauw@maartenballiauw

Page 2: An overview of the NuGet ecosystem - Mobel.io

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 - Mobel.io

Agenda NuGet New Problems Solutions! The NuGet Ecosystem Conclusion

Page 4: An overview of the NuGet ecosystem - Mobel.io

NuGet

Page 5: An overview of the NuGet ecosystem - Mobel.io

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 - Mobel.io

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 - Mobel.io

NuGet!

Page 8: An overview of the NuGet ecosystem - Mobel.io

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 - Mobel.io

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 - Mobel.io

Windows Phone Exampleshttps://www.nuget.org/packages?q=windowsphone

Page 11: An overview of the NuGet ecosystem - Mobel.io

Windows 8Exampleshttps://www.nuget.org/packages?q=windows8

Page 12: An overview of the NuGet ecosystem - Mobel.io

Let’s install one!And look at some internals

demo

Page 13: An overview of the NuGet ecosystem - Mobel.io

New Problems

Page 14: An overview of the NuGet ecosystem - Mobel.io

Versioning U depends on T Y depends on T Let’s upgrade T!

Page 15: An overview of the NuGet ecosystem - Mobel.io

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 - Mobel.io

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 - Mobel.io

Licensing Developers on a roll don’t care! But you may do… How to limit choice?

Page 18: An overview of the NuGet ecosystem - Mobel.io

Solutions!

Page 19: An overview of the NuGet ecosystem - Mobel.io

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

Page 20: An overview of the NuGet ecosystem - Mobel.io

Recommendation Engine http://concierge.nuget.org Upload packages.config Find recommendations

Page 21: An overview of the NuGet ecosystem - Mobel.io

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 - Mobel.io

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 - Mobel.io

MyGetExamplesCompany feedLimiting choice,LicensingCreating packagesPackage promotionSecurity demo

Page 24: An overview of the NuGet ecosystem - Mobel.io

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 - Mobel.io

The NuGet Ecosystem

Page 26: An overview of the NuGet ecosystem - Mobel.io

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 - Mobel.io

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 - Mobel.io

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 - Mobel.io

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 - Mobel.io

Creating your own plugin system

demo

Page 31: An overview of the NuGet ecosystem - Mobel.io

Conclusion

Page 32: An overview of the NuGet ecosystem - Mobel.io

Conclusion NuGet New Problems Solutions! The NuGet Ecosystem Conclusion

Page 33: An overview of the NuGet ecosystem - Mobel.io

Thank you!http://

blog.maartenballiauw.be@maartenballiauw

http://amzn.to/pronugethttp://www.myget.org