Sam Gentile did a presentation at VTdotNET in September that really took the time and care to explain the many terms that define the .NET programming that we do. Although one of the very minor points of his talk, in there he happens to clarify the BCL vs. FCL, which I talked about in this post and discussed a bit with Ian Griffiths from Developmentor (in the comments) as well as Kit George from the BCL Team at MS via email. There really is a lot of misinformation and confusion about these definitions which don’t really impact too many people, but I just somehow got curious.
Here are just some basics that may be totally redundant to some, but may have never been really clear to others.
BCL=Base Class Libraries which are part of the ECMA specification for Common Language Infrastructure (CLI). The CLR is Microsoft’s an implementation of that. Rotor and Mono are other examples of implementations.
In .NET, Microsoft has taken the BCL and added to it all kinds of goodies like WinForms, Data, etc. This is called the FCL (Framework Class Library).
Really – how many gazillions of times have you seen this already?
I am going on and on about this because I have heard many people say “the BCL is ALL of the classes in .NET“.
I even happen to have a copy of Addison Wesley’s Common Language Infrastructure Annotated Standards, but the real definition of the specs is downloadable from the ECMA site (above) if you are curious. I actually have done so, but must now stop the insanity and get back to the programming work I have to do this afternoon!
If you care to understand any of it – where the class libraries come from, what people mean when they say BCL, BCI, ECMA etc etc, I highly recommend checking out Sam’s deck (this page and find the sept 2003 presentation) or even requesting him to come to your (U.S. or Canadian) User Group via INETA. If you view the powerpoints, be sure to turn on your speakers. (heh)
Sign up for my newsletter so you don't miss my conference & Pluralsight course announcements!