499 karma · joined May 25, 2007
It's important to distinguish the Internet from the collection of web technologies. The Internet is the thing that needs to remain open and uncontrolled.
http://msdn.microsoft.com/en-us/library/ms531385(v=vs.85).as...
I've been trying to duplicate native scrolling in iOS recently and I'm getting killed by details that the specifications don't cover and WebKit authors don't document. For example, tons of trial and error uncovered the fact that CSS keyframes animations are unusable for elements wider than 1024 pixels, due likely to OpenGL issues on iOS. If the W3C and WebKit had any clue how developers would actually use the stuff they design, they would have made this fact clear by at least providing a way to query the optimal texture size used under the covers.
Over and over you find little examples like this which demonstrate that the web's "leadership" is completely disconnected from reality on the ground.
Lots of good things coming to the platform now, but progress was even faster in the mid-90's when Netscape and IE were growing up. IE4 and IE5 in particular had a lot of great features that have since been forgotten, and are only now being reconsidered for standardization. Remember behaviors, image filters, CSS expressions, and data binding?
I was trying to convey that the web is always going to have to fight for its survival, contrary to the common assumption that the web has some magical properties that ensure its long-term prominence.
https://github.com/joehewitt/markdom
It's used on http://uponahill.com to extract Flickr urls so I can query the Flickr API and get complete metadata about each photo. My gf, who does most of the writing/photography on the site, has found writing in Markdown and copy/pasting Flickr urls a pretty frictionless experience compared to the Wordpress CMS.
Anyway, the current code is trying to replicate the feel of iOS scrolling. An Android implementation should try to replicate the feel of Android scrolling, which is much different. I will get around to it...
Even if they do, libraries like these may still be necessary for more advanced scrolling mechanisms like those that snap to page boundaries or involve scrolling/zooming hybrids (like photo viewers common to many apps).
Chrome was initially a completely fork of Webkit, but Google eventually chose to work with Apple and merge all of their changes to the Webkit trunk. This was only possible because Webkit, unlike Android, allows outsiders to commit.
The costs of maintaining a fork of a project as large as Webkit (or Android) are so huge, even Google didn't want to bear them for long. The benefits of the merge are huge for all users. Not only does Chrome continue to get Apple's changes downstream, like CSS transforms, but Safari gets Google's changes, like web sockets. In Android today, this sort of collaboration would be impossible.
I've found other places in the Android SDK when, rather than simply using callbacks to encapsulate asynchronous work, I'm required to deal with the threads myself (see GLSurfaceView). You can accuse me of being "confused and ignorant" but I feel I am making a valid critique of the API design.
Overall, the goal is to make implementing a browser a much simpler and direct process, and to defer as much complexity as possible to libraries which can be easily downloaded and updated. This would not only result in more a heterogeneous ecosystem for web developers, but fewer browser bugs and incompatibilities.
The primary benefit of this would be that high-level languages like HTML would be implemented on top of the VM, and would no longer be hard-coded into the browser. This would allow you to, for instance, link to the latest version of the HTML runtime the same way you would link to the latest jQuery. This would mean that we would no longer have to wait for the browser vendors and standards bodies to bring us cutting edge technologies. This would also mean that alternative UI toolkits and languages would play on the same level field as HTML and JavaScript.