Sunday, May 17, 2015

What Remains of MS Vendor Prefixes in EdgeHTML?

If you haven't been following along with all of our developer relations improvements then you've probably missed out on some really great information on where EdgeHTML and the Microsoft Edge Browser are going. For instance our new model on feature implementation generally starts with us publicly acknowledging that we are working on something long before we even start. You can see a huge list of features marked with "Under Consideration", "Under Development" and more importantly "Preview Release", which means you can already play with it if you are in the Windows Insider program and getting early builds.

If you haven't checked out our status page yet, head over there and take a look before continuing on with this post. I'll wait ;-) - https://status.modern.ie/

Okay, so you may have noticed there are 3 "Deprecated" features. That's a start, but if you've followed the #EdgeHTML hash tag, or some of my blog posts you are probably wondering where the other 100 or so features are hiding. Turns out, this space isn't very cut and dry to report on. Often times a vendor prefixed feature simply becomes a standards feature. Other times we swap an ms prefixed property for a webkit prefixed one. These aren't technically deprecated, but there is a change.

You may also wonder, wow, great start, when do the others come off and will they ever? That is also a tough question. Right now, there are many useful features which are currently being pushed through the standards whose only public facing implementation is an ms prefixed API. For others, we are simply in the process of adapting the API to standards or some other more Interoperable behavior.

So where does that put us?

Windows Preview Build 10074

Figure 1: MS Prefixes Categorized
Well, our current work puts us at around 140 and with another 10 removed in later builds that gets us down to 130. A lot of the remaining stuff is pretty important to the platform and much of it is already being talked about for standardization as well.

From the quick pivot on the right you'll see that the majority of our APIs fall under Windows 8 Manipulations. This is mostly the work on snap-points and other functionality to deliver great touch first experiences. You can lump Gestures under that as well, where we provided a constructable gesture manager that does all of the math for you in delivering the Windows 8+ Touch Personality.

Just below that you'll find Encrypted Media Extensions which are also being pushed through standards. Further down the list are various CSS specifications, some of which are CSS Level 3 and others CSS Level 4, but none-the-less places where the IE platform has pushed the envelope a bit to deliver some really cool features.

Future Improvements

Well, you can look forward to 10 more removals in future flights. But as you peruse the categories you'll find that it is harder and harder to remove what we have until the standards land and we can simply remove the prefixes from the remaining APIs.

There are probably a few more APIs that could be removed, but the impact on the web of keeping versus removing them likely won't be very high. They are low usage, low impact APIs.

Most importantly though, I would look forward to hearing from you guys. Are there MS APIs that we have still available that you'd like to see be standards in other browsers? Are there MS APIs that people are using that are somehow causing you pain? Feel free to leave comments or have a discussion with me @JustRogDigiTec on Twitter.

Here is a Full API Listing from the Windows Insider Build 10074

Feature Areas API Count
Windows 8 Manipulations 38
MS_MANIPULATION_STATE_ACTIVE 1
MS_MANIPULATION_STATE_CANCELLED 1
MS_MANIPULATION_STATE_COMMITTED 1
MS_MANIPULATION_STATE_DRAGGING 1
MS_MANIPULATION_STATE_INERTIA 1
MS_MANIPULATION_STATE_PRESELECT 1
MS_MANIPULATION_STATE_SELECTING 1
MS_MANIPULATION_STATE_STOPPED 1
msContentZoomChaining 1
msContentZoomFactor 1
msContentZooming 1
msContentZoomLimit 1
msContentZoomLimitMax 1
msContentZoomLimitMin 1
msContentZoomSnap 1
msContentZoomSnapPoints 1
msContentZoomSnapType 1
MSManipulationEvent 1
msManipulationViewsEnabled 1
msScrollChaining 1
msScrollLimit 1
msScrollLimitXMax 1
msScrollLimitXMin 1
msScrollLimitYMax 1
msScrollLimitYMin 1
msScrollRails 1
msScrollSnapPointsX 1
msScrollSnapPointsY 1
msScrollSnapType 1
msScrollSnapX 1
msScrollSnapY 1
msScrollTranslation 1
msTouchSelect 1
msZoom 1
msZoomTo 1
onmscontentzoom 1
onmsinertiastart 1
onmsmanipulationstatechanged 1
Encrypted Media Extensions 18
MS_MEDIA_ERR_ENCRYPTED 1
MS_MEDIA_KEYERR_CLIENT 1
MS_MEDIA_KEYERR_DOMAIN 1
MS_MEDIA_KEYERR_HARDWARECHANGE 1
MS_MEDIA_KEYERR_OUTPUT 1
MS_MEDIA_KEYERR_SERVICE 1
MS_MEDIA_KEYERR_UNKNOWN 1
MSGraphicsTrust 1
msGraphicsTrustStatus 1
msKeys 1
msKeySystem 1
MSMediaKeyError 1
MSMediaKeyMessageEvent 1
MSMediaKeyNeededEvent 1
MSMediaKeys 1
MSMediaKeySession 1
msSetMediaKeys 1
onmsneedkey 1
IE Platform Extensions 16
msCapsLockWarningOff 1
msClose 1
msConvertURL 1
msElementsFromPoint 1
msElementsFromRect 1
msExtendedCode 1
msGetUntransformedBounds 1
msHighContrastAdjust 1
msLaunchUri 1
msOverflowStyle 1
msPlayToDisabled 1
msPlayToPreferredSourceUri 1
msPlayToPrimary 1
MSStream 1
MSStreamReader 1
msWriteProfilerMark 1
Gestures 13
MSGesture 1
MSGESTURE_FLAG_BEGIN 1
MSGESTURE_FLAG_CANCEL 1
MSGESTURE_FLAG_END 1
MSGESTURE_FLAG_INERTIA 1
MSGESTURE_FLAG_NONE 1
MSGestureEvent 1
onmsgesturechange 1
onmsgesturedoubletap 1
onmsgestureend 1
onmsgesturehold 1
onmsgesturestart 1
onmsgesturetap 1
Removed 10
msAnimationStartTime 1
msCancelRequestAnimationFrame 1
msClearImmediate 1
MSCSSMatrix 1
msHidden 1
msIndexedDB 1
msMatchMedia 1
msRequestAnimationFrame 1
msSetImmediate 1
msVisibilityState 1
CSS Grid 8
msGridColumn 1
msGridColumnAlign 1
msGridColumns 1
msGridColumnSpan 1
msGridRow 1
msGridRowAlign 1
msGridRows 1
msGridRowSpan 1
CSS Regions 5
msFlowFrom 1
msFlowInto 1
msGetRegionContent 1
MSRangeCollection 1
msRegionOverflow 1
Screen Orientation 4
msLockOrientation 1
msOrientation 1
msUnlockOrientation 1
onmsorientationchange 1
CSS3/4 Text Hyphenation 4
msHyphenateLimitChars 1
msHyphenateLimitLines 1
msHyphenateLimitZone 1
msHyphens 1
Browser Extensions 3
MSSiteModeEvent 1
onmssitemodejumplistitemremoved 1
onmsthumbnailclick 1
CSS Exclusions 3
msWrapFlow 1
msWrapMargin 1
msWrapThrough 1
IME 3
msGetInputContext 1
msImeAlign 1
MSInputMethodContext 1
Canvas Extensions 2
msFillRule 1
msImageSmoothingEnabled 1
XHR Extensions 2
msCaching 1
msCachingEnabled 1
File Writer API 2
msSaveBlob 1
msSaveOrOpenBlob 1
CSS Mobile Text Size Adjustment 1
msTextSizeAdjust 1
Vendor Prefixed 1
msFontFeatureSettings 1
File API 1
msToBlob 1
Performance Data Extensions 1
msFirstPaint 1
Vendor Standard 1
msUserSelect 1
Blob 1
MSBlobBuilder 1
CSS Writing Modes 1
msTextCombineHorizontal 1
Futures 1
msCSSOMElementFloatMetrics 1
Selectors API 2 1
msMatchesSelector 1
Grand Total 140

No comments:

Post a Comment