Today we cut a couple of options from the product, but we felt that the ramifications of these cuts warranted talking to the community about it and letting people know about it. I will explain why we decided to do it and talk a little bit about the surrounding area. We want to see what customers think.
The features cut were two options (which are also menu commands). These are “Snap to Grid” and “Show Grid”. Along with this the option for setting the grid size also had to go (obviously). What these controlled was showing a grid of a predefined resolution rendering over the top of a document and whether or not this grid affected resizing and moving of controls.
The reason why we cut these features is because they do not mesh well with the philosophy of CSS. CSS has multiple units of measurement, and allows for the resetting of the positioning origin. CSS also allows the use of right and bottom to position objects as well as left and top. Having a grid drawn relative to the top left of the body, in only one unit (pixels), was not working well with CSS.
As you may have noticed, we have changed the CSS positioning model somewhat in Whidbey. I was behind that – what I wanted to do was to create a way of doing CSS positioning that was easy to use, but outputted HTML that was standards compliant. VS7 and VS7.1 output various attributes that are not part of any W3C schema, and they force you to create containers that only hold either text or positioned entities. They did this because at the time we wanted to create an environment comfortable for people used to form designers, and form designers typically have grids and grid snapping.
Rather than try to fit a square peg into a round hole, I made the call to get rid of these features so that we could fix some bugs and get things working with more compliance. This is not a case of us not caring about people who use CSS positioning – this is a case of us wanting to do CSS positioning in a standards compliant way. After I have made the most recent changes, here are some of the positive differences that Whidbey will offer over previous versions:
- Preservation of units when resizing, moving or formatting controls. Some formatting commands (such as align left) will sometimes modify units on some controls in order to do their job. For example, to align everything to a control with left:30px, other controls need to be set to left:30px. But in general, units are not changed unless absolutely necessary.
- If you are resizing in only one dimension, then the other dimension will not be touched at all. For example, if you grab the width resize handle of a control and resize, then a height value will not be written there or modified. This makes a difference when editing data controls, because some of them you don’t want to have height but you do want width.
- We preserve what attributes you use to position controls. If you use bottom and right to position something, then you can move it, resize it, even use formatting commands on it. If it is possible to preserve what attribute you used then we will.
- We will respect RTL and LTR conventions. If you are in RTL flow and you position something, we use right instead of left to create a position.
Overall, the driving philosophy behind these changes was quality and standards adherence. With the time that we have before shipping, the grid features could not be made to fit into this philosophy, so we cut them.
One thing that some people have mentioned on www.asp.net is that we no longer allow you to automatically position controls, and indeed we do not. This is because we no longer have grid areas like we used to, and they use to let us infer that you wanted positioning on something. If you want autopositioning, let us know. If there is enough demand for it we will figure out a way to put it into the product.
Please let me know whether you like or dislike these changes. I am writing this posting because we care what people think about this, and we want to do the right thing for people who use the product.