NuGet's fancy older sibling FuGet gives you a whole new view of the .NET packaging ecosystem
I remember when we announced NuGet (almost 10 years ago). Today you can get your NuGet packages (that contain .NET libraries) from Nuget.exe, from within Visual Studio, from the .NET CLI (command line interface), and from Paket. Choice is good!
Most folks are familiar with NuGet.org but have you used FuGet?
FuGet is "pro nuget package browsing!" Creating by the amazing Frank A. Krueger - of whom I am an immense fan - FuGet offers a different view on the NuGet package library. NuGet is a repository of nearly 150,000 open source libraries and the NuGet Gallery does a decent job of letting one browse around. However, https://github.com/praeclarum/FuGetGallery is an alternative web UI with a lot more depth.
FuGet is "advanced mode" for NuGet. It's a package browser combined with an API browser that helps you explore the XML documentation and metadata of a package's assemblies to help you explore and learn. And it's a JOY.
For example, if I look at https://www.fuget.org/packages/Newtonsoft.Json I can also see who depends on the package! https://www.fuget.org/packages/Newtonsoft.Json/dependents Who has taken a public dependency on your package? I can see supported frameworks, namepsaces, as well as internal types. For example, I can explore JToken within Newtonsoft.Json and its embedded docs!
You can even do API diffs across versions! Check out https://www.fuget.org/packages/Serilog/2.8.0-dev-01042/lib/netstandard2.0/diff/2.6.0/ for example. This is an API Diff between 2.8.0-dev-01042 and 2.6.0 for Serilog. This could be useful for users or package maintainers when deciding how big a version bumb is required depending on how much of the API has changed. It also gives you a view (as the downstream consumer) of what's coming at you in pre-release versions!
From Frank's blog:
Have you ever wondered if the library your using has been customized for a certain platform? Have you wondered if it will work on your platform at all?
This doubt is removed by displaying - in full technicolor - all the frameworks that the library supports.
They’re color coded so you can see at a glance:
- Green libraries are .NET Standard and will work everywhere
- Dark blue libraries are platform specific
- Light blue libraries are for full .NET and Mono only
- Yellow libraries are old PCLs that we’re all trying to forget
FuGet.org is a fanstatic addition to the .NET ecosystem and I"d encourage you to bookmark it, use it, support it, and get involved!
If you're interesting in stuff like this (and the code that runs stuff like this) also check out Stephen Cleary's useful http://dotnetapis.com/ and it's associated code on GitHub https://github.com/StephenClearyApps/DotNetApis.
Sponsor: Your code is bad, but that’s ok thanks to Sentry’s full stack error monitoring that enables you to track and fix application errors in real time. Stop garbage code from becoming garbage fires.
About Scott
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.
About Newsletter
Pro tip:
A single char replacement gets from you from Nuget to Fuget at the same location.
Thus, while browsing, if you are navigated to package on Nuget, a single char can get you to Fuget :)
Ex:
https://www.nuget.org/packages/Newtonsoft.Json/
https://www.fuget.org/packages/Newtonsoft.Json/
https://www.nuget.org/packages/NUnit/
https://www.fuget.org/packages/NUnit/
Can FuGet be hosted on premises to explore our home-brewed packages?
Comments are closed.
Hi Scott
This is very interesting. Is there any possibility to create a private "fuget" server to access a private repository? In my organization we use a private nuget server that many other partners can access and this solution is very good for documenting our nuget packages.