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

33
An overview of the NuGet ecosystem Maarten Balliauw @maartenballiauw

Upload: others

Post on 22-May-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

An overview of the NuGet ecosystem Maarten Balliauw @maartenballiauw

Page 2: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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 - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

Agenda  NuGet  New Problems  Solutions!  The NuGet Ecosystem  Conclusion

Page 4: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

NuGet

Page 5: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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 - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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 - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

NuGet!

Page 8: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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 - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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 - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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

Page 11: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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

Page 12: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

Let’s install one! And look at some internals

demo

Page 13: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

New Problems

Page 14: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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

Page 15: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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 - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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 - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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

Page 18: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

Solutions!

Page 19: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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

Page 20: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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

Page 21: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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 - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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 - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

MyGet Examples Company feed Limiting choice, Licensing Creating packages Package promotion Security demo

Page 24: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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 - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

The NuGet Ecosystem

Page 26: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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 - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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 - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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 - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

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 - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

Creating your own plugin system

demo

Page 31: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

Conclusion

Page 32: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

Conclusion  NuGet  New Problems  Solutions!  The NuGet Ecosystem  Conclusion

Page 33: An overview of the NuGet ecosystem - Meetupfiles.meetup.com/9951662/Mobel - Maarten Balliauw... · Before NuGet: sharing own code Shared code in source control ... Hosting Your Own

http://blog.maartenballiauw.be @maartenballiauw

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