ATL Server as shared source project

Great news - ATL Server is moving to a shared source project. If you have not already noticed, it was announced on VCBLog. This release enables developers to fix bugs and add new features to ATL Server. Same time they can release new drops more often than Visual C++ releases. As it was pointed out on VCBlog, one of main reasons for the release is that many ATL Server users would like to see the functionality and services provided by ATL Server expanded. Unfortunately because the Visual C++ libraries team has to work on supporting all other VC++ libraries, often feature requests in ATL Server are dropped out of list of new features for a release. We have decided to not constrain the functionality of ATL Server with the VC product cycle and let the ATL Server community move it forward at a greater pace.

 

You may expect to ATL Server published on CodePlex site around time when February CTP of Visual Studio Orcas is published online. Headers for ATL Server may show up earlier because we are not expecting that ATL changes in February CTP may have impact on them. As for tools and related tests, we have to do some initial testing on the February CTP to ensure they build and run before we publish them. I will keep updating readers of my blog with status of the project during upcoming weeks.

 

There are several comments on the original post on VC Blog which I would like to address in my reply.

 

1) We have been discussing which license to use Permissive or Limited Permissive. We had to consider several technical details. First, ATL Server code has dependency on ATL code. Second, source code of tools was only built with VC++ compiler so far and it is not written in platform independent way. With this said, ATL Server can only be used with VC++ compiler and ATL, which pretty much restricts it to the Windows Platform. Also all existing applications that use ATL Server have to target Windows because of restrictions in Visual Studio EULA. Putting this together, ATL Server is already restricted to the Windows Platform and this is why Limited Permissive license have been chosen.

 

2) Wizards that are part of Visual C++ IDE are tightly integrated with VC++ IDE. I have been looking with IDE team into taking wizards out of IDE such that they can be integrated back into IDE from the shared source project. Unfortunately VC++ IDE does not have the right support for this functionality and there is not a simple way of getting this done. Also in Orcas IDE cannot keep wizards because they are going to crash for end user because ATL Server is not in VC++ install. Unfortunately, right now ATL Server wizards are just gone from IDE. However I am not losing hope that we may find a way of integrating wizards back into IDE sometime in future of the project.

 

3) Topic of support ATL and ATL Server attributes has been discussed number of times in past years. It is one of those cases when as idea it seems to be good, but in reality it is just a never-ending source of bugs and complains. Overall opinion among internal and external devs is that attributes are not reliable and devs should stay away from using attributes in sources. For example, this is why why all projects in VS2005 default to generating non-attributed ATL and ATL Server code. When we started discussing ATL Server attributes, not surprisingly most folks felt like support for attributes should be just cut from compiler. We have discussed alternatives, but we have not figured out any other simple solution. So going forward VC++ compiler is not going to recognize ATL Server attributes. Before moving to shared source version of ATL Server, developers will have to replace attributed version of the source with non-attributed version. This is possible to achieve by compiling code with /FX switch, which generates code that is injected by the compiler instead of attributes. I think this is good change. There is going to be less code issues in source when attributes are removed. And ATL Server project is going to have less dependency on future changes to VC++ compiler. Also every functionality exposed by the library can be accessed from non-attributed code and removing support for ATL Server attributes is not a showstopper for the project.

 

I will keep readers of my blog up to date with progress of the project. Once project is published on CodePlex, the site is going to have a forum and blog dedicated to the project. I will post a link to it as soon as it is online. If you have any comments or suggestions, please email them or leave comments on the post.