Rob Relyea


December 2003 - Posts

  • What is missing from or broken about XAML?

    Filed under: ,

    Yesterday Chris, Don, Martin (a coworker of Don's) and I met to discuss XAML.  We're going to be thinking hard about possible improvements to it.

    Now when I say XAML in this context - i mean the markup format, not the Avalon elements or animations, etc....  We're asking questions like:

    1) should compact syntax (*Bind(...)) be patched to fix some known problems or swapped into some other similar syntax.
    2) should compound property tags and children of an element continue to be mixed together
    3) should there be a mandatory root element? (<Xaml> for example)
    4) is it ok if we require that every XAML file has 2 xmlns namespaces?
    5) how do we fix the mapping pi for custom components now
    and a few others...

    Anyway, if you have other issues or requests on this level, please leave a comment.

    If you have comments about those 5 issues, please leave a comment.

    I'll probably do more airing of the issues in future posts.

  • IS this a democracy?

    Filed under: ,

    I'm not sure how Avalon is going to go on the ID vs Id issue.

    Thanks to Brad and Steven for raising the issue with the community.

    I've read every reason, tallied the results, took out the repeat votes (but left their first vote in), took out Microsoft employees, etc...  We're talking pivot table here!

    By my tally, the vote is currently 20 to 19 for Id.  Clearly a contentious issue and not a slam dunk either way.

    I'm travelling for a little while, but when I return I will do the following homework:
    1) talk with BradA/Michael Murray about several guideline issues and questions i have that are related to this.
    2) talk to some folks to understand how much ASP.NET developers really deal with ID (in case sensitive scenarios)
    3) discuss with a few PMVTers -- a virtual team “Programming Model Virtual Team“, mostly of Avalon dev leads, architects, and a couple PMs.  This team reviews all Avalon apis.

    I could cave and just say - ok Guidelines are it.  Id is the one.

    IS this a democracy?

    But I'd rather understand the strength of all the reasons why people prefer one over the other:

    • Some people say PascalCasing should be everywhere...Well it isn't - and we're not changing that guideline (are we Brad) should that vote count 100%?
    • Some people say it should be Id because Id is an abbreviation for Identification.  It doesn't seem like the dictionary agrees with them.
    • Some people say it should match ASP.NET.  I have been in that camp because I think consistency between ASP.NET and Avalon is a good thing.  But then Michael Murray pointed out that in the typical tool experience, most tags are lower case.  That is why I listed #2 as homework above.

    IS this a democracy?

    NO.  A strict count of hands isn't the thing to do.

    Decisions need to be well thought through.  The owner needs to weigh the arguments and make a call.  This is what makes Program Management at Microsoft fun!

    Thanks for all the opinions and thought on this important issue.

  • How should Microsoft describe XAML so that any XML editor can provide IntelliSense and Validation?

    Filed under: ,

    Daniel raises the issue of attached properties and shows how WXS could be used for validation.  That looks like it is one way to solve the problem of attached properties.  But could it work in all XML Editors?

    We currently provide:
    a schema - xaml.xsd (the Longhorn SDK installs it)
    a set of rules/constraints that we can't easily describe in schema (not adequately documented yet)
    a set of assemblies - using reflection tools could understand what elements exist, their properties, events, etc...

    Xml Editing using Schema - Good

    I assume there are going to be xml editors that just know how to validate and help based on a schema.  I want that experience to be as good as possible.

    Xml Editing using Schema and/or other info - Great

    But if people want to make emacs, XmlSpy, VS' xml editor or other code & XML editors all work great as XAML editors - it sounds like they are going to need to work on more than just schema.

    Weiqi says that emacs can use Relax NG.

    So do we need rules for Relax NG, WXS, and others?

    For those of you who do want to be able to hand author or edit XAML, what tools do you want to use?  How can we make that tool better for XAML?  What can we do to help?

  • Question any complexity! Avalon API feedback

    Filed under: , ,

    In the comments of Steven's posting about the SideBar usability study, Frank says:

    “It is good that usability is being tested for Avalon. Looking at the docs online, I have the feeling it is one of the least-usable APIs I have ever seen. The xml looks easy but the API is very complex and over-engineered.“

    Frank is correct, we are too complex now in many areas.  We think we have good reasons for the things we have done, but things are still early - we do have a ton of room for simplification and polish.

    When Steven asks for more details, he follows up with another comment questioning 4 things: typing of our properties, Decorators, Changeable, and Length.

    Changeable & Length

    Greg Schechter, a new Avalon blogger, responds to the changeable and length comments.

    Weak Typing & Decorators

    We'll follow up with discussions on these later.


    Frank ends his comments with:

    “I think I could write a whole book here. Looking at how many abstractions the user has to juggle in their head just to understand simple buttons and shapes... it is incredible. Just count the number of classes involved, the number of complicated concepts. Well, maybe I will post more later, write something up in more detail. I don't mean to disrespect the hard work in that API, but this is supposed to last a long, long time. I think the "less expert" users will just cry when they try to use it, outside of the xml. Plus, exposing all this low-level detail will make it harder to change later.“


    We constantly need to question why every class is needed, why new conventions are necessary, etc...  We still have a lot of simplification work to do! 

    We have tons of internal debates about all of these things.  I'm excited that we can now have you involved.  Please ask us the questions.  Make your comments.  Tell us what needs work. 

    Please write more feedback!  Point to concrete samples of what you are trying to do - show us your code/markup. 

    What about the Button is hard to understand?  How to build one or how to use one?  What were you trying to do with it.

    Yes, Frank, we have a lot of work to do - we are trying to enable many powerful new things.  Yet we need to keep it approachable.

    Thanks for the help.

  • IntelliSense in markup & the Longhorn Tools Experience

    Filed under: , ,

    We just posted a patch to make intellisense in xaml better.

    The problem was that the XML editor in VS has some things hard coded.  It thought that if a file didn't have .xml as an extension, it must not be XML.  No matter how much we told it that our <style> tag could have content inside of it, it wouldn't listen - it was still trying to format the content as CSS. So this patch fixes that.

    Please let me know how people are enjoying (or not) the VS development experience for Longhorn Applications.

    What are the top 5 things you'd change? What do you like? What else do you want?

    (yes, we know you want a visual designer.)

    What I want to know is when will the first 3rd party tool be available (to the developer community) with some knowledge of XAML, MsBuild, etc...