Over in GuiMachineLanguage, a debate rages about whether the existing trend of using the HtmlStack can scale sufficiently to provide rich GUI's over HTTP; that is CrudScreen-friendly GUI's that can emulate desktop GUI conventions. "HTML stack" is generally considered to be HtmlDomJsCss-based solutions, such as AjAx. This topic is an attempt to better organize the debate in an outline format. '''Working Abbreviations and Terms''' * HTML++ - Nickname for the "HTML stack", namely HtmlDomJsCss and/or AjAx. * Rich-GUI - A GUI kit/system that can emulate common desktop behavior and widgets. Some believe it cannot do the job because of one or more of the following reasons: * MicroSoft will sabotage the effort using its "usual tricks" because it would cut into sales of its desktop-centric products. More on this below. * JavaScript makes for a poor SystemsSoftware programming language in which to build GUI primitives. * There's too many brands and versions of browsers to have reliable DOM/JavaScript behavior. * The size of a sufficient widget code (usually JavaScript) is too large to be practical. Common UI behavior should be built into the browser. * CSS is a different language than markup (HTML/XML), creating confusion and increasing the learning curve. See BradyBunchGridDiscussion for a possible alternative. * JavaScript and AjAx have cross-site XMLHttpRequest limitations in order to close security holes, and these limitations forbid some of the richer Applications. Similarly, HTTP has limitations that make real-time updates a challenge. * HTML and JavaScript remains unsuitable for certain graphics-intensive operations that keep many applications rooted to the desktop (GoogleEarth being one example among many). * Culture-Clash - Web standards/conventions flow against many desktop features (See WebBrowserMissingWidgetWorkArounds for some examples) * No wide-spread "base" tool has ever been built primarily out of a scripting language. JavaScript was not designed for SystemsSoftware. Thus, we are entering unexplored territory. ** What, exactly, do you mean by "base tool"? ** ''SystemsSoftware'' - Tools used by application developers, not built by application developers for specific domains (although I agree there's an overlap). ** In that case, you are incorrect to say that no wide-spread SystemsSoftware has ever been built primarily out of a scripting language. Consider RubyOnRails, for example. ** ''ROR is borderline. I've made my own CRUD web frameworks out of scripting languages also, but I'd hardly call them SystemsSoftware. ROR is just like such a thing that caught on to others. And I hear ROR is hype-crap for anti-SQL OO fanboys, difficult to install/configure on servers, and rather slow. There's also things like SwitchBoard framework. Plus, we wouldn't need self-rolled such things if the tools better fit the domain (CRUD).'' ** There are many instances of SystemsSoftware written in scripting languages (some have already been named in this and related topics, such as Pyjamas and Flapjax, the extjs libs) and other projects mentioned recently on WikiWiki (e.g. OpenCroquet - 3D collaboration in SmalltalkLanguage), but the 'widespread' criterion is actually rare among any software (including SystemsSoftware) developed in any language. In any case, there is much precedent for SystemsSoftware to be developed in scripting languages so long as it is either not performance-critical, or the JustInTimeCompilation and GarbageCollection have reached a level where performance is acceptable. JIT performance for JavaScript is very impressive in the V8 and S''''''piderMonkey implementations. Even before the relatively recent improvement of JITs, there is even longer precedent of building SystemsSoftware in scripting languages (like Perl or Python) then using a 'hard' language to optimize inner loops (e.g. a matrix multiply function). I think you are in error to say this is 'unexplored territory'. ** ''Common DBMS, OS's, network management, and GUI engines are not written in scripting languages. I've never heard of OpenCroquet. It's a tiny niche product. Further, the growth of netbooks and smart-phones is putting pressure to have small and fast rendering/GUI engines. It's difficult to get this from scripting languages. Possible if the industry tries hard enough perhaps, but it's '''yet another hurdle'''. While it may be possible to get scripting languages to work on such devices, it's obviously far from the ideal tool for it. C/C++ compilers are carefully optimized for such and would be a much better choice.'' ** Merely having limited distribution does not mean you should dismiss ideas as 'tiny, niche products' (but since you believe it does, you should be consistent by throwing away your own original ideas on the same basis). Also, I agree that better support for smart-phones and such does benefit from smaller, faster rendering/GUI engines... but that is not a hard 'limit' of the HTML stack, and there are dedicated HTML rendering engines for phones. More a problem is adapting the display and UI for phones, which is related to the sort of display 'transforms' associated with accessibility and CSS. ** ''It's not about "hard limits", it's the shear multitude and quantity of hurdles. People have to throw ugliness at ugliness to force it to work. And HTML rendering is not sufficient for many web-sites. They'll want the "++" also. (Fold-able screens are in the lab now such that someday not too far off people will have a wallet-like device that has an unfold-able screen to get like 10 inches of width.)'' ** Well, I agree that we should be avoiding hurdles. Indeed, any proposed replacement for HTML should make a big list of existing hurdles and solve as many as possible. ** ''Including reducing the acceptance hurdle caused by loading it with too many unfamiliar technologies and stuff not related to the stated goal. They want better HTTP-able GUI tools, not Xanadu Emacs 2.0. Needless to say, you and I put very different weights on the feature wish-list and I doubt that will ever change.'' ** [You're speaking only for yourself. Yours is not a view representative of practitioners as a whole, whom in my experience -- and especially among Web developers -- seek the most powerful tools they can get. It is both presumptuous and illogical to assume your limitations are found in the majority of others in your profession.] ** ''Hold on, Tex, why is your assessment of what developers want assumed to override mine? I'm willing to LetTheReaderDecide at this stage. If they agree with your priority rankings, then they can accept your conclusions, and vise verse. I don't trust you with summary assessments. You two have proven too biased and stubborn.'' ** [We both know you're speaking entirely for yourself. Why continue to pretend otherwise?] ** ''You mean "the reader" or "biased and stubborn"? Never mind. I don't want your answer. I'm 99.99999% sure it involves me being bad, lazy, stupid, or evil. Developers spend far more time futzin' with and repairing GUI/UI technology these days for web than they did for desktops in the heyday of desktop GUI's (accept for DLL conflicts). Something very useful and productive got lost over the years. Sure, micro-managing GUI's is good job security, but I don't want to waste time fixing scroll-bars and emulating combo-boxes with 1000 lines of JavaScript, I want to spend it on making tools that help business users be productive. I want to paint pictures, not build canvases and brushes. They used to be commodities.'' * Hedges can be good - In case HTML++ fails, it's good to have alternatives in the near background. ** That said, there are plenty of alternatives in the background without need to invent more... ** ''Example? I see very few that seem to "care" about business-oriented CrudScreen''''''s. Most seem to want to be the next HTML, and target yet more eBrochures. -t'' ** MicrosoftSilverlight, Flash, portable Java application, X11, XUL, OpenGl+SimpleDirectmediaLayer, VisualBasic, etc. And what they "target" is irrelevant; only of what they are "capable" matters. ** ''These are proprietary, and/or poor, not focused on CRUD, too similar to HTML++ to serve as a good hedge, etc. '' ** (1) Proprietary is irrelevant because it is not a contradiction to 'Rich GUI', and is not a "scaling" issue. (2) "Not focused on CRUD" is irrelevant because, as noted, '''what they "target" is irrelevant; only of what they are "capable" matters.''' (3) "Too similar to HTML++ to serve as a good hedge" seems to lack argument and evidence: you need to explain two things (a) how the above are too similar to HTML++, (b) how things similar to HTML++ cannot serve as a good hedge. ** ''I've excluded proprietary tools for reasons already stated near the topic intro. True, proprietary tools are a hedge against the failure of OSS ones, but that does not exclude the need for an OSS hedge. A rough analogy would be saying that a motorcycle is a hedge against a failing car. While this is true, a different vehicle that is still a car would be a more comparable hedge to the original car. Cars have features that motorcycles don't.'' ** Huh? Which 'features' does the OSS 'car' have that the Proprietary 'motorcycle' does not, merely by virtue of being OpenSource? ** ''Yes. Being OSS is important enough that it deserves a hedge option also. After all, few would bother to use HTML++ CRUD-oriented widgets/kits if merely being CRUD-friendly was the primary goal. Anyhow, I'm focusing on OSS solutions here. If you want to compare others, be my guest, but I may not participate.'' * They've been trying to get rich GUI's from HTML++ since the late 90's and progress has been very slow (except in areas like GoogleMaps, which are not CRUD). This is yet another yellow alert suggesting it's the wrong path. * DiscontinuitySpike or forced dichotomy exists between browser windows and CSS panels. A browser window gives one automatic features, but less control than a CSS panel. Some counter-beliefs include: * Existing web-page conventions are good enough, and there's way to re-work interface to not need desktop conventions. * HTML and DOM continue to improve in ways critical to supporting rich Internet applications. Modern support for , for floating elements including