Influencing the direction of the .Net Framework
This comment by Stefan Wenig really made me think:
...the elephant in the kitchen is the fact that there is no process for discussing c# enhancements within the community before everything is written in stone.
The way you're designing C# seems to work better in some aspects than the java community process, so I'm not sure how far you should really go. But getting feedback and discussing suggestions early is definitely overdue.
The community seems to have very little influence on the choices made at Microsoft. We can make suggestions in MS Connect and for all intents and purposes they are ignored there after. There may be something going on behind the scenes, but I want to be able to take part in a discussion, not a popularity contest with arbitrary and contrary judges that I never get to talk to.
Again, Stefan make the case very clearly in another comment:
As for the discussion process, I know that there are ways, but they basically all suck. I can make suggestions at connect, but that's no place to discuss stuff. I'm not talking about voting either, things like AOP are far too complicated to be discussed in this matter. I'd like to see a discussion between language geeks inside and outside of MSFT, voices from framework developers (the nhibernate/castle kind) and application developers, etc. This is all happening in the blogosphere - except that it's fragmented and the C# team is not really participating.
Comments
Isn't that one of the things that MS has RD's for? You go to them they take that on to MS. Plus maybe you should post comments to ScottGu's blog. He does truly seem to listen.
Doesn't the whole Persistance Ignorance example show that the community can make a difference?
No doubt, someone will point out immediately that it was an 'unordinary' event, and I can't argue against that.
But, it suggests that maybe there are opportunities there.
I agree that Scott Guthrie is responsive, but there is so much you can do to communicate with the development teams at MS. You can also participate in the community in many ways. I personally contribute in the forums (forums.asp.net) and our local .NET User Group. (www.wi-ineta.org) I also write regularly on my blog.
Beyond that there is Channel 9 (channel9.msdn.com) and MS is encouraging their developers to write in their own blogs. If you ever want to get involved in a discussion you can do it in any of these places among many others that I am not mentioning. Other developers who read your comments agree can join in. Just look at all of the disussions on Channel 9. The blogs are also an excellent place for discussions. This recent discussion on ORM is a good example. And for that topic, some developers may not like DLINQ but the great thing is that you do not have to use DLINQ if you do not want to. MS knows that we like to have options and they give them to us.
And like in any community, the more active you are the more your voice will be heard. So the best way to get heard is to get into the forums and post to your blog regularly.
jdn,
I am not talking about a whole lot of noise when MS does something like this. I am talking about engaging the community, not select members thereof in those decisions.
The really important part is that is should be early enough that the community would get to have its say before the "not enough time to make a change" answer starts.
Brennan,
I am sorry, but that is not what I mean.
Talking to the developers when they are in the "ready to ship" stage is way too late. And there really isn't any way to engage in a conversation about a) the design of things, b) explain what we want to have in an open discussion.
I don't feel that the suggestions I've made have been ignored. (OK, they're not implemented either, at least not yet, but I feel the response has been well-reasoned and generally positive)
For instance, I found this response informative and positive: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=278510
Or the long-running discussion about symbols/"nameof". Here, I suggested that any solution has to accomodate attributes: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1463023&SiteID=1
Thanks to Keith Farmer from MS for taking an interest in this issue, and expressing his own view which is along the same lines: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1487253&SiteID=1&mode=1
Thanks for picking this up Ayende! To clarify my case (for those other commenters here too): I know there are ways. But they are fragmented, unstructured, and usually end nowhere. There is no single point where questions like the infoof/memberof operator, more powerful attributes, or even advanced and complex stuff like AOP are discussed. Opinions are voiced here and there, gather more or less support, and two weeks later the same matter is discussed on another blog, by other people, with other or no MS staff attending. We never get close to a conclusion - this will only happen in the sacred halls of Redmond. With some luck, a year or two later something almost, but not quite, entirely unlike what has been discussed shows up in some new language version presented at the next PDC.
In a forum/wiki/mailing list, this could be taken to a whole new level. We could understand the reasons things are either done or not done by MS, and they could understand why things would be important for us. Certain language features only become interesting for application developers when they enable new features in libraries and frameworks. MS should realize that there are many people who think hard about this stuff, and go out, ask for input on certain topics, and actively discuss it, rather than posting appeasement comments and assuring us that suggestions are triaged... Yes, I know you have been looking into it and are continuing to do so for the .... timeframe.
Meanwhile, we can just hope that they stay on track with their goal of code-based productivity in C# and not surrender to the code-generator-happy visual studio/graphic DSL/software factory crowd, as the partial method stuff seems to indicate. Sorry for the ranting.
John, Keith Farmer is just another example of how talented people in the .net community one day end up on the mothership if they want to really make a difference, just because MS cannot handle community involvement to its full potential. (analogy stolen from David Ing's comment at http://www.hanselman.com/blog/IsMicrosoftLosingTheAlphaGeeks.aspx)
Generics is one feature that radically changed the way we write code, so much that I wonder how we ever got anything done without it.
infoof is another biggie that could possibly eliminate the passing of property and method names as strings. I don't understand why such a feature is not a high priority, MS form a team, add this feature roll it out. I personally dont want to wait for VS 2010 to get infoof.
MS should contact Oren, Udi, Stefan and other alphas, fly them up, pay them well, form a special language team, and get what we need in the language and the framework ,ASAP.
They are in a position to make every developer more productuctive by extending the language at the core.
That's too kind, Mike, but the truth is, I don't want to be dragged around the globe and put before a whiteboard. It just doesn't work like that. Face to face meetings can be productive, but ideas need time, input, consideration and, most of all, broad discussion. The web is the place for this. There's no shortage of smart people at MS, what they need is openness and collaboration, not more Keith Farmers and John Lams at the mothership.
(One could argue that they need more Scott Guthries, but there need to be people further down the food chain who can have long and detailed discussions about language design. Also, judging from his output, there's more than one ScottGu already, so no need to worry ;-))
Comment preview