More Related Content

Similar to An overview of the NuGet ecosystem -

More from Maarten Balliauw(20)

An overview of the NuGet ecosystem -

  1. An overview of the NuGet ecosystem Maarten Balliauw @maartenballiauw
  2. Who am I? Maarten Balliauw Daytime: Technical Evangelist, JetBrains Co-founder of MyGet Author – Pro NuGet AZUG Focus on web ASP .NET MVC, Windows Azure, SignalR, ... MVP Windows Azure & ASPInsider @maartenballiauw
  3. Agenda NuGet New Problems Solutions! The NuGet Ecosystem Conclusion
  4. NuGet
  5. 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?
  6. 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”)
  7. NuGet!
  8. With NuGet: third-party and OSS One repository: OSS and Microsoft provided libraries mixed Dependencies, Configuration changes, Versioning
  9. With NuGet: sharing own code Create a NuGet package Specify dependencies, enforce versioning Consuming project: specify version Updating is a joy
  10. Windows Phone Examples
  11. Windows 8 Examples
  12. Let’s install one! And look at some internals
  13. New Problems
  14. Versioning U depends on T Y depends on T Let’s upgrade T!
  15. One repository It’s a bit of an App Store… Fine for OSS, but what with my own frameworks?
  16. Overconsumption That’s a cool library! And that’s a cool library! And that one too! Ooh, another one! How to limit choice?
  17. Licensing Developers on a roll don’t care! But you may do… How to limit choice?
  18. Solutions!
  19. Enforce Explicit Semantic Versioning 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
  20. Recommendation Engine Upload packages.config Find recommendations
  21. Hosting Your Own Repository Folder / File share NuGet.Server package NuGet Gallery – MyGet –
  22. 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
  23. MyGet Examples Company feed Limiting choice, Licensing Creating packages Package promotion Security
  24. One more recommendation… Don’t just update Not everyone respects SemVer… Don’t autoupdate during builds Continuous Integration: Same Input = Same Output
  25. The NuGet Ecosystem
  26. Many, many, many Outercurve Foundation NuGet Project TeamCity support for NuGet NuGet-based tools by Microsoft Artifactory support for NuGet NuGet Package Explorer Nexus support for NuGet MyGet (NuGet-as-a-Service) Glimpse Plug-ins Chocolatey ReSharper Plug-ins OctopusDeploy Orchard RedGate Deployment Manager NuGetMustHaves SymbolSource NuGetFeed ProGet (Inedo) NuGetLatest CoApp NuGet server in Java BoxStarter NuGet Fight SharpDevelop NuGet plug-in NuGit Xamarin NuGet plug-in  see
  27. Chocolatey NuGet developer library packages Chocolatey applications and tools packager “yum” or “apt-get” for Windows
  28. Automate deployments Build results in .nupkg Octopus deploys to its tentacles Test tentacles Staging tentacles Production tentacles
  29. Plugins / AddOns / … NuGet Package Explorer – own feed OCTGN – own feed SharpDevelop – own feed ReSharper – Orchard CMS – EPiServer –
  30. Creating your own plugin system
  31. Conclusion
  32. Conclusion NuGet New Problems Solutions! The NuGet Ecosystem Conclusion
  33. @maartenballiauw