Some (mostly) language-neutral GUI engines, although the language-neutrality is always within constraints: * MozillaXul + XpCom (Used by Mozilla and the Gecko rendering engine) * UNO (Used by OpenOffice.org) * COM/ActiveX (Used in many Microsoft products, famously in VB) * Avalon, once released? Accessible via any .NET language * XForms, while not really a "GUI engine" as I would use the term, seems to provide what Top is looking for on this page. * TIBCO General Interface (http://www.tibco.com/devnet/gi/default.jsp) EditHint: Merge or move this list to RemoteGuiProtocols? Plus, the list does not belong at the top in my opinion. ---- Desired features: * Language neutral - Easy to port API's and/or use markup with many different languages * HTTP-friendly - Usable over HTTP and reasonably latency-friendly, such as not requiring each key-stroke to travel both ways before a character appears, as found on HTML forms. * Minimal reliance on client-side scripting or execution, but still has such ability if desired. * Targets mostly business CrudScreen''''''s, since the existing standards are fairly good for e-brochures. ** Top clearly has an agenda. I'd want something good enough for distributed videogaming, so I could put everything from CrudScreen''''''s to full-blown map-based applications and tele & videoconferencing on it. I.e. an InteractiveSceneGraph language, and an associated browser. ** ''You have a video-gaming agenda.'' ** Incorrect. I have a "low-latency distributed-system updates plus 3D and audio and new input devices beyond the limited keyboard+mouse" agenda. This requires design towards optimization and caching support as well as some very flexible and mutable scenegraphs. It just happens that targeting distributed videogames gives me everything I want: any solution "good enough for distributed videogaming" will handle everything else by necessity. *** ''I disagree. Biz-friendly widgets are hard to get right. A gaming company wouldn't have any motivation to do them right. Making prettier explosions and sparkling blood is not going to help get a decent TableBrowser.'' *** I'm not asking a gaming ''company'' to create a ProgrammingLanguageNeutralGui and you aren't asking businesses to do it either - you've tossed the idea to the open community for a reason. And Biz-friendly widgets aren't especially difficult; video-gaming systems that provide interactive HeadsUpDisplay''''''s (meaning most of them) invent such things repeatedly. Such things are used for a variety of purposes, including inventory management and status summaries. There is much more to videogames than prettier explosions and sparkling blood. *** ''Anyhow, let's agree that we need better GUI and graphics standards for many different uses. Biz use is one of many.'' *** Certainly. ** ''Java applets should be good enough for teleconferencing because the interaction is limited once started.'' ** And Javascript+AJAX+HTML should be good enough for your CrudScreen''''''s. That doesn't make these into satisfactory solutions. ** ''So far they are not good enough. If they someday prove good enough, this may change.'' * Open standard * Include an event-handling vector language (nice to have, but not a requirement). This could also be used to add custom features not part of the standard widget set. Open Issues * What measurable benefits, if any, would 'programming language neutrality' presumably offer? * How is neutrality measured or qualified? What constraints on the GUI language is implied by 'programming language neutrality'? * Can it be done, or to what degree? * Compared to known alternatives, how do the alleged advantages of 'neutrality' stack up? Is it worth doing? * How likely would it be to have something like JavaScript and plugin-objects hacked in atop of it, thus defeating the 'neutrality' concept? How often would these be used? ** ''Please clarify "hacked in". Ideally, and orderly approach to interacting with app languages would be devised. If many feel a need to "hack" lots of back-door links and intrusions into the guts, it may be a symptom that some feature or interface is lacking.'' ** By 'hacked in' I mean that they aren't designed into the system in such a manner that they interact in an orderly manner with all elements processing the language (e.g. if javascript and plugins were "designed in", then CascadingStyleSheets would influence them, too). I agree that hacking in links is a symptom of missing features (MissingFeatureSmell). The question, though, is whether the "missing features" can be fixed in combination with 'declarative' and 'language neutral', or while maintaining a distinction between 'GUI language' and 'app language'. * Will it use API's or a markup language or an InteractiveSceneGraph language or something else? * How to handle CoordinateVersusNestedGui - Support both kinds? What about ZoomableUserInterface? * How to handle real-time updates ** ''such as how often or when to refresh?'' ** Polling is one option, but is a very inefficient option in terms of both performance cost (bandwidth, message counts) and final performance (latency between update and seeing it). That is, it is the most expensive and worst performing of the practical options. Subscriptions and events are a better choice for both performance cost and performance, but are more complex for implementation. Thus, the question is different than 'how often to refresh'; it really is 'how to handle real-time updates'. ** ''For most actions, a refresh is only needed when a button or menu is pressed (if designated to wait for it), which would probably be a typical POST transaction in HTTP. Polling may be sufficient for the rest of the cases. I envision that a given event, such as "on-click", is designated either "wait" or "no wait" at the client side. "Wait" means it waits for a response from the server (hour-glass) until it receives a response, which may contain a REFRESH command.'' ** I must strongly disagree. It would be far more ideal to be able to, say, see updates to WikiWiki and CRUD-screens and forums in real-time as other people interact with the resources each document represents. And that's even before we're working with more interactive GUIs. Are you imagining a world where the user is the major source of updates that are useful to observe? Sorry, but that world died shortly after the Internet was born. * How to handle enough separation of content and presentation to support non-standard output devices (e.g. small mobile phones, screen readers for the blind) and styles (some equivalent to CascadingStyleSheets). * How or if it can take advantages of particular app language features. (Similar lists are given below. This topic needs a refactoring.) ---- This page is mostly Top arguing with people again. ''I am just trying to collect ideas, definitions, etc. about the concept. I did not mean to start arguments. I find it an interesting topic to ponder. Many GUI's seem too tied to languages, and I wonder if that is an inherent need, or bad industry habit. If you don't find the topic interesting, then simply don't read it or contribute. Generally, arguments are a sign that the topic needs further exploring, clarification, etc. Whether you like my content style or not, you have to agree that the topic is an area left wide open so far. -- top'' It'd be nice if when you collected ideas and definitions you paid more than passing interest to what other people were saying, then. The topic is NOT an area left wide open - the way you phrased it and named it made it an oxymoron to begin with. The argument here was not one over the fundamentals of GUIs, but with you and your redefinition of/misuse of terms. There is no such thing as "Language neutral GUI engine". There is no such thing as a language neutral engine at all. Computers just don't work like that. You *must* have a common protocol for calling into each other, which *always* requires explicit support at both ends of the channel. Happily, there is a de facto standard calling convention, which is C. What you seem to want is a standardized GUI declarative language. This is fine if your needs are limited to the functionality provided by whoever designed your markup language. HTML is an excellent example - you can extend it via DHTML. But you can't implement DHTML in any language you want - you must implement it using one of the languages supported in the browser. And the browser must explicitly support and allow you to do so. This is not language neutrality! ''First off, I am not proposing (only) a markup language. The interaction would be an important part of it. Second, as described below, '''"language neutral" is probably not a Boolean concept, but that is not a reason to not try to reduce dependence.''' Nor do I think C bindings are necessarily the way to go, since one cannot easily bind across HTTP, for example. But if you can show it absolutely necessary, then we've learned something. By the way, which alleged definition are you bothered by? I do agree that we may need to create some working definitions to avoid confusion.'' You cannot have an interactive environment and still maintain anything resembling "language neutrality". What part of this is so hard to understand? Spend a few minutes thinking about ways to implement the concepts you're thinking of and you'll see what I'm talking about. By the way, it's pretty trivial to wrap C function calls in SOAP and tunnel them over HTTP. It can even be mostly automated. Of course, the same applies for pretty much any RPC wrapper. And, as a defacto standard, a C API is as close as you can get to "language neutrality". The term is still ridiculous, but I'll assume it means "accessible as easily as possible from the most languages". ''If you have specifics of how to do it right or proof that it cannot be done, then please present those specifics. Your criticisms are not specific enough for me to use or to change my responses with. I will happily fix my suggestions if you provide the proper details. I've been thinking about language-neutral HTTP-friendly GUI approaches since about 1996 and have mentally tested my ideas on the various projects I worked on since that time. True, that's not as good as a live test, but DontComplainWithoutAlternatives. The point is that I reject your claim that I've not thought about it carefully enough. You have yet to point out a *specific* flaw that is not fixable.'' -- top The *specific* flaw that is not fixable: the 'neutral' is impossible. Even mostly declarative 'markup' languages like HTML require considerable framework to be used from any given language or platform. Further, existing GUI languages have repeatedly proven to be insufficient for interactive designs - a fact that observed by examining the need for plugins, hacking in scripting languages, etc. An alternative: take the exact opposite approach. Create a rich language that supports mobilizing code to reduce latencies and improve interactivity and specialize caching to the domain. Instead of shunning rich language features because their implementation isn't friendly to a given language, accept that you'll be implementing and porting frameworks across the common platforms and languages. With the 'neutrality' constraint released, focus on LiberatingConstraint''''''s more useful to achieving rich user interfaces. Such constraints include capability security to allow rich mashups without loss of privacy, distributed transactions to allow composition of remote services without race-conditions, separation of content and presentation to support the handicapped, requiring ZoomableUserInterface with level-of-detail to reduce bandwidth consumed by objects not under immediate attention, demanding termination guarantees and confinement and type-safety for certain classes of operations in order to allow a variety of optimizations, and in general support minimal-latency real-time updates to observed objects as other users interact with them. The cost of this alternative is that it is ''slightly'' even more unfriendly to one-off implementations compared to, say, one-off HTML processor that neither reads nor introduces