6

I had the opportunity to develop applications in several niches:
server back-end, desktop clients, and recently a small scale website.

Once indulged in the website design I am asking myself and you
how come the UI design process is so different? Can you point out the differences, and why they originated?

Once, HTML was for marking up text and desktop GUI was the front-end for doing the real job, but today, why the GUI development process is still so different?

Here are some for a start:

Desktop: Use of explicit layout. (ex: StackPanel in WPF, BorderLayout in Swing)
Web: Layout is a set of CSS properties (ex: height/width, margin/padding, float, display..) that are given to each container like element.

Desktop: Isolation of GUI components to OO classes, easy reuse.
Web: Components are not reused in html level, they may be reused in dynamic server-side html generation. Only CSS styles may be reused.

Can you name a few more? and why? Why can't they be similar?

Side note: I have some experience with GWT, it creates a client application that runs in the browser, but why can't I make a webpage (like a blog page) with desktop UI design methods and tools?

4
  • May I ask how is isolation of GUI components to OO classes easier then webpages?
    – Steven
    Commented Dec 10, 2011 at 20:41
  • I can develop one GUI control at a time, in separation and isolation of the rest, including children and parents of the said control. I abstract away the relationships with proper visibility modifiers, I do not worry about overall layout, just for the layout of the isolated component. However, webpages have taken a step in the right direction in isolating style from content, yet css files have a tendency to turn into a disorganized mess.
    – Paul
    Commented Dec 10, 2011 at 20:51
  • Hmm - a StackPanel is not an explicit layout element. It grows itself to fit the required content within the confines of the container it's in.
    – ChrisF
    Commented Dec 10, 2011 at 21:13
  • "Components are not reused in html level" - They can be, if the site is well-designed. We have tons of "widgets" that are re-used across pages that need the same type of functionality, using the Django framework, and I'm working on doing something similar in PHP on my own site.
    – Izkata
    Commented Dec 11, 2011 at 2:21

2 Answers 2

6

Different historical background that now are unifying

I must say the reason is the historical background. Web pages was simple text documents at the beginning, with forms. Then more and more functionallity was added with scripting (JavaScript) and separation of semantics (HTML) and design (CSS).

GUI applications has always been applications with "functionality" as highest priority in contrast to pages with information. Then GUI programs got colors and more design elements to improve the usability and now web applications.

Web design and GUI applications had different strengths that now are unifying into web applications.

Web Design:

  1. Pages with information (lack of programmatic functionality)
  2. Scripting added and separation of semantic elements (HTML) and design (CSS)
  3. Web applications (HTML5 with more form elements, canvas element and web sockets) (side by side with pages with information)

GUI Design:

  1. Black and White applications
  2. Colors and more design elements added
  3. Web applications (HTML5) with easier deployment (no installation) in a networked world.

Todays user interface frameworks

Today with WPF, Android, JavaFX the layout is done similar to as in HTML-files with an XML-document. CSS or similar theme-files may be used for styling. Click-Once and Java Webstart may be used for deployment.

At the same time, web applications use Unobtrusive JavaScript to keep the HTML-document clean from programming code. And more features that only was available in the GUI-world is introduced on the web with HTML5.

So the design process once was very different, but now is getting more and more similar. Microsoft tried with ASP.NET to make web sites in the same way as GUI applications have been done historically. And with WPF and Silverlight they tried again, to do web applications and GUI applications the same way and used the same program (Expression Blend) for both in the design proces.

Adobe Air, Adobe Flex tried also to have the same design process. And now a few frameworks for Smartphones tries to do Smartphone-apps the same way as web applications are done, see Titanium and PhoneGap.

In the end, the reason to why I think web applications will win, is that almost all interesting applications are network applications (client-server) and Mobile code is the easiest way to do and deploy network applications and at the same time be Cross-platform.

2

HTML started out as a way to present documents. The early web was nothing but a great big filing cabinet with a ton of references (hyperlinks). Gradually structured data and interactivity was added, but the core philosophy remains that of the document. You GET a document or a list of documents in a folder, you POST changes to it, you DELETE it if you don't need it, and you PUT a new document in a folder. That's what RESTful API's are about: the document IS the app. The model is one of encapsulation of data into documents.

Desktop platforms by contrast have an application-centric philosophy. At the heart is not the document, but the behavior. The app pulls in documents, processes them, and pushes them back out. The app is not the document. The focus is on the behavior that operates on the document. The OS vendors delivered API's that encourage you to build apps out of standardized widgets. Since the model is about apps and widgets, the philosophy became one of encapsulation of behavior.

The difference of philosophy at this point is an artifact of history, entrenched by inertia. Neither philosophy is more right in general, the truth is somewhere in the middle. I think the web still has a lot to learn from desktop apps, and vice versa. Web apps still have lousy interactivity, while desktop apps still won't let you think of documents first.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.