I am currently writing an application for mathematical symbol recognition. The user writes a symbol (e.g. with the mouse or a touch interface) and gets the classification as LaTeX code.

The browser interface looks like this:

enter image description here

I also have a 'native' interface (done with Tk).

I can see some advantages of a browser interface:

  • Many people (including myself) know how to create / adjust HTML/CSS, but less know how to achieve similar results with Tk/GTK+/Qt
  • Writing the UI for the browser makes it possible to host the application and thus making it available for all kinds of devices / systems
  • Rendering LaTeX is easy with MathJax

Are there any advantages of a Tk/GTK+/Qt user interface over a browser interface or is this choice primarily done by the knowledge of the developer?

I am thinking of removing the Tk part and I would like to see if I should learn Tk/GTK+/Qt or rather focus on Web interfaces.

  • Are you asking a general question, or one about this specific application? – Bryan Oakley Dec 15 '14 at 21:29
  • I am asking a general question, but if you want to give some comments about my application, you're more than welcome to do so :-) – Martin Thoma Dec 15 '14 at 21:39
  • 1
    the browser doesn't belong to you so it can do whatever it wants when a user draws something (i.e. scroll, rotate, expand url input, draw, etc.) – DaveAlger Dec 15 '14 at 22:24
  • @Blam: I don't know what you mean with "thick", but browser vs native UI is certainly a UI question. Users behave different and have different expectations depending on what they are using. For example (the most obvious), most users would expect a native UI to work without problems, even if they don't have internet connection. But if they don't have a connection, they expect software running in the browser not to work (even if it is a local webserver). – Martin Thoma Dec 16 '14 at 8:07
  • @Blam: Do you think I would ask if I would be able to tell it from context? Can't you say it in a polite way? Availability has to do with UI, just as almost everything has. I explained the reasons before. What exactly didn't you understand there / with which point do you not agree? – Martin Thoma Dec 17 '14 at 9:29

Clearly your app (a cool idea, btw) is aimed at a specialized audience, which raises a key question:

In addition to the relatively limited/niche audience of *nix users in academia, do you also want it to be used by average high school/college students & teachers?

The other 98% of computer users have expectations for how a Mac/Windows/iOS/Android program or quality website should look and operate (Tk/GTK+ don't seem to meet those expectations, even among programmers who use them).

Considering just the UI and not the functionality tradeoffs of native vs. web applications, certain key benefits apply regardless of the platform:

  1. Familiar & approachable aesthetics help users feel "at home" and that your app belongs on their system.

  2. Consistent placement of menus/buttons/navigation following "native" design patterns means people find things where they expect to find them on their system.

  3. Much of the UI testing and polishing has been done for you. Following the standard patterns makes you less likely to encounter (though not immune to) usability & layout problems than if you try to design everything yourself from scratch.

The problem is, if nobody is familiar with the "native" UI components or design patterns in the first place, you lose all of those benefits. I would suggest that, given Linux is ~2% of all OS usage, there's no real benefit to locking yourself into a narrow audience and tiny niche (within another niche).

If you can create a better-looking & equally functional experience using a browser, why not? If you do decide to create native mobile/desktop applications, follow the design guidelines for those systems.

| improve this answer | |

There are many potential advantages of a native UI over a web app but they are getting fewer as web apps are gaining more functionality, and it comes down to a trade-off analysis. The biggest advantage is a more direct access to the OS, especially the file system. For example, it is problematic to store large amounts of data on the client side in a web application. Another one is unfettered access to graphics hardware. Applications that depend on finely granular timers also struggle when constrained by the browser.

In short, when your app needs more access to the OS than the browser API gives you then you benefit from a native UI. More often than not however, the benefits of a web UI outweigh other considerations.

In your particular case I know too little about the requirements of the application to say which is better.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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