Become a fan of Slashdot on Facebook

 



Forgot your password?
typodupeerror
×
News

Thin-Client Applicaton Architectures? 136

Rob writes "This is a pretty broad question, but I'm in the process of evaluating alternatives for thin-client application platforms, and could use some insight into what's likely to emerge as next-generation standards over the next few years." There's more meat to this question. Click below for more.

"Leaving aside the backend, the choices for the frontend seem to come down to:

  • HTML (and its possible successors)
  • Java
  • Plug-ins (or other types of browser-like 'universal client' modules)
Here are the problems I see with these choices:
  • HTML is not designed for building traditional data-entry applications, requires all kinds of nastiness to maintain application context, and is inefficient in terms of bandwidth.
  • Client-side Java isn't really thin enough by my definition. Run-of-the-mill application programmers shouldn't need to be writing GUI code at all (too damn complex). And then there is the (MS sponsored) murder of the portability promise.
  • Plug-ins work well, if you're willing to accept the initial download (and occasional updates), but as platforms proliferate, it's not practical to support them all. A Java-based plug-in might work if only the portable GUI promise were really true.
My conclusion (and please count to 10 before flaming):

What this world needs is a good, really smart, dumb terminal.

I've been at work on just such a thing for several years now, and while it's not general-purpose enough to fit the bill, the thing works great. It essentially distills down the N most frequently used GUI features and 'implements them for you'. A simple API on the server lets transaction-based apps talk to the terminal and maintain context easily.

Is it possible at this late stage for a new universal front end to emerge for building server-based applications? And become a standard? Do you think the open-source effect would help? Or am I nuts, and HTML/Java is all you need?"

This discussion has been archived. No new comments can be posted.

Thin-Client Applicaton Architectures?

Comments Filter:
  • Outside of some obvious markets like PDAs and appliances, why is there such emphasis on thin client? The computing power, network bandwidth, memory and so on are all rising pretty steeply. With technology like Java (only one of many such) that enables download of objects/classes as needed and competent end-nodes, who cares about thin-clients? What it seems to me is really needed is much more powerful peer-peer object communication and management. Too much thinking gets straight-jacketed into client vs. server.
  • JavaScript will beat Java [ideosphere.com] soon enough. For thin client stuff JavaScript is actually more powerful than Java [deja.com]. JavaScript's closest ancestor is CLOS [nightflight.com] or, if you prefer, Self [nightflight.com] while Java's closest ancestor is Objective-C [nightflight.com]. Programmers who prefer Perl5 [nightflight.com] or Python [nightflight.com] over Java should prefer JavaScript over Java -- especially if it is given an appropriate application framework, IDE and grammar-sensitive compression.

    As a first step, I have a grammar-sensitive JavaScript compressor which I'm releasing into open source. [come.to]

  • Given that you're looking for a forms based solution Java will be fine (although you probably should go with the plug-in). Swing DOES give you a nice cross-platform UI if the AWT proves to be unsatisfactory.

    It's VERY easy to write a generic forms engine which generates it's layout from the data definitions. Java's Reflection support makes this that much easier. I don't know if there's a 3rd party package to do this, but I've written my own on several occasions.
  • I agree. In my experience, Citrix is hands down the best thin-client solution, especially in mixed OS environments.

    Publishing aps to the web works well, and the java ica clients have worked flawlessly on our linux boxen. Running NT-centric accounting bloatware across ppp lines that run as fast as if they were on the lan. 20k MAX bandwidth. Sweet.
  • Do you remember RIP terms. they did some simple gui type stuff and were designed to work on 386 class machines and 1200 baud modems. I wonder where that technology is now and if it could be extended to work over TCP/IP.

    I think some sort of a universal client is sorely needed. Something stateful, something with a decent GUI, something easy to program, something that would work with any OS. Am I asking for too much or are we perpetually relegated to mixing HTML, Javascript, CF/ASP/PHP code together in files and hope to make something work.
  • Okay, I know CORBA is still everybody's dream baby. I started out thinking that it was glorified RPC. And now, after being well chastised and doing some research I realize that it is object oriented RPC. But it does have its purposes.

    Fortunately, we don't have to depend on CORBA for what you're talking about. Why not look into MOSIX [mosix.com] to see how this is going to be done? (btw, this funded by VALinux now...)

  • Give me HTML with CGI capabilities and some easy way to store state on the client (no more cookies please). Then give me a beefy server where I can script Perl for small things and Java or C[++] for big things and I'd be happy.


    GUIs are the bane of my existence!

  • . . .HTML/Java is all you need?"

    At the risk of over simplifying an answer . . .

    Yes

  • I think it's going to be an ugly hodgepodge of broken scripting languages, based on the huge number of ASP pages I'm seeing out there.

    Actually, Sun is doing a lot with Java by putting the "VM" in a chip (ergo not so V anymore), then running SSL out to the box in question. It still has a way to go, and the complexity of Java will push the average computer guy back to those nasty scripting languages...

    Plugins are out. The entire point to thin client is to stop distributing software to desktops!

    The way I'd like to see things go is Lotus Notes/Domino go OpenSource and with clients for anything. Granted it is slow and proprietary, but Exchange and GroupWise can't even approach the same functionality ballpark. Building your own out of Apache and a database is probably possible, but how mucch time would be spent reinventing that wheel?
  • by Bruce Perens ( 3872 ) <bruce@perens.com> on Tuesday October 26, 1999 @06:28PM (#1585151) Homepage Journal
    If you build it, they will come. :-)

    Put it out there in Open Source and see what happens. Build a trademark-based certification program so that it can remain Open Source and have strong standards at the same time.

    I agree with you that Java is fat. I'm not sure the "dumb terminal" is the right approach, though. Modern applications, for example word processors, need to do a lot of computation per event, and that is best done locally. I think Guido's use of Python, rather than Java, as a thin client language was a good approach and it's too bad it got buried in the Java hype. So, perhaps an Open Source lightweight widget kit plus an Open Source language would be better. But I'm not discounting your idea - it sounds like NAPLPS for the 2000s, but maybe the world needs a new NAPLPS.

    I'd rather have the Open Source world charting the course of think client development, too. Thanks

    Bruce

  • Isn't it ironic that the "thin client" of today is the monster machine of a year ago? Do you really just mean a "not-so-top-of-the-line" closed box that the user can't mess with?
  • by burtonator ( 70115 ) on Tuesday October 26, 1999 @06:33PM (#1585153)
    Check out Apache JetSpeed (http://java.apache.org/jetspeed)

    It is a thin client (HTML 4.0, JavaScript/DHTML, and DOM) that is a Groupware/Portal application.

    I think it has what you are looking for and solves all your problems. It doesn't use Java on the frontend but solves the rich-client problem by using DHTML.

    Kevin
  • Applix Anyware has a java powered thin client that is smart enought to run dialog boxes, redraw widgets, and do other trivial things without going back to the server. This is exactly what X, not to mention http/html, is missing. Sure would be useful for better freemail clients, among other things.
  • How about a server with /usr and all the other good directories exported via NFS? Maybe you could even have a directory for each client that has the specifics for that machine.

    That way, all you have to do is mount the directories and you have great functionality.

    This would make better use of your disk space, since it would be stored centrally, an only part of the boxen would be using disk space at a time.

    However, for what the price of memory and processors go for nowadays, I prefer to have that stuff on the client boxen and not on the server, like I understand is the current trend.

    Or is this a semi-thin client?

  • by Dacta ( 24628 ) on Tuesday October 26, 1999 @06:40PM (#1585156)

    I'm not sure what you want to be answered. Is there room in the market for a thin client application tool? Yes. (IMHO)

    If you want my thoughts on current options, read on.

    You seem to have decided on the idea of using a browser as a thin client. Is this just an assumption, or is there a good reason for it?

    If you want (can) get away from the browser, there are plenty of "thin" client solutions - the question is, how thin do you want it?

    Low Bandwidth X (LBX) is a possibility (and is even thinner than HTML), and then there are plenty of non-Standard application generator tools that will do something similar (Under windows, Delphi, VB, Powerbuilder, Oracle Forms), but the "Thin" client for these is "thicker" than HTML or X

    Depending on your application, (please, no flames) ActiveX Forms may be suitable, but you seem to not want to go with Java, so I guess the same problems apply with Active X

    XML based applications have a lot (as in - I think up new ideas every day) of potential. IE5 does some pretty cool stuff at the moment with XML, and the Mozilla GUI is "written" in XML.

    My "Big Idea" (TM) at the moment (I should try for funding *S*) is to write a universal thin client that would use the libGLADE to build a GUI from a XML file delivered by HTTP. The button presses etc would be passed via the thin client framework to event handling code on the server using either CORBA or (my personal favourites) XML-RPC or SOAP

    Anyway, there you go. If anyone decides to try coding it, please let me know - I might actually get around to doing some myself. *S*

  • HTML & Java can't do the job. What's more, the typical client/server app would cost 5 times more in HTML & Java than with a typical client/server tool.

    Java is a transitional technology that will exist long enough for us the discover why we shouldn't use it, and then disappear, and be replaced by something that works much better.

    The revolution of the Internet is not HTML, is not Java, is not XML, or any other misguided and overhyped buzzword. The revolution of the Internet is the connectivity itself that is on its way to become ubiquitous. Everyone can potentially reach anyone, in almost real time. The ways in which we use this connectivity will change and gradually improve over time.

    One thing is for sure, the next breakthrough of the size of HTML/http will not come from Microsoft of from Sun. Very simply, because of the way Microsoft and Sun make money, ubiquitous connectivity is a threat to them. If everyone can communicate with anyone else, what would we need them for? The sole reason for existence of Microsoft and Sun is to make sure that we cannot communicate properly without using their products. Their goal is to stand between you and the rest of the world. That's why they will continue to either try to control or else try to destroy the internet.

    The next breakthrough will come again from some humble individual or group of individuals like Tim Berners-Lee, who will propose a solution so good that it will take the world by storm again.
  • This perl versus java thing confuses me. It seems that there are people who truly believe they can do anything with perl.

    Perl is a scripting language, Java is a system programming language. Mind experiment: implement java in perl, now implement perl in java which of those two programs do you want to maintain?
  • by Anonymous Coward
    There is a nice solution that exists now... Java Servlets...

    I am suprised that no one else has mentioned them yet...(maybe I missed someone's comments!..forgive me if I did)

    I gather that your goal is to support thin Clients using a simple, common architecture...

    Java Servlets combined with HTML/JavaScript and JSP(Java Server Pages) and JSSI(Java Server Side Includes) provide a large amount of power and flexibilty and in my opinion, achieve excellent thin-client support rather nicely.

    Further, Servlets are specifically designed to support HTML and the Thin-Client paradigm.

    After writing C/C++ CGI database apps, dabbling in Perl with CGI, using Oracle's app server solution, and writing Applets(I detest applets...), I decided that Servlets are SOOOO much better than any other solution.

    There are many implementations(Open Source too!) of the Servlet architecture including my favorite: Apache JServ [apache.org]

    To give an idea of the capabilities, I have written servlets which allow password/account maintenance in databases, an entire travel agency system, and even a servlet which acts as a fully-enabled SQL client.

    One of these days I'll write that telnet servlet...(hehe) I don't remember the location, but somewhere I saw a survey which showed that over 40% of all new Java applications were based on servlets.

    Since Java XML intergration/interaction is increasing rapidly, I suspect that Servlets will gain an even larger part of web computing as XML becomes more widely used and accepted.

    Im my opinion, Sun should have been pushing Java for the server long ago...and they should stop shoving Linux aside and accept it as the future.

    In any case, check out Java Servlets. I don't think you will be disappointed.

    Christopher Fitch

  • by Effugas ( 2378 ) on Tuesday October 26, 1999 @10:34PM (#1585163) Homepage
    A curious thing happened on my way to Freshmeat.

    Where the hell did Mindbright come from?

    Mindbright [mindbright.se], for those who don't know, makes the GPL'd Mindterm java applet. It's an incredible SSH client written in 100% Portable Java and has completely changed my perceptions of what a quality Java applet can do.

    Suddenly, I have a SSH client at any web browser I sit at. And it's fast, to boot.

    If that wasn't enough to impress me, MindVNC is a merge of their SSH classes and the GPL VNC Java client. (VNC is essentially a remote frame buffer--the display is rendered or copied into a virtual screen then sent over the network.) You authenticate against the ssh server that hosts the Java app, and you can VNC to any terminal the remote sshd can access--yes, this means you can connect to your bastion IP Masqing host, then VNC to some 10.* machine behind the firewall, all through a secure link.

    The relevance to the story is in simple and speedy deployment of tools--any and every machine with a Java VM can immediately and securely access both text and X based applications with minimal deployment pain. This exceedingly low pain for large scale client deployment via Java may actually benefit VNC in surprisingly powerful ways. Since the VNC system has been ported all over the place, from svgalib linux to windows, and as it poses an open source, well tested, very portable, and highly functional remote access platform, it may just end up becoming a formidable force as the years go on.

    Those who don't think projects should be allowed to fork--at all--need to see the amazing work that Mindbright's been allowed to do on the shoulders of the GPL. (The analogue to scientific development wasn't accidental.) More work is left to be done--the Mindterm client could use telnet support, and VNC could seriously use a "single app" mode that sizes the desktop to that exact size of the remote application, translating resizings on the client to resize attempts on the remote app.

    The seed of possibility is definitely there, though.

    Yours Truly,

    Dan Kaminsky
    DoxPara Research
    http://www.doxpara.com


  • I think he was referring to the server part. Yes the client does have one or two (!) minor (!) issues.
  • Yes, VNC kicks ass.

    No, I don't seriously write in Perl or Java, but...

    C is a systems programming language.

    sh is a scripting language (shell, yeah! What are you programming in? Shh.).

    Java is a Lisp interpreter with C++ syntax beaten with an ugly stick.

    Perl can be ugly, but it's at least optimized for a task.

    Conclusion? Write in C. Or assembler, if you can. Or anything but BASIC. :)
    ---
    pb Reply rather than vaguely moderate me.
  • Client-side Java isn't really thin ... true in a browser! A complete java desktop, cut loose from netscape or ie remains thin though, look to SevenMountains Software www.sevenmountains.com for a complete implementation of such a desktop, running on any platform with a decent vm, with a stunning performance. Client: 5 megs, browser included.
  • HTTP thin clients?!?

    What browser are you gonna use anyway? You know, you'll need quite a decent machine for most popular choices..

    Anyway - your usual Delphi app runs around any browser. Bad thing is that it's for Windoze only now.

    Really. The only reason for HTTP based apps are "cross-platformity". Thin? Nah, IMHO.

    And calling Java a thin client is a total joke.
  • http://www.uk.research.att.com/vnc/index.html What is VNC? - A practical introduction VNC stands for Virtual Network Computing. It is, in essence, a remote display system which allows you to view a computing 'desktop' environment not only on the machine where it is running, but from anywhere on the Internet and from a wide variety of machine architectures.
  • by GC ( 19160 )
    I have run Citrix's Metaframe Client for Linux to connect to Windows Terminal Server. It's pretty OK and works over a modem link quite satisfactoraly.

    However, for me, telnet is the ultimate thin client. It allows me to run ANY text mode program.
    • HTML is not designed for building traditional data-entry applications, requires all kinds of nastiness to maintain application context, and is inefficient in terms of bandwidth.

    Really, Forms aren't so bad. The issues of maintaining application context were solved years ago.

    They are well understood, there's an unbelievable number of tools and examples. Bandwidth use, while not entirely minimal, is not that bad, either.

    If your concern is presentation, just a little Javascript goes a long way here.

    If you are not concerned with presentation, you can actually do a lot with character-cell based forms over a telnet connection. It's a tough sell, but once your users are trained, they typically love the responsiveness and efficiency that can be had with a simple solution like this. Of course, these days, to run a character-cell based form typically means a PC, which is too thick for some.

    As others have said, maybe there is a market for a new dumb terminal standard. You might want to try and work out exactly what your ideal dumb terminal would have, but unless you can build commodity hardware, it would probably have to be implemented with HTML, XML, Java or some other plug-in.

  • Mind experiment: implement java in perl, now implement perl in java which of those two programs do you want to maintain?

    Neither, I'd rather use Python [python.org]!

  • About a year ago I was working for Tektronix in their thin client devision providing hardware and software support. Since then Tektronix have sold their thin client devision to NCD. I had the time to browse their website and I have found a possible hardware solution for you.

    The NCD range of network computers run an embeded OS called NCBridge. This software supports HTML sessions via a local Netscape v4.x browser, a local windows manager (Motif), X11 support and ICA support for Citrix sessions.

    The hardware used to be fantastic when Tektronix owned it and I can't really comment on NCD. But I can tell you that this hardware solution when coupled with a sensible server setup of maybe Citrix/NT-TSE and X hosts you could provide the end users with all of the requirements to access any solution you choose to develop for the server side.

    The NCD Network Computer model list [ncd.com]
    NCD Home Page [ncd.com]
  • Yes, it is. When I and a partner a time ago worked on a specification of how we would manage to implement a thin client philosofy on a company, we sticked to the concept of intranet aplications, maybe with a framework for that done in Java Servlets. I know there are some solutions for working with Java on thin clients, but even if I like Java, it's not thin enought to run on a thin client. But some web browsers are ( ex: DrWebSpyder from Caldera, wich run on a i386 and comes in a single floppy ), and can access server side logic with Servlets. Some classes can give you graphics on demand, PDF on demand and so on, and I also imagine these clients will run aplications that would consist in endless forms if done in other languages, so, HTML has all you need. I hope I have been of some help. You could check Caldera Website [caldera.com] and The JavaSoft Site [javasoft.com] for some more info.
  • > Run-of-the-mill application programmers shouldn't need to be writing GUI code at all (too damn complex).

    Things that spit out HTML are GUI code too. They're just writing to a constrained, high-level UI toolkit. The more client-side scripting you add the more you get back to the same old hard problems from traditional low-level AWT/Tk/whatever apps.

  • For me VNC is one of the possible ways (and currently the only practical) to get Linux/Unix Apps and Servers into all-Windows environments.

    Its pretty responsive over a lan, somehow usable over an ISDN line (transfering everything as bitmap has a price), and it gets your apps on to a Win-Desktop without disturbing it to much.

    While X is the more advanced protocol, all the X Clients for Windows i have seen so far are to complicated to configure, to invasive on the clients desktop and (last but obviously not least) far to expensive for a workstation ad-on.

    And with the integrated HTTP-Server and VNC-Client appelt you dont even have to install it on every client.

    Just install the Xvnc server with inetd-extensions applied, configure your (x)inetd - and you have you have your 'Personal Desktop Anywhere'

    Now, if it only knew about fonts ....
  • I'm kinda confused by the whole thin client thing.

    Its possible to buy desktop and laptop machines which have the equivalent of supercomputer processing power. Shortly it will be possible to purchase PDA's with the same amount of power.

    Some PDA's now available carry more processing power than a desktop machine I had 5 years ago.

    You can buy hard-drives with 22Gb of storage space for under $150.

    Browsers suck. You kind of think they're ok until you use a native app doing the same task. Something like IRC is a good case in point. Try using an HTML based IRC client followed by something like Yahoo Messenger (ok its not IRC but similar and is a really NODDY app). The difference is astounding.

    Here I am typing into this crummy little text box and marking HTML up by hand, when I could be using a decent HTML word processor. HTML sucks.

    And why the hell do people think that XML is some kind of saviour ? Its great as a comms protocol and for marking up data, but it doesn't do anything to solve the problem of creating a really usable UI.

    Why doesn't Java work ? Well Java apps are pretty thin if all your UI requirements are on the target machine. But this just doesn't happen. This is exacerbated by browsers not having proper java support as standard - might be slightly better if AOL/Sun get their collective asses into gear and ship the JDK on the AOL CDs.

    The thing is, you can say the same for any language. A Java prog. could in principle use just the same elements as the dear old browser, but it sucks doesn't it. It all boils down to Lowest Common Denominator(LCD). Its damn remarkable what people have done with HTML but it doesn't excuse us working with a prehistoric technology.

    I think part of the solution is to have a set of common UI controls defined using good old IDL to give language transparency. This would be coupled with a formal mechanism for embedding controls within one another (even if written in different languages). Troll software have gone someway towards this goal with their KOM proposal, and whilst I think the Qt kit is generally very good, it still falls short of the ideal UI toolkit.

    The next part of the solution is to define a framework within which the interaction experience can be customized. The original remit of Java and HotJava was to have a completely dynamic browser environment. One in which you could use just plain old HTML if that was all you wanted, but, you could also install extensions to the browser dynamically. Not in the wishy-washy way that applets do it, but true application extensions - things that actually remain installed instead of being loaded every time from the network.

    Couple this with proper versioning and a flexible security model (browser sandbox models were far too restrictive) and you start to have the makings of a good solution.

    Another part of the puzzle is to continue using some form of connectionless protocol between the client apps and the server - as this would appear to be the only truly scalable solution. There may of course be times when a permanent connection is suitable but those should be few and far between. The connectionless requirement is why the X-term solution doesn't really cut-it. You have to assume that your app may have 10000+ users at any one time.

    There has to a realisation that an application's logic should be distributable. That essentially means that you should be able to load balance by choosing either the server or the client for performing compute intensive task. In some cases server side only makes sense, in other client side etc.

    Finally, our portable UI toolkit would ideally be scalable, but in reality we have to notice that different form factors have totally different capabilities - and taking the LCD approach is just a cop-out. Classify the types of UI that are possible - Phone, PDA, Sub-Notebook, Desktop, Holodeck - and provide UI's appropriately for all of them. This is why a good decoupling of the UI from the core-logic is essential. Building the UI should be near trivial - but have you noticed how much logic actually goes into making UI's behave sensibly - this really is a fault of the toolkits we use.

    There's my tuppence halfpenny :-)
  • Although you accurately note that HTML is far from ideal, Java servlets can enter into the scene, and, say, take your an XML-defined GUI and map it to HTML on the fly for you. There are also several packages out there that will actually reconstruct the appropriate Java GUI complete with widgets for you in HTML. The servlet would maintain state I'm assuming.

    Full-blown Java app. Java does incur some overhead, but the portability really is there as long as you are not doing something really funky or attempting to make use of the latest whiz-bang features out of Sun. We deploy Java apps to a campus of over 30,000 people, which is also pretty heterogenous (Windows, Mac OS, Linux).

    As for plugins, I would trust them as far as I can throw the bloated browsers out there today. But take note of Mozilla. When it comes to fruition you will be able to write pluglets in /Java/, which is really nice, and may be able to solve a lot of your problems.

    Sun Ray...looks real spiffy...wish we could replace our public labs with them, instead of having, like, 40 computers per lab at @$1000 each plus maintainence costs and funky software distribution mechanisms.
  • In the commercial world the value, if any, of thin client is reduced deskside support, reduced helpdesk calls, reduced client rebuilds, reduced complexity. Since the real TCO is about 70% people costs and 15% software and 15% hardware the value of any thin client is directly related to the amount of people-time you save by not having to fix, manintain and manage your clients the same old expensive way. So for example you could use a diskless client that gets its boot code from the network and then whatever applications it needs. Or, you could burn the boot code and basic functions into nonvolatile storage and load the applications into the device on demand. Or you could go the Citrix way, boot the device from wherever and run the applications from a server. The client device could be essentially anything - even a full blown desktop that is in some way locked-down from being altered in any way except from central admin. The real value in any circumstance is the freedom to trash the client code, if any, rebuild it on the fly and/or snatch up the desktop device, throw it in the trash and replace it with another cheap device quickly and easily. Since PC's cost so little there is no value in worrying about the cost of the device vs. a thin client. Instead focus on the amount of time keeping the client device config'd and running correctly. The downside to all of this is that if your central admin encounters a problem or a piece of client code that doesn't work then many clients are effected at the same time. On the other hand fixing it once is x times the number of clients cheaper to recover from.
  • I use the Windows 2000 terminal server from at home at 26,000 bps and it screams. It has a faster response time than my host 233MHz NT 4.0 machine's own response time for UI (no big feat). The Win2K terminal server is based on Citrix.

    It this comes to Linux, this would be an excelent replacement for X11 over a modem which is slower than $#1+. It will be worth the ca$h.

  • Funny this question came up as I was considering asking something similar. I was wondering if perhaps we might consider looking at the problem from a different angle.

    There seems to be agreement in the fact that the bandwidth and connectivity is increasing and soon may be as ubiquitous as the dialtone. That's a good thing.

    A great deal of work is being done on web browsers to support more and more functionality. JavaScript, for examples, is an attempt to get programming in the browsers. Servlets are fine, but still constrained by the HTML widget set. Applets are problematic as Java support in browsers is problematic. And plugins are just plain problems.

    Some folks have mentioned VNC [att.com] as an alternative approach. Others mentioned X. How about a slightly different view.

    Java seems to perform very well (at least where I work) on server side applications. So long as there is no GUI, the systems run great. This makes sense, as Java gives the developers a consistent processor/OS to code to. For non GUI apps, this is possible because most all OS have the same basic functionality (i.e. memory management, file system access, networking, process control, etc). The real differentiator is the user interfaces. All work differently (except Telnet ;-) ).

    So, why not create a viewer that is consistent and applications are written to it? I know X is sorta there, but there are some problems with client side requirements and no session saving.

    What about building a browser that is nothing more than a canvas for paint commands and an event gatherer. Then, build graphics libraries for your favorite development tools (AWT.so, libx.so, Win32.DLL, etc) that use this viewer as the graphics context. Now we could run the applications anywhere.

    How does this affect browsers? Well, instead of adding more and more functionality and rendering capability into the browser (XML+XSL, JavaScript, VBScript, etc), the web servers become the rendering engines. Put all the rendering at the server and just send the paint commands to the viewer.

    This way users don't need to wait Until the browsers support what I need, or make different versions for different browsers. If new functionality is added to the server, then all users now see it.

    I'm thinking something like the GGI [ggi-project.org] project along with VNC (which there is a mapping to by the way), might get this type of project started.

    I note that ATT labs which owns VNC is using it in conjunction with CORBA. They don't want to release that as they don't want to support it. But imagine the possibilities.

    Sorry for the length of this post. Just thinking out loud.

  • Faster?

    The Citrix ICA protocol is remarkable... it compresses the screen changes so well that you can run applications very smoothly over a mere 56K line. VNC, while very flexible, is much more bandwidth-intensive, and feels pretty sluggish even over a T1. They say right on their web site that it was designed for high-bandwidth LANs.

    (VNC is highly portable and free, though. We have deployed it to every server and workstation to allow remote administration and help desk support.)
  • A while ago we wanted to move out "host based" (accessed via telnet) database applications to a windowed environment (because that is what the customers wanted).

    The key advantage of the telnet based solution was that there was only one copy of the executable on the host - even though it was being run from hundreds of desktops. This makes upgrades/admin a lot easier. So the problem was how to get this kind of model, but deliver the windowed environment.

    We looked at X, but running an X server on the desktops (PCs with Windows) was too expensive per seat

    We looked at HTML/http. No good for data base applications (field validation, field completion, lookups etc aren't easy with a page at time model, session management etc).

    We looked at Java. Too slow, immature and not really that "thin".

    Then we came across DSI [xvt.com]. This stands for Development Solution for the Internet. It is built on XVT's GUI portability kit. You create your application as normal. At run time, instead of calling the local graphical API, the GUI calls are routed across the network, then displayed using a "browser". So you get a Windowed application with a native look running on the client desktop - but the real application is running on the server. You only need a single "browser" (a bit like a telnet application) on the PC.

    It's taken quite a while to iron out performance issues etc, but we are now deploying some nice graphical applications which are as easy to manage as the old telnet style applications.

  • Actually I found a little bug in Netscapes POP Mail Client that causes my HP10.20/Motif to hang indefinitly requiring a reboot (not a plesent proposition around here).


    *The world looks a whole lot better through Rose Colored Glasses*
  • I think the best way is to make use of as much HTML as you can. While it may not be the most efficent, it is the most standardized of the 3. We have implemented our own language called PSX, a plug-in dll for most NT based web servers, and expect a linux port soon. We use it to generate HTML reports.
    HTML is competent for data entry... but might benefit for more tags to facilitate that. There are a slew of rules for displaying output, so much so that compliant browsers can serve as capable reporting tools, why not add standards to make data entry more flexible?
    I'm not a big fan of Java, and am definatly no expert, but it seems building even simple Java applications isn't easy. GUI elements seem testy and sluggish, ie slide bars not refreshing, scroll bars acting jumpy. And mostly, I see applets out there, not full java applications. From an end-user-ish point of view, it seems silly that we need to load something else once we've loaded our browser up.
    Check out PSX at www.primedata.org/psx.htm.. our language does a lot, but it doesn't do everything. We use it mostly for reporting systems for the financial sector. For reporting, it's great (we do some trade entry with it), for other things, it's no so great. Lots of development time goes into making your web browsers, might as well make use of them.
  • $1000 seems like alot...
    you can build a nice XTerminal with a thrown
    away PC. I have seen it work well with something
    as "Slow" as a SUN IPC and as "Fast" as a medium
    way Pentium (not II not III more like a Pentium
    120)

    I wrote up some Docs (which are sorely in need
    of update if I ever find a spare PC and some time
    to work on it) at
    http://people.delphi.com/sjc/linux/poor.html

    hmmm perhaps soon :)

    -Steve
  • The point was you said that when IE crashes, it takes down windows.
    That was incorrect - and I guess you took that from the idea that web integration means IE is in the kernel or something...anyway....certainly any app not written properly can take down windows, since win9x doesn't protect some vital areas of memory. I don't have this problem in NT (well W2K).
    IE overall - even on non NT systems - has given me less trouble than netscape.
  • For what it's worth I think the new chips for the PlayStation and Nintendo are going to have a serious impact. Couple that with the requirement for HDTV to have LOTS of fast RAM and you've got the makings of a smart, inexpensive "terminal".

    Then, the next step is to simply run whatever browser technology is current at the time. That gives the end user the option of using a Citrix type of remote desktop in the browser or simply using browser based apps. Of course then there is the unlimited addition of cartridges for games or business. Imagine a cartridge with hardware encription and a specific business application.

    Given the speed at which things change - whatever you code, better make it portable!
  • The answer lies in this: with great power comes great responsibility. Okay, something like that anyway.

    Thin clients fall into the niche where one needs a device to get work done with a minimal of fuss and tweaking. Today's PC, whether it is running Linux or Windoze or whatever, requires a lot of work to setup and keep running. Thin clients answer the bill by being as simple as possible while allowing meaningful work to be done.

  • Backend = java + XML
    Front = HTML + JavaServerPages + XML + IE/mozilla (if it ever gets past beta)

    We're putting this to use in an international application & so far things are smooth! One drawback is the sorry state of browsers re compliance to standards. Unfortunately, Netscrape just can't cut it for serious GUI development right now so the focus is on IE as the target interface. One advantage of thin client is a malleable look & feel to the interface. If you know yer way around CSS, with a couple stokes of the keyboard you can have a completely different look, or even a customizable interface.

  • "Conclusion? Write in C. Or assembler, if you can. Or anything but BASIC."

    Why not basic, it would suit you just fine judging from the rest of your post: ugly syntax, close to all those nice GPFs and blue screens and other interesting stuff you encounter when you descent to that level.

    Assembler is nice if you are exclusively interested in performance. C becomes an option if you care about other things too but performance is still very important. Then it gets interesting because there's a whole bunch of languages each with a different goal. Perl: ugly syntax, good for implementing something fast, performance is also nice but could be better. Java: clean syntax, also good for implementing something fast, performance could be better but can be adequate in some domains given good programmer skill.

    Conclusion c is for hardcore programmers who like to stay close to the hardware, perl is for people lacking programming skill who want to get the job done anyway and don't care about maintenance, Java is for people ranging from novice to hardcore programmers who like a powerfull language but also care about maintenance, scalability and platform independence.

    Conclusion, you should reconsider your conclusion. I don't want to say perl is bad. I must admit I have looked at to see if I could script JavaBeans with it. In my opinion scriptlanguages can be very good for glueing together components in a system. You should check out www.scriptics.com if you are interested in this sort of stuff. One of the persons there, John Ousterhout wrote some interesting stuff about the use of TCL/TK in combination with Java.
  • I've been trying to figure out just what is meant by a thin client. Is the case thin? Just what do people really mean?

    Processing power is so _cheap_ that there isn't really any point in skimping on that. The same is true of all components of a modern pc -- if you can get a servicable PC for $200-300, then what's the value of a handicapped terminal?

    The closest thing we have to a successful thin client is the Apple iMac. It's designed explicitly for networking, lacking any external storage options in its basic configuration. But it can do video editing, so it isn't really "thin".

    Then it hit me -- the thin client isn't the computer, it's the person using the computer. The main attractivness of having networked applications is not to do the computing over the network, but to do the installation/configuration/etc. over the network. It's to create a firewall between difficult techie issues and uninterested users.

    So the ideal thin client architecture is one in which all administration can be done remotely. One in which all the user has to do to install an ap is open a network folder and browse.

    btw, if one can code Java, then you can figure out the awt. Also, is HTML/XML really thin? Browsers are pretty sophisticated apps, just ask any would be Mozilla developer
  • Seconded - I do this stuff for a living and this is the solution that we are selling to our customers (we = IBM, I am a middleware consultant in the UK). Additional advantages to this technology in no particular order :

    1. Platform independance - these are standard APIs and will run with any Web Application Server, which will plug into any WebServer

    2. Coding is in Java which is currently cool - I won't bore you with the rest of the arguments for Java

    3. Architecturally it makes a lot of sense in that it splits tasks between those best suited for it - Servlets can be coded by Java Hackers, JSP can be coded by HTML guys as it is essentially a simple superset

    4. All the work is done server side, so your browser only sees HTML, meaning it doesn't have to support all the latest "standards"

    5. Servlets/JSP lead naturally into Enterprise Java Bean technology which is where you get all of your mission critical, scalable fault tolerant attributes from.

    I believe that this is the best way forward for thin client, and to put my money where my mouth is so to speak, I am writing a killer web app in my spare time based in this technology.

    If you want to try this stuff, as Chris says, you can download Apache JServ for servlets, and there is a GNU implementation of JSP - also you can download IBM's WebSphere which is cooly available for Linux. (www.software.ibm.com)

    Thats it for now ...
  • I was once involved with rolling out an application for worldwide deployment by a multinational company. Through that experience I learned that HTML with perhaps a Java front-end for doing field validation and such makes the most sense.

    This is not a bandwidth issue, but an issue with the "speed of light" and the long latency times to get packets around the world. (The situation I was involved with required servers in north america, while some of the offices were as far away as Hong Kong.)

    As much as I love Xwindows, this was totally unsuitable because much of the underlying chit-chat for the X protocol is "synchronous", meaning that the client will send requests to the X display server and wait (and wait) for it to respond before sending the next request. There can be hundreds of transactions like this just to bring up a simple window, meaning that it can take several minutes. Bandwidth was not the issue.

    Since the application was written using X, we also tried dxpc, lbx and other compression techniques. It improved, but not by much.

    The thing is, with that kind of latency, even telnet sessions are not very nice!

    We also tried various techniques of client/server, distributed database, VNC's, caching etc.

    What really works is some kind of an HTML front-end, which let's face it, is very much like the block mode 3270 terminals of yore with a bit of window dressing. This gives the users the perception of a responsive application most of the time, unlike the other solutions we tried.

    I'm not fond of Java as a general purpose language, and I certainly don't think there is any benefit to using it on the server side where performance is usually more of an issue, but on the client side to facilitate the front end of an application it does make sense.
  • *sigh* I wrote my post in English. Be glad I don't reply in line numbers.

    I don't like BASIC because it is generally slow and interpreted and weak. (i.e. not powerful, you shouldn't have to code around the language to do basic tasks) You should have gathered this from the content of my post.

    I'm interested in performance. C is good. Assembler is better for optimizing code, it's great if you can write that code for a couple of platforms, and include it in as needed, with substitute C code for other (unsupported as yet) platforms. MAME does this for some of its CPU cores.

    Perl and Java speed implementation and are therefore good for prototypes and hacks. However, if you know C, it's great for hacks, and actual implementations. And it's already really portable too. Some Java VM's might get faster at least, they're still maturing. Perl will probably get rewritten into C++ for maintainability, so we'll see if it gets slower or not.

    I'm not really saying that Perl or Java is outright bad, but for performance and real products that might need to run on, say, 486's with 8MB of RAM, they are obviously not the right choices IMO... (on a platform like that, I'd want the most speed possible!) And this is the platform that OSes like Linux like to claim to target. At least the GNU utils are coded well in C, but I remember when RedHat used Python for some of their control-panel tools, and it sucked...

    Glue languages are fine, that's what TCL was supposed to be for, and what a lot of people use Perl for (or some freaks who use Scheme :). I like to use shell for this too. It's slow, but the whole point of a glue language is that you shouldn't be using it enough for it to be slow. All the real work should be done by something fast, like... C.

    VNC does have a Java client. That's okay. Why? Because VNC is slow too, usually because of network bandwidth. Java is fine, provided you make sure that it's not the bottleneck. Use it on the WWW, when you're waiting for a slow site or a modem, say, and it doesn't look that slow anymore. ;)

    And I think I had a 'holy war disclaimer' at the beginning, but these are of course my opinions.
    ---
    pb Reply rather than vaguely moderate me.
  • One group of folks needs to write some XML/XSL/Java widgets once, then java servlet apps can use something like Apache's Cocoon to spit out DHTML/HTML/WML/VML/FooML: the best depth and markup for the particular client browser. The future is full of different kinds of clients, but you should only have to define new mappings, and you should do that using a high-level toolbox of XML structures and XSL translations. Anyone interested in building such an (Open Source) system? Anyone know of something similar already existing? If so, please mail me: jeremNywerneOr@ySahPooA.coMm
  • I agree that Java is fatter than is needed on a terminal, which is why I don't understand why you've gone from there to "do a lot of computation per event...locally". That sounds as though you _want_ fatness. The best place for lots of computation is as close to the data as you can get, which is on the server. The data transfer for any resulting visual effects is usually tiny by comparison.

    You don't need to design a new lightweight terminal system: just re-discover X. I can't believe that you left it out of your list of options. Dedicated X terminals can be built on systems that would be considered puny by today's PC standards. During the early nineties, the group I worked with had a lab of 20 or so X terminals, NCDs and Labtams. The Labtams were the best, with snappier GUI response than the MIPS and Sun workstations that were also on the net. These machines had a 16MHz i960 and 8M of RAM. No special graphics hardware, but hand-tuned blit code on the i960.

    What is it that you feel X _doesn't_ give you that another "thin terminal" protocol might?
  • I'mn pretty sure that IBM's workspace on demand would like up to your requirements. It has excellent support for Java (and what doesn't have good support for html), plus it is an established architecture. It's based on OS/2 (don't hold that against it - for specifica tasks OS/2 is excellent). It's a really smart system, and now that Netscape finally have a latest tgeneration and actually stable browser running on the platform, it is quite usable.
  • Not being terribly "graphically oriented," I'll leave it to others to characterize what sorts of functionality forcibly need to sit on the front end. I'm skeptical that Java is quite there yet; AWT is, on the one hand, quite Lowest Common Denominator in nature, and ugly as such, whilst Swing looks like it's anything but "thin."

    What may be helpful, on the other hand, is to make sure there are ways of splitting applications into modular pieces so that you can have pieces on hosts here and there, and thereby keep the graphical pieces fairly thin.

    To that end, I would commend the consideration of message-oriented middleware systems; there are expensive ones like Tuxedo or MQSeries, and "libre" ones like Isect. [netcom.com]

    Keep in mind that you can't keep the client thin unless you have already split the application cleanly into pieces that allow the client to stay thin...

  • University of Georgia Department of English [uga.edu]. Old, throwaway 486s as X terminals, with a central application server. (Disclaimer: not my project)
  • by trichard ( 28185 ) on Tuesday October 26, 1999 @06:52PM (#1585220)
    I've had run-ins with other thin client architectures including Java, HTML and Citrix Win/MetaFrame/ICA type solutions.

    It really depends if your application is in a closed environment such as a corporate intranet, or if it needs universal client compatibility.

    In the closed environment, you have a lot more control over the client hardware specs. In this situation, if you can build a case around return on investment you may be able to find some takers.

    I think that your best bet, though, is to stick with HTML. There may be some pains in maintaining application context but all in all the form/submit metaphor generally matches well with database access applications. It's really not much different from 3270/5250 type terminals. Furthermore, getting too tricky with GUI elements tends to limit usability rather than enhance it.

    Ultimately, if you stick with HTML you'll have the widest range of client devices to choose from. Everything from big, fat, PC workstations to small, skinny, fixed function "internet appliances."

    Even PDA's and cell phones become potential clients in this "everything's got a browser" age.

    Yes, stick with HTML. Do all the harder stuff at the application tier.

    Good Luck!
  • I think the greatest thing since slice bread was and is remote X sessions. :) Nice nice happy and thin clients that because of the magic powers of X11 can run remotely very easily. It seems people these days forget the happiness one can achive with an xterm and a beefy server :) Sure Quake is not an application for x-terms but one can do data entry and solitaire on these machines. Plus you don't have to worry about the users killing the x-terms because they really have nothing too kill. :) But then again that's my 3.234128734192222222222222222224341341 cents (Canadian)
  • If you really want to do some thin client apps, why bother with the client at all? Forget about the client completely, spend the money on a fat ass server to do ALL the processing. There is no reason for the client to do anything at all but to display info and accept input. Amazon is a perfect example. Hell, you can order books with a Palm Pilot now. The clients don't get much more thin than that.

    You don't need Java, you don't need cgi, all you need to do is process your info and publish it in html. Get the job done with bandwidth and processor power. Damn! Yankees just won again...
  • The problem with using HTML FORMS is that it's just not expressive enough to do the sorts of things that people want to do in applications. The things FORM does are useful; just not enough. More critically, they aren't extensible.

    At the opposite end of the spectrum, the X protocol provides infinite control, but requires that you layer lots of stuff on top of it in order to do anything.

    It may be worth looking at the PalmPilot; it represents, above all else, a useful set of compromises.

    What is probably needed is some such useful set of compromises, a reasonably powerful widget set like one of

    • Tk
    • Gtk
    • Qt
    that has:
    1. A protocol that allows some reasonably high-level information to be passed across and processed by the client, and
    2. Some way of extending the protocol by pushing some "extended widgets" out to the client that weren't originally supported.

    Your idea of transmitting XML interpretable by a GLADE "server" on the client is certainly not outrageous; I would suggest the thought that it might be worthwile to have a protocol that passes across pre-parsed XML so as to cut down on the amount of network traffic.

    The thing that libGlade does not (yet?) seem to admit is that of extensibility. In order to support that it would probably be necessary to have some form of interpreter on the client that can run (bytecompiled?) code to either provide additional widgets or to provide some further local processing.

  • I am not so sure about Notes. I installed it on my machine at home in order to communicate with the office. Just to get email, and access project group projects. This took 100Mb of client install. Like you said, it's painfully slow. I can't see Open Source(tm) saving this program.
  • Your complaint against Java is that "programmers shouldn't need to write gui code". Have you checked out any of the non-programmer oriented java beans builders? Such as Lotus beanmachine [lotus.com] or Jamba [jamba.com]? You can build sophisticated guis which talk to databases with no code. I know you've probably heard this before, but this time I think they've done it. Java beans really are cool.

    As for whether it's "thin enough". Well I think it's as thin as you're going to get whilst still getting all the features you may need. As you say, HTML is thinner, but it's also lame.
  • In the environment where I work, most of the applications that run on the desktops are simply database access and maintenance oriented. These apps are easily converted into HTML form-based web-applications with little to no real effort.

    We have ColdFusion 4.0 running on Sun Solaris w/ a large Oracle database server. This proves more than adequate when simply doing data processing and dosn't have much overhead. People access the apps over our intranet through their browsers and do what they have always done and because we stick to basics, it runs across many platforms without much worry.

    I'm not saying this is the end-all be-all, but it has been very effective in our environment and shouldn't be dicounted just because it dosn't provide all of the bells and whistles. Of course, it depends on what you're doing.

    If you need a real-time interface then you are SOL right now. Sorry, Java just hasn't lived up to it's promises; such an unfortunate thing.

  • I've used a product called GoGlobal by Graphon which seems to work pretty well. It is basically a thin X client for PC's. In my experience, applications run fairly well even over a slowish modem link, and over a LAN, they run like you were sitting at the server machine. They also have a Java version, which I have not tried. This would seem like a good solution. Develop the application on a unix machine, let people run it from any Java capabale client.
  • by scrytch ( 9198 ) <chuck@myrealbox.com> on Wednesday October 27, 1999 @06:56AM (#1585230)
    Try a SunRay1 (aka Corona in many circles). Thin as it gets, they're a framebuffer on ethernet, for the most part. A cheap dumb graphical terminal, your X session runs on the big monster server. One big expensive machine, but only one to manage. Talk about going full-circle, eh? They do have some interesting features. Stick a smartcard into one and log in, and your session follows the card. Yank the card out, and it goes to the login screen. Stick it into another corona box, and your session comes back up. Even the mouse is in the same place. The hardware is all USB, so you can use your favorite USB peripherals, including printers and scanners (it locates and adds them, presumably via Jini). Anyhow, you wouldn't run coronas over a WAN, but then again, ultra-thin clients aren't necessarily the best choice on a WAN either.

    BTW, just as a disclosure, I do work for Sun. I personally don't think SunRays are the ultimate solution to desktops, but they're the niftiest dumb terminals I've seen yet.

  • There's one _very_ important point here, that I've synthesized my opinion on from a mish-mash of Alan Cooper (many of whose opinions I _violently_ disagree with, BTW), Jakob Neilsen, Phil Greenspun, and half a dozen others:

    There are two major types of applications:

    1) Ones I _sleep_ with,

    2) ones I date occasionally.

    The latter can easily be implemented as fancy browser based graphical UI's which are easy to train... but in the case of the former, ease of training is _much_ less important than ease of _use_.

    I've seen 3 or 4 mainframe applications where the re-write made the app look like "Windows on a TTY"... and spread 1 or 2 screens of entry out over 14 screens.

    They are _unanimously_ panned by the people who have to do heads-down data entry on them all day long. Allied Van Lines did it; the Florida DMV has just done it... and you shouldn't.

    Non-productivity applications that a user lives with all day long -- that is to say, database front end-y stuff, not word processors and calendars -- should be 80x25 in a text window.

    Trust Me on this.

    Cheers,
  • I'll second that. I was going to post the same thing, but I read through all the comments first to see if anyone said it.

    Tcl has the advantage over Perl of being a bit easier to read after it's written, and it integrates with the Tk library much more easily. You can write your applications in Tcl and use them through the web browser via the plug-in. All you'll need on the client side is a browser. The plug-in supports the sandbox concept, meaning that the Tcl scripts that you write will be safe for the users to run through their browsers. The gui's that you write will be good looking, and easier to develop than the equivalent Java gui. For more information on the plug-in and the Tcl language in general, go to www.scriptics.com.

  • That's what I did. One problem most of them had only 4 Megs of ram. But once you set up swap it don't matter. the thing is that the redhat floppy wouldn't work. ran out of ram. build a kernel and use nfsroot. then cp and you are in business.
  • A major point:

    "Thin client" is a marketing term. It doesn't have anything to do with the 'fatness' of the computer itself. Check out this link to Sun. [sun.com]

    The key is in the blurb:

    "Are you looking for centralized administration and a rich user experience? Look no further. The "plug-and-work" enterprise appliance requires no client administration or upgrades while at the same time putting the power of the server on your desktop."

    Thin clients aren't about dumb terminals; they're about terminals which remove the need for users to do any kind of administration. Notice that this has nothing to do with X windows, XML, Java. Nor does it have anything to do with CPU, etc. It doesn't matter what the box is running, as long as all the user has to do plug it into a jack and turn it on.

    The OS gets tossed because it is confusing, not b/c it eats too many resources. The CPU, file system, and memory are all trivial costs. It's the service calls that are expensive.

    Therefor, it isn't appropriate to discuss thin clients in terms of these non-factors (OS, windowing technology, etc.). You want a thin-client solution, pick X/Java/whatever and build something your users never have to think about.

  • I am currently running a "thin" network. I have 23 iMac clients with no hard drives booting over the network and recieving all apps from a single Unix Server. I run MacOS on the clients and can update the entire lab in one shot by modifing an image file on the Unix box. This is one of the best most robust solutions available. When MacOS X Client comes out in several months look for all Unix networks making a comeback with MacOS X Client booting from the network and X Sever on the backbone. This is a solution that I have working TODAY!!!!!!! Apple's netboot solution is excellent for enterprise and I would recommend it for any lab or group of machines that need centralized adminsitration and cheap hardware.
  • I'd say that's a hardware problem :)

    Things like that can happen....background radiation ;)
  • "And then there is the (MS sponsored) murder of the portability promise."

    If we are supposed to avoid Java because Microsoft has targeted it for termination, does that mean we should also give up on Linux?
  • I suspect that HTML and Java will suffice as a thin and sorta thick (respectively) client-side interface for simple projects, such as data entry, inventory control, and other sorts of jobs which would have been done a dozen years ago with a bank of VT-100 terminals. And I suspect that XML will be comming around the corner in a couple of years to fill in the blanks that HTML currently cannot cut.

    OTOH, I suspect there will always be software projects where a thin client-side interface just ain't going to cut it. But for MIS departments where all you need is to support your customer support crew with latest technical specs and access to the customer database, HTML on the client side is a fairly good answer overall.

    Of course this requires a lot of metal on the server side, as well as a fresh copy of Apache and PHP (which IMHO rocks!), but that's the other side of the wire...
  • Citrix isn't bad, but you do occasionally run into problems that aren't found on open platforms (like X). We use a model of ICA terminal that has CLIENT-side freezups occasionally that pop up when the user runs Outlook on the server. That really isn't supposed to happen. Ever. Server-side freezes are expected with MS trash, but client-side? Thanks to the closed source nature of ICA, we can't ever troubleshoot it effectively, and our vendor is completely unresponsive. Fortunately, the rest of the company is running on XTerms (NCD has a decent add-on for WTS that lets it do its magic over X), so we only have to deal with it for the remote offices (ICA is much better over the WAN than standard X, and out terminals don't support LBX).

    The other problem with WTS is all the hoops you have to jump through to get programs properly configured (I've certainly done more than my share of registry hacking to get it all working--even with standard apps like Office '97). Without proper configuration, wierd stuff happens, like any user being able to change applicaion defaults for the entire system or file sharing violations.

    All in all, it makes me want to port our proprietary DB stuff to HTML and run Office apps via Wine on a beefy Linux box. At least proper configuration for multiple simultaneous users would be easier (that's a scary thought).
  • this idea is not new. read the linux howto on Diskless and nfsroot. no harddrive just an eeprom image on the ethernet card.
  • Perl is a scripting language, Java is a system programming language. Mind experiment: implement java in perl, now implement perl in java which of those two programs do you want to maintain?

    I used to think this way too, but over time, and with much pain, I learned the hard way that Perl is superior to java or c/c++ when it comes to web/db stuff. Why? Because Perl is the most efficient language for dealing with text, and web based applications are primarily all about text. Java and C/C++, which I used to defend to the death, are much clumsier with text than Perl. It's true! I even prefer the way Perl allows very flexible object oriented programming to the old Java/C++ days. The programmer is given incredible control and expressive power. I must admit, I haven't yet played with Python, though. Now if I need to quickly render a few Mandelbrodt sets, I'll probably do it in C++ (or java, if I'm not in a hurry to see the pictures), but for web stuff give me Perl!

    I used to be really turned off by the "ugly" syntax, but now that I'm accustomed to it, I can't stand looking at Java anymore. IMHO, most things can be done much more elegantly in Perl.

  • Man, I am reasonably sure I'd pay for code like that. Want to find the time?

    -Chris
  • by Delboy ( 96501 )
    Something worthy of note is Jade, it's relatively new, Object Orientated and the latest release offers a variety of clients, including a Smart Thin Client and an Html thin client. Some of the work I've seen done on a database system we were evaluating as well as with my contacts with the developers, The Cardinal Group, here in Christchurch, New Zealand has been very impressive. Check out: http://www.discoverjade.com [discoverjade.com].
  • Take a look at http://www.wapforum.org [wapforum.org] for yet another approach to thin client architecture. This is the stuff that is going to get stuffed into pagers, cell phones, PDAs... most of the big players are adopting this emerging standard.
  • A client that would understand tcl/tk
    plus html/xml would pretty much fit
    your bill in my opinion.
    You can setup a linux box doing just that.
    If you throw in the (unfortunatly quasi
    defunct) tcl plugin for netscape you
    have something pretty much cross platform
    and much easier....
  • I have been setting up some thin clients based on our old (8MB, no hard disk) 486s. I boot off a floppy based on a modified LODS [rr.com], which in turn is a modified Hal91 [home.sol.no] distribution. The machines are too small to boot X (thus, I can't use muLinux [nevalabs.org] - it needs at least 16MB to boot X). VNC is ideal for me, I can have one big server with 10 running copies of the application I provide to the clients, which are completely stateless - you just boot the client and it appears exactly where you left it. On a LAN, display speed is perfectly comparable to X, and it can also be deployed (albeit VERY slowly) over a modem.

    I don't buy Java. Simply, it is an ugly language. If I were to start selling and marketing an all-purpose thin client solution (unlike mine, which is very purpose-specific), I would maybe build a Perl interpreter into its hardware... It would be much more appealing than Java to many programmers. (Of course, I'd have to get big bucks to do so ;) )

    Anyway, my 20 mexican cents worth ;)
  • Could you accomplish the same effect by having every workstation be a node in a cluster?

  • So you want an easy way to store state on the client, but don't want cookies? This is actually planned for Netscape 6.0 -- it's called Oreos. Microsoft has also been whispering about "Project TollHouse".

    Seriously, you can maintain state over HTTP without cookies or URL goofyness, but it involves some pretty complicated javascript, which probably wouldn't be cross-browser compatible.
    --
  • Yeah, the worst thing is, is that our university has deals with Dell and Gateway, so in our labs we have, like fully equipped PIII 400 mhz monster machines, and all people use them for is as terminals for telneting in to PINE and the library catalogue! argh
  • This is exactly what Mozilla is trying to do with XUL, the idea is to code the UI in XML and render them with the browser, even the UI of the browser is writen in XUL too, the same goes for the UI of composer, the mail, and newsreader
  • Has anyone considered VNC to serve X apps, one nice big cluster and a load of machines capable of booting a linux floppy with the SVGA VNC viewer could work as terminals, eg 386's with 8MB RAM.


    See AT&T Labs UK VNC Pages [att.com]

  • I think you missed my point. The question was about what type of client should the user be able to use with an app. My point is that apps should be developed so that it doesn't matter what client you use. One shouldn't limit one's self to activex controls and javabeans...
  • by TheBashar ( 13543 ) on Tuesday October 26, 1999 @07:39PM (#1585265)
    I have used and really like Citrix [citrix.com] thin client solution. Their Metaframe product works extremely well. Even better, they have been slipping out from Macroshaft's leash lately and announced they are working on Unix (Linux) versions of the Metaframe product. I think you should give them serious consideration.
  • How 'thin' do you want the application?
    I can hardly think of anything thinnier than a telnet. Works nice in everything between Memorex to Cray.

    /sarcasm on
    Do you really need bells and whistles? Then don't loose your time and use VB/ActiveX. Nothing will make Windows fatter. Won't be portable, will break every couple of minutes, will be incredibly slow, but... who really cares? Looks nice!
    /sarcasm off

    There are a lot of considerations when deciding what to do for a 'data entry' application. How intensive will the data entry be? Is there a lot of data validations prior to end your transaction? Is it database intensive? Is it calculation intensive? Will it use some/dozens/hundreds/thousands of screens/forms/reports?

    Lots of times a poorly designed GUI is worst than a well designed character interface.

    Can you wait 'till there's Linux Delphi?
    Is portability a big concern?
    Can you spend a lot of money in processor power?
    Have you considered other proprietary solutions, e application builders like Compuware's Uniface? (quite portable, very good for DB intensive apps, but too much proprietary and very far from thin).

    As far as I see, Java isn't a bad solution. It is stable enough, you can distribute workload between client and servers and, as you say, only malicious borg code breaks a well-coded java app.
    Python can also work well (structured, robust, fast, easy to learn -and easier if you already know perl)

    I feel your question too broad to have a simple answer. Good luck, anyway.
  • What do you mean by:

    The thing that libGlade does not (yet?) seem to admit is that of extensibility. In order to support that it would probably be necessary to have some form of interpreter on the client that can run (bytecompiled?) code to either provide additional widgets or to provide some further local processing.

    As I understand it libGLADE allows you to write the UI in XML, which will be translated to GTK widgets by the library. The signals from the widgets need to be caught by your program.

    If this is correct (corrections please), then couldn't a generic signal handler be written to pass the signals back to the server computer (not the one the GTK/XML app is on, the REAL server)

    Of course, this wouldn't allow upgrading of the GTK library, if that is waht you mean. (?)

  • Right now I'm doing that kind of thing with Java on the backend and HTML (& some Javascript) on the frontend. No doubt about it, HTML (even with Javascript and layers and all the extra stuff) is just not good enough to produce a decent GUI. You can get close, but at the expense of a lot of tinkering...

    We are starting to move to feeding out XML, and for clients that still need HTML (which will probably be most for a while) just parse the XML into HTML on the server.

    If it was all internal apps over a good network, the Jvaa Plugin is pretty useful as well - using that you get the same VM on both IE and Netscape, and get to use Java 2 right now. I used that for a project and it worked out really well, though I'd have to agree that solution is a bit too large to really be called a thin client - it was more a distributed app.

    Flash 4 also supports forms now, I suppsoe you could use that though it seems somehow wrong... in a recent demo they gave at our workplace they showed a -whole desktop- (calculator app, mini browser windows, etc) built all in Flash. Yipe!
  • The trouble is that thin client is one of those overused buzz words that has completely lost it's meaning.

    I guess what I would be looking for is something that runs most of it's core logic on the server side and only has presentation on the client side. I would also be looking for something that would automatically upgrade itself when new changes are released. Those new Sun Rays offer a nice model.

  • IE crashing does not take down the whole machine.
    If you have IE set to start in a new process, it won't take down anything. If you're spawning IE in the same process as explorer, it'll take down your shell, but the shell will restart.

    It's like saying "Netscape locks up linux and shuts down the WHOLE MACHINE"
  • I use a number of different 'thin client' type protocols on the networks I administer - X is a good protocol, but not very 'thin'. It doesn't work very well over long distances. On our Lan we have a number of X-terms that connect to DGUX servers, all of which can open a windows NT session on a box running Windows NT Terminal Server [microsoft.com] with Citrix Metaframe [citrix.com](sure, it's Windows, but get over it - users want Windows/Office). Additionally, we have PCs, Macs, and NCD [ncd.com] ThinStar WinCE terminals. All can run the same applications, in many cases much faster than they could on their own machine. Plus, it really saves you money in the long run, because most users don't really use all the power a regular PC can offer, except in brief bursts. Maybe 10K for a huge server, and then any piece of crap can connect to it - instead of spending 1K for every person in the office.

    Although WTS is a bitch to configure, once it's there, it works really nicely. Citrix ICA is an excellent protocol - it has clients for windows, mac, linux, solaris, java, etc, and can even be used over a modem, with encryption, with acceptable speed. People with the terminals as clients are easy to take care of. They won't screw up their machines, and if something goes wrong with it, we just pop in a new one and they're back online. Of course, Windows Terminal Server is pretty obscure at the moment, Windows 2000 will support terminal serving capabilities as well.

    If you want multiplatform thin client capability, the names you need to know are NCD, Citrix, and Microsoft. VNC [att.com] is an open-source alternative that works fairly well(although it is far slower than citrix), and supports almost every known platform. Although it has no built-in encryption, it can be tunneled through ssh relatively simply. It has fewer requirements than X, and shows good promise for the future. By the way, they needs more good developers - go to the site [att.com].


    -lx

It is easier to write an incorrect program than understand a correct one.

Working...