0
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.t...
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, Gi...
Before NuGet: sharing own code
Shared code in source control
Or compiled code in separate assembly
Separate assembly on a ...
NuGet!
With NuGet: third-party and OSS
One repository: NuGet.org
OSS and Microsoft provided libraries mixed
Dependencies, Configu...
With NuGet: sharing own code
Create a NuGet package
Specify dependencies, enforce versioning
Consuming project: specify ve...
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
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/cha...
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
MyG...
Create your own feed!
Have a copy of your dependencies!
Manage approved packages
Manage licenses
Host your own packages
Pr...
MyGet
Examples
Company feed
Limiting choice,
Licensing
Creating packages
Package promotion
Security
One more recommendation…
Don’t just update

Not everyone respects SemVer…

Don’t autoupdate during builds

Continuous Inte...
The NuGet Ecosystem
Many, many, many
Outercurve Foundation NuGet Project

TeamCity support for NuGet

NuGet-based tools by Microsoft

Artifact...
Chocolatey
NuGet

developer library packages

Chocolatey

applications and tools packager
“yum” or “apt-get” for Windows

...
Automate deployments
Build results in .nupkg
Octopus deploys to its tentacles
Test tentacles
Staging tentacles
Production ...
Plugins / AddOns / …
NuGet Package Explorer – own feed
OCTGN – own feed
SharpDevelop – own feed
ReSharper – http://resharp...
Creating your own
plugin system
Conclusion
Conclusion
NuGet
New Problems
Solutions!
The NuGet Ecosystem
Conclusion
http://blog.maartenballiauw.be
@maartenballiauw
http://amzn.to/pronuget
http://www.myget.org
Upcoming SlideShare
Loading in...5
×

An overview of the NuGet ecosystem - Mobel.io

1,106

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,106
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "An overview of the NuGet ecosystem - Mobel.io"

  1. 1. An overview of the NuGet ecosystem Maarten Balliauw @maartenballiauw
  2. 2. 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
  3. 3. Agenda NuGet New Problems Solutions! The NuGet Ecosystem Conclusion
  4. 4. NuGet
  5. 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. 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. 7. NuGet!
  8. 8. With NuGet: third-party and OSS One repository: NuGet.org OSS and Microsoft provided libraries mixed Dependencies, Configuration changes, Versioning
  9. 9. With NuGet: sharing own code Create a NuGet package Specify dependencies, enforce versioning Consuming project: specify version Updating is a joy
  10. 10. Windows Phone Examples https://www.nuget.org/packages?q=windowsphone
  11. 11. Windows 8 Examples https://www.nuget.org/packages?q=windows8
  12. 12. Let’s install one! And look at some internals
  13. 13. New Problems
  14. 14. Versioning U depends on T Y depends on T Let’s upgrade T!
  15. 15. One repository It’s a bit of an App Store… Fine for OSS, but what with my own frameworks?
  16. 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. 17. Licensing Developers on a roll don’t care! But you may do… How to limit choice?
  18. 18. Solutions!
  19. 19. 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
  20. 20. Recommendation Engine http://concierge.nuget.org Upload packages.config Find recommendations
  21. 21. Hosting Your Own Repository Folder / File share NuGet.Server package NuGet Gallery – www.github.com/nuget/nugetgallery MyGet – www.myget.org
  22. 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. 23. MyGet Examples Company feed Limiting choice, Licensing Creating packages Package promotion Security
  24. 24. One more recommendation… Don’t just update Not everyone respects SemVer… Don’t autoupdate during builds Continuous Integration: Same Input = Same Output
  25. 25. The NuGet Ecosystem
  26. 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 http://docs.nuget.org/docs/reference/ecosystem
  27. 27. Chocolatey NuGet developer library packages Chocolatey applications and tools packager “yum” or “apt-get” for Windows www.chocolatey.org
  28. 28. Automate deployments Build results in .nupkg Octopus deploys to its tentacles Test tentacles Staging tentacles Production tentacles www.octopusdeploy.com
  29. 29. 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/
  30. 30. Creating your own plugin system
  31. 31. Conclusion
  32. 32. Conclusion NuGet New Problems Solutions! The NuGet Ecosystem Conclusion
  33. 33. http://blog.maartenballiauw.be @maartenballiauw http://amzn.to/pronuget http://www.myget.org
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×