Hi, I’m Beth Massi and I’m a Technical Evangelist for the .NET Foundation and also a member of the .NET team at Microsoft. I’m responsible for a lot of the team’s community efforts including event planning, content creation, customer outreach, as well as helping the .NET Foundation Board, Executive Director, and Advisory Council with .NET open source software initiatives.

The Advisory Council is composed of OSS project leaders that care deeply about .NET and the success of the foundation. They drive key initiatives in the foundation and guide the board. Learn more about what the Advisory Council is all about and participate in public discussions with them on our forums. We thought you’d like to get to know the folks on our Advisory Council so I’m kicking off a series of written interviews with them.

For this first post, I interviewed Shaun Walker, the Advisory Council Chairman. Shaun has 20+ years professional experience in architecting and implementing large scale software solutions for private and public organizations. He is a Co-Founder & Former CTO of DNN Corp and the original creator and maintainer of DotNetNuke, a web application framework for ASP.NET which spawned the largest and most successful open source community project on the Microsoft platform. He has been a Microsoft MVP in ASP.NET since 2004. He is a frequent speaker at conferences and user groups and is a contributing author to a variety of technology focused publications.

Tell us a little bit about yourself. What's your background? When did you start getting interested in programming?

In 1979, when I was 9 years old, my family relocated to Ashcroft, British Columbia, Canada, a tiny community in the south-central interior of British Columbia with a population of approximately 1500 people. We relocated with a goal to start a commercial vineyard. My grandfather had owned a vineyard in Kelowna and he had sold it with the idea that the hot arid climate in Ashcroft, combined with cheap abundant land, would be a perfect environment for him and his children to establish a large, successful vineyard.

My mother and father, grandparents, and two uncles bought approximately 200 acres of sagebrush-covered land about 30 minutes outside Ashcroft, an area known as Basque Siding that was only accessible by navigating 5 miles of unpaved roads. We each had our own 50-acre parcel of land but the family all worked together to establish the infrastructure to develop our vineyards. We installed power, irrigation systems, cleared land, and built houses. Then we planted seedling grapes, and grew alfalfa and other crops to provide some initial income, as a vineyard takes five years before it reaches full production. We were extremely self-sufficient and raised our own cows, pigs, turkeys, and chickens, as well as our own fruits and vegetables.

When I was 12 years old we visited my cousins in Kelowna and I was introduced to the Commodore VIC-20 for the first time. My cousins were using it to play games but my parents clearly saw my fascination in this little machine. Money was scarce, so I am not sure what ultimately motivated their decision, but they decided to purchase a base model VIC-20, which came with an integrated keyboard, a cassette tape drive, and a user manual. They also had one stipulation — the only games I could play were games I created myself.

So I spent a lot of time typing BASIC code into the computer and storing the programs on cassette tape. My parents got me a subscription to COMPUTE! magazine, which provided source code listings for more advanced games. Pretty soon I started to recognize the patterns and techniques required to write programs, and I started building my own applications. Living on a remote farm created a perfect environment for investing myself in computers, as there were few distractions — I was either outside working in the vineyard ( pruning, weeding, picking, cultivating ) or I was inside the house typing code. My two younger brothers were more than happy to play the games that I created for them.

When I saw the movie War Games in 1983 starring Mathew Broderick, I really got excited about the potential of computers as more than just a standalone device. In the movie, the character played by Broderick hacks into the NORAD super computer nicknamed “Joshua” using a backdoor password and mistakenly invokes Global Thermonuclear War. In the climax, the supercomputer is tricked into playing Tic-Tac-Toe against itself until it reaches a draw and declares that “the only winning move is not to play.” After watching this movie numerous times I was convinced that I wanted to be a “hacker” and I sent off handwritten letters to many of the vendors listed in COMPUTE! magazine asking how I could become a programmer.

In the summer of 1983 we took a long road trip to Disneyland in California and spent some time visiting my uncle in the Bay Area. During this trip my parents finally caved in to my demands for a computer upgrade. The Commodore 64 was a large enhancement over the VIC-20, and we were able to get a good deal on a Commodore 64 package, a 1702 color monitor, and a 1541 floppy disk drive. I could not wait to get home and plug in these amazing new devices.

The following winter my family suffered a significant setback. Some exceptionally cold weather killed all of our grape plants, which ended my parents’ dream of operating a large commercial vineyard. They did not have the resources to replant the vineyard, so they both had to work traditional jobs while continuing to operate the farm by selling fruits and vegetables to the local markets to try and make ends meet. This was very hard work, and without any opportunity for vacations as the farm demanded the family's full attention almost year round. The entire family pitched in to keep the farm afloat as my parents tried valiantly to preserve their investment.  

When I reached high school I was allowed to participate in an accelerated learning program that allowed me to take Computer Science courses that were two grade levels higher than my current grade. This exposed me to IBM PCs and Apple II computers and some new programming languages. I loved the challenge of solving problems and got a lot of satisfaction out of being able to tell the computer to follow my specific instructions. I had found my passion and I knew at that point that my future career would involve software development.

What initiatives are you working on (or passionate about) within the .NET Foundation?

As the Chairman of the Advisory Council, I am working closely with the Executive Director to provide a solid operating model for the .NET Foundation. I authored the original Charter for the Advisory Council and I am actively involved in formalizing project governance criteria.

Can you tell us some of the first open source projects you worked on as a contributor? Why did you get involved? How did you get started?

On Christmas Eve 2002 I released the first version of DotNetNuke, an open source .NET CMS Platform. DotNetNuke was based on a sample application that Microsoft had released for ASP.NET 1.0 called the IBuySpy Portal. I had significantly enhanced the original sample application with many additional capabilities including multi-tenancy, and felt compelled to share it with the broader ASP.NET community. Releasing DotNetNuke as an MIT-licensed open source project allowed it to gain worldwide recognition and adoption.

Looking back, what bug are you most proud of fixing in an open source project?

There were many bugs that I fixed on the DotNetNuke project, but the one which is most memorable for me was a security vulnerability in an early version of the platform which allowed a user to upload executable code files. The actual code fix turned out to be trivial, but understanding how the exploit was being orchestrated was far more challenging. Ultimately it was leveraging a combination of an improper string validation in the application as well as an obscure legacy behavior in IIS. I had to use my powers of persuasion to convince the Iranian hacker who discovered the vulnerability to explain the process he was using to exploit the loophole. And then I had to determine the appropriate safeguard, patch the application, and inform the community of the vulnerability.

What project(s) do you spend most of your time on now?

I still write open source extensions for DotNetNuke, but I am also working in stealth mode on a new open source project that I expect to release later this year… stay tuned.

Can you tell us one thing you have learned about running an open source project?

One of the most important things to understand about running an open source project is that developers are driven by personal motivation. As a result, management in an open source project is not so much about directing people what to do, but rather figuring out how to take best advantage of all of the random contributions from the community.

Why is open source software important to you?

Open source software allows people of modest backgrounds, education, business experience, culture, and financial resources to overcome adversity, unleash their creativity and passion, and pursue success in the areas of philanthropy or entrepreneurship.

What is it about .NET that you like most?

I like that .NET is a constantly evolving and integrated suite of technologies that allow software developers to solve complex business problems.

What does the future of .NET look like in your dreams?

In my dreams, .NET becomes an even more dominant technology platform than it is today. It will evolve in a transparent manner to embrace open standards and trends and will continue to incorporate modern characteristics which allow it to remain relevant and competitive in the broader technology landscape.

Thanks, Shaun!

Feel free to ask more interview questions in the comments below.

Enjoy,
-Beth Massi, .NET Community

We’re excited to announce a new open source project on GitHub from the WCF team at Microsoft.  This new version of WCF targets .NET Core and has been donated to the family of .NET Foundation open source projects.

Check out the WCF project for more details. The team is actively developing WCF in this repository, and they will review any issues and pull requests you wish to contribute. The wiki describes how to build and contribute to the project.

WCF targets the .NET Core framework which is designed to support multiple computer architectures and to run cross-platform. Right now the WCF project builds on Windows, but .NET Core offers the potential for it to run on OS X and Linux. The WCF team are working hard to make this a reality and to keep up to date as platform support for .NET Core grows, but if you want to help I know they would love contributions especially around improving and testing the platform support.

In this guest post from Ron Cain, he explains more about the new project and how to get started with the new, open source WCF and .NET Core.

-- Martin


What is in the new WCF GitHub repository

The WCF repository contains a subset of the full Windows Communication Foundation product available on the Windows desktop, and it supports the library profiles already available for building WCF apps for the Windows Store.  These profiles are primarily client-based, making them suited for mobile devices or on mid-tier servers to communicate with existing WCF services.  The corresponding Windows Store libraries now available in this repository are:

  • ServiceModel.Primitives
  • ServiceModel.Http
  • ServiceModel.NetTcp
  • ServiceModel.Duplex
  • ServiceModel.Security

Features known to work

This project is under active development, but as we’ve learned from other projects we want WCF to become an open source project early in its lifecycle so that it has time to respond to community feedback before it is declared “done”.  This means some areas are a work in progress and you will see them changing rapidly. Our team’s goal is to achieve feature parity with the existing Windows Store profiles first and then improve as feedback comes in.  The following features are expected to work today:

Bindings:

Transport-level binding elements:

Message encoding binding elements:

Channel shapes

Miscellaneous:

  • ChannelFactory<T>
  • ClientBase<T>
  • FaultContract, FaultException and FaultException<T>
  • MessageContract
  • DataContract serialization of simple and complex types
  • XmlSerializer serialization of simple and complex types (XmlSerializerFormatAttribute)
  • IClientMessageInspector

Known issues

Features that are available for Windows Store profiles but not fully enabled yet by WCF will throw a PlatformNotSupportedException today. Our team is actively working on these and expects to enable most of them soon.  Checkout the WCF Issues to see how our team is prioritizing this work, and feel free to comment on the issues for the features most important to you. The features not yet enabled are:

  • Duplex communication
  • WebSockets
  • SSL
  • Message level security
  • Digest or NTLM authentication
  • Streamed transfer mode
  • ETW tracing support
  • TCP transport level security

Visual Studio 2015 RC and WCF

Microsoft released Visual Studio 2015 RC at the Build conference in April 2015, and it supports the ability to use WCF in both Universal Windows and ASP.NET 5 applications.  The code used to build these WCF libraries used by VS 2015 RC was moved into this new GitHub repository, and the GitHub version will be the source used moving forward.  By contributing to the WCF project you will be contributing directly to the WCF capabilities available to Universal Windows and ASP.NET 5 apps.

Ron Cain, Project Lead, WCF.

At BUILD some of the .NET Foundation team members were interviewed on Channel 9.

Check out the interview here: .NET Open Source Initiative

Jay Schmelzer, Immo Landwerth, Martin Woodward and I chatted about what the .NET Foundation is, why we need it, and what it can do for the .NET ecosystem. Jay is the President of the .NET Foundation, Immo is on the Advisory Council and project lead for CoreFx and Martin is the Executive Director of the .NET Foundation. I’m officially the Secretary but I rather call myself Technical Evangelist :-).

Meet the rest of the people behind the .NET Foundation and join the conversations in our forums.

Enjoy,

-Beth Massi, Technical Evangelist .NET Foundation

The .NET Foundation was set up to foster open source innovation and collaboration around .NET and so I'm very pleased to announce that we have released an initial version of a new project called LLILC (pronounced "lilac") on GitHub. This is a new LLVM-based native code compiler for .NET Core which is being contributed to the .NET Foundation by Microsoft. LLVM is a very popular open source compiler framework which supports targeting multiple CPU types. LLILC creates a bridge into LLVM for .NET, making LLVM's broad chip support and tools available to .NET Core.

We are envisioning using the LLVM infrastructure for a number of scenarios. The first tool in LLILC is a Just in Time(JIT) compiler for CoreCLR.

Why a new JIT for CoreCLR?

While the CoreCLR already has JIT, we saw an opportunity to provide a new code generator that has the potential to run across all the targets and platforms supported by LLVM. To enable this, as part of the LLILC project we're opening a CIL reader that operates directly against the same common JIT interface as the production JIT (RyuJIT). This new JIT will allow any C# program written for the .NET Core class libraries to run on any platform that CoreCLR can be ported to and that LLVM will target.

There are several ongoing efforts to compile MSIL in the LLVM community. Why build another one?

When we started thinking about the fastest way to get a LLVM based code generation working we looked around at the current open source projects (SharpLang is a very cool one and LLVMSharp is also good) as well as code Microsoft had internally. While a number of the OSS projects already targeted LLVM BitCode, no one had anything yet that was a close match for the new CoreCLR interface. Looking at the options it was quickest for us to refactor and modify a working MSIL reader to target BitCode then get an existing project to support the contracts and APIs the CoreCLR uses for JIT'ing MSIL. Using an existing MSIL reader let us get the project bootsrapped using a number of building-block components that we think the wider community will also be able to take advantage of. This rapid bootstrap for C# across multiple platforms was the idea that was the genesis of this project and the compelling reason to start a new effort. We hope LLILC will provide a useful example - and a set of reusable components - for the whole community and make it easier for lots of other projects to interoperate with the CoreCLR runtime.

Why LLVM?

Basically LLVM is awesome. It's already got great support across many platforms and chipsets and the community is amazingly active. The ability for LLVM to operate as both a JIT and as an AOT compiler was especially attractive. By bringing MSIL semantics to LLVM we plan to construct a number of tools that can work against CoreCLR or some sub set of its components. By putting all this out in an early state, we also hope folks will be able to produce tools and technologies that we haven't even thought of yet.

Roadmap

As we said, it's early days for the LLILC project but the current plan is to start with a classic JIT, then move to Install-time JIT (what we talk of as "NGen" in the .NET world). Next the LLILC project team want to look at an Ahead of Time compiler (AOT) - a build lab compiler that produces standalone native executables for many platforms, using some shared components from CoreCLR. The AOT compiler could also be used to improve startup time for important command line applications like the Roslyn Compiler.

The LLIC JIT will be a functionally correct and complete JIT for the CoreCLR runtime and a great reference implementation. It's too early to say but it may not have sufficient throughput to be a first-tier JIT, but it is expected to produce high-quality code and so might make a very interesting second-tier or later JIT, or a good vehicle for prototyping codegen changes to feed back into RyuJIT.

Right now the core LLILC project team have been focusing on Windows along with Linux and Mac OS X but we would be very keen on folks getting involved that wanted to widen th platform base.

Current Status

Today on Windows we have the MSIL reader & LLVM JIT implemented well enough to compile a significant number of methods in the JIT bring up the tests included in CoreCLR. In these tests we compile about half the methods and then fall back to RyuJIT for cases we can't handle yet. The testing experience is pretty decent for developers. The tests we run can be seen in the CoreCLR test repo. All tests run against the CoreCLR GC in conservative mode - which scans the frame for roots - rather than precise mode. We don't yet support Exception Handling.

We've established builds on Linux and Mac OSX and are pulling together mscorlib, the base .NET Core library from CoreFx, and test asset dependencies to get testing off-the-ground for those platforms.

The LLILC team are starting to engage with the very cool folks in the LLVM community on the project (see the LLVM blog post) but we also hope that developers and academics who are familiar with LLVM will also get involved, helping C# and the other .NET languages be supported for LLVM.

The LLILC team will be working in the LLILC and LLVM repos over the next several months. They will be posting to the Forums as they make progress. As .NET Core becomes more fully supported on Linux and OS X, it is their intention to provide an LLILC implementation at a similar quality, so that you can use both projects together. It is also a great opportunity for us to get feedback, since we expect a lot of experimentation with .NET Core.

While it is early days, we'd love to have you join in and help bring the potential that LLILC offers to .NET Core via LLVM a reality. We want to know about your experience, either positive or issues that you encounter. If you have LLVM experience or want to gain that experience by working on the project, please do engage directly with the LLILC project. The team will actively be monitoring for any PRs, responding to issues and wanting to discuss any changes we are proposing to LLVM to help it support .NET.

LLVM and .NET are an interesting combination. .NET provides multiple-language support via a common language runtime, while LLVM supports "compilation of arbitrary programming languages" to multiple CPU targets. By combining these two worlds, LLILC provides a promising path to multiple platform support for .NET languages and by extension to the .NET developers across the globe. Exciting stuff.

Martin Woodward
Executive Director, .NET Foundation

Time flies. Exactly one year ago today, Microsoft Corp. announced the creation of an independent .NET Foundation to foster open development and collaboration around the Microsoft .NET development framework. At the end of February we announced our Advisory Council, a group of nine leaders who are bringing their passion and experience to help steward the future of .NET as an open source community. Today, I am pleased to announce that the .NET Foundation Board appointed a full time Executive Director to the .NET Foundation: Martin Woodward.

In his new role, Martin will remain an employee of Microsoft, where he has been involved in the open source world for some time. He came from the Microsoft MVP community where he worked on Eclipse, Java, Unix and Mac tooling for Team Foundation Server, bringing this functionality to Microsoft’s Developer Division. He helped drive the introduction of Git to Microsoft and ensured it was done in collaboration with the open source community. Behind the scenes, Martin lent his expertise to several Microsoft open source initiatives that you’re familiar with, including some of the projects brought into the .NET Foundation. Additionally, he has been part of a cross-company effort to improve the internal processes and tooling at Microsoft, enabling the company to do more in the open source space.

Over the past year, we have been honored by the level of community involvement in the .NET Foundation. Community collaboration levels are frankly staggering. While Microsoft has utilized its full engineering teams, including the Core CLR, Core Framework, ASP.NET, F# and Roslyn Compiler teams, working in the open on GitHub, more than 60 percent of pull requests approved for those repositories are coming from outside of Microsoft. The core project teams remain heavily focused on being responsive to those pull requests, often responding in a matter of minutes.

More important, however, is the passion of the volunteers in the .NET community that is driving the success of those projects. Until now, the .NET Foundation Board of Directors has relied on a team effort to manage the organization. But with the scale of activity that we have seen in the last year, it is time to bring someone to the team who can be fully dedicated to ensuring the rapid growth and continued innovation of the .NET open source ecosystem. I’m thrilled to have Martin onboard to do just that.

Please join me in welcoming our new executive director, Martin Woodward, to the .NET Foundation team and community!

 

Jay Schmelzer
President, .NET Foundation
Director Program Management, Microsoft