Scott Hanselman

NuGet's fancy older sibling FuGet gives you a whole new view of the .NET packaging ecosystem

January 25, '19 Comments [6] Posted in DotNetCore | NuGet
Sponsored By

FuGet diffsI 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.

 Supported Frameworks

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.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb
Sunday, January 27, 2019 12:10:13 PM UTC

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.
Pablo de la Iglesia
Sunday, January 27, 2019 1:47:55 PM UTC
Fuget site seems to be down at the moment.
sukru
Sunday, January 27, 2019 10:12:14 PM UTC
Hi Scott,

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/

Andon Dragomanov
Monday, January 28, 2019 9:51:17 AM UTC
Great stuff! Big THX

Can FuGet be hosted on premises to explore our home-brewed packages?
Jan Vratislav
Monday, January 28, 2019 10:43:16 AM UTC
How should one pronounce fuget? Asking for a friend ...

// Ryan
Ryan Heath
Monday, January 28, 2019 5:30:35 PM UTC
"namepsaces" typo
Carlos Muñoz Rodriguez
Comments are closed.

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.