Blogs

View all Blogs >>

What Does that .NET Namespace Mean: System.* and Microsoft.*

Posted by: Brad Abrams on 11/16/2008

image I need your feedback... I am chatting with some co-workers about the perception of in the .NET Community of what the System.* and Microsoft.* namespaces mean.    So I had the crazy idea of just asking you!  

For this exercise, I'd like you to think about a new "feature area" of the .NET Framework... Would you instinctively draw any conclusions about that area based on if the namespace where System.* or Microsoft.*?  If that feature area were in the Silverlight subset of .NET, would that change your mind at all?

There are basically three schools of thought among my co-workers  -- which one is closer to your perception? 

1) They are the same or it really doesn't matter.    The root namespace between System.* and Microsoft.* have no meaning...  Microsoft appears to be arbitrary about when functionality goes in one or the other. 

2) Part of the Framework vs.  Addons. 

System.* indicates stuff that is logically part of the framework.  It is 100% supported, solid-long term design that will not need to churn, safe to bet on, stable, likely will get great tooling support.  Designed to be very interoperable and could work anywhere .NET is.  This may ship as part of the redist or maybe an out of band (such as ASP.NET MVC, ASP.NET AJAX, etc). 

Microsoft.* is the bleeding edge stuff or value-add.  It is typically very cool stuff that adds on to the framework and enhances it, but maybe a work in progress... over time you might expect some of those concepts to go into the framework.    As an example, the great work patterns and practices does often falls into this bucket. 

3.) Part of the core redist vs. addons

System.* means it ships in the core redist.  You are not able to ship it with your application.  System.* stuff only ships when the redist revs.   You would not expect Microsoft to do any out-of-band releases in the System.* namespace for example. 

Microsoft.* means it is not part of the core redist.   A note: as we move stuff into the core redist you'd expect us to change the namespace from Microsoft.* to System.* meaning you'd have to tweak any calling code *if* you wanted to take advantage of the new version.

 

So, what do you think?  Which one best fits your thoughts this?  I'd love any other comments...


be the first to rate this blog


About Brad Abrams

Brad Abrams was a founding member of both the Common Language Runtime, and .NET Framework teams at Microsoft Corporation where he is currently the Group Program Manager for the UI Framework and Services team which is responsible for delivering the developer platform that spans both clients and web based applications as well as the common services that are available to all applications. Specific technologies owned by this team include ASP.NET, Atlas, and Windows Forms.

Brad has been designing parts of the .NET Framework since 1998 when he started his framework design career building the BCL (Base Class Library) that ship as a core part of the .NET Framework. Brad was also the lead editor on the Common Language Specification (CLS), the .NET Framework Design Guidelines and the libraries in the ECMA\ISO CLI Standard. Brad has been deeply involved with the WinFX and Windows Vista efforts from their beginning

Brad co-authored Programming in the .NET Environment, and was editor on .NET Framework Standard Library Annotated Reference Vol1 and Vol2 and the Framework Design Guidelines