Thanks for sharing this. Having started in a new environment I feel your pain. Sadly I find myself doing more and more in P&P (Perl & Python) as they *do* interface with the rest of the world and have a vibrant community. Let alone the license policy...
It's a tough conclusion, and if things change I may return to be a REBOL again. For now.... goodbye --Maarten On Thursday 02 May 2002 18:56, you wrote: > Sorry for a long message, and thanks to all those experts assisting us of > evaluation of Rebol technology for mail frow namagement client project. I > feel obliged to share the results before signing off the list. Shortly, > Rebol was rejected for not allowing direct multi-threading, for its > singularity on the market and for very trapping licensing policy. The > latter particularly means that if we want to ship our app as a single > executable, we need to pay royalties. Java 2 stand-alone + JavaWebStart was > chosen. Below is detailed report. Boris. > > ------------------------------- > > > 7. Summary on Technology Choices > > 7.0. JSP > Description > Sun;s technology for web applications hand writing. Currently is the most > popular base for them. Usually it is mixture of HMTL or XML with java code. > Sources > Sun’s forums and Apache’s lists… > Client downloads > No additional software needs to be downloaded. It is just a regular HTML > from client’s point of view. But as for any HTML solution the whole page > with data and wrapping tags needs to be re-downloaded each time we want to > change a piece of data. > Testing. > · Unit testing. Lots of open source community frameworks, for instance > HttpUnit for client, Apache Cactus for server and Junit for general and > stand-alone testing. > · Automated GUI testing. For Dean to evaluate. Perhaps, some tools on > regular browser HTML testing. We may not need automated tools in this case > because unit test means cover it quite well. > Pros > · Popular, many experts in it around. Supporting community is also large. > · There are many free engines. > · client is just HTML, no download headache > · most Java candidates voted for it.. > Cons > · if it serves HTML, it is the most limited in layout and action amongst > other choices. > · client is not smart enough > Other > … > Acceptance > Rejected as a means of HTML or Flash delivery because they are not > multi-threaded. We may still consider some secondary intermediate layer > with its usage. Though we can serve our Java 2 application just from a > static page. > > 7.1. Java 1 applet > Description > Original way to serve java agents to client. Runs is a browser. We can use > it for both web and stand-alone client. > Sources > Sun’s forums, JUG mail lists > Client downloads > Jre 1.1.8 download size is 2.7 megabytes, in most of the browsers it is > installed. Java plug-in size? Windows and Solaris versions are available on > http://java.sun.com/products/jdk/1.1/jre/index.html. Seems, plug-in is > available just for Windows and Solaris? Browser cashes the applet classes > during the session. Otherwise it re-downloads the code each new session. > Whereas JRE stays forever after the single download. > Testing. > · Unit testing. General Junit framework, perhaps, there is some > applet-specific. There is Java 1 version for everything. > · Automated GUI testing. For Dean to evaluate. > Multi-threading > Available as in any Java code. > Pros > · Majority of browsers should support it without downloads > · mature and established technology > · can run sophisticated code > · multi platform > Cons > · browsers incompatibilities in reality > · security limitations > · Java 1 becomes obsolete > · slow > Other > · Mixed HTML-applet solution. Both Adrian and Jon Stoski mentioned it to be > not so heavy as a whole single applet. But anyways we lose the main goal of > having common code base. > Acceptance > Rejected because Java 1 is obsolete and applet technology goes out of > fashion as inconsistent and poorly supported by browser vendors. > > 7.2. Java 2 applet > Description > Next to original way to serve java agents to client. Runs is a browser > usually through plug-in. We can use it for both web and stand-alone client. > Sources > Sun’s forums, JUG mail lists > Testing. > · Unit testing. General Junit framework, perhaps, there is some > applet-specific. > · Automated GUI testing. For Dean to evaluate. > Multi-threading > Available as in any Java code. > Client downloads > Jre 1.4.1 download size is 9.2 megabytes. Plug-in technology is specially > intended for Java 2 applet. Seems, plug-in is available just for Windows > and Solaris? Browser cashes the applet classes during the session. > Otherwise it re-downloads the code each new session. Whereas JRE stays > forever after the single download. > Pros > · Majority of browsers should support it without downloads > · mature and established technology > · runs the most contemporary Java > · multi platform > · we can have trees and other cool Swing stuff > Cons > · browsers incompatibilities in reality > · security limitations > · 8 megabytes of JRE 2 to download (condenced) > · sow > Other > · Since dropped Java support in XP, there is little download difference > with Java 1 applet. > Acceptance > Rejected because applet technology goes out of fashion as inconsistent and > poorly supported by browser vendors. > > 7.3. C++ stand-alone > Description > Just like existing Mailloop5 or future Mailloop6, but thinner. We can use > it for stand-alone version only. > Sources > Rick, Paul, … > Client downloads > Just a small application needs to be downloaded and installed once. No > additional software. But as any stand-alone thing it can not be run from > the browser without installation. But on the other hand as for any > stand-alone application, it must be downloaded and installed just once. > Testing. > · Unit testing. CppUnit and other for general C++ and specifically for > Microsoft studio. Rick also says, it is possible to call COM objects from > Java using J++ libraries. > · Automated GUI testing. For Dean to evaluate. Perhaps in this case we need > automated tools the most. And this is the most common use for them. > Multi-threading > Available as in any Java code. > Pros > · GUI is reusable for Mailloop6 > · Quick > · No security limitations > · Easier to talk to C++ Microsoft services. How did it talk before in > Mailloop5.0? > · Existing people know how to do it. > Cons > · Single platform > Other > Acceptance > Rejected because it is single platform based and has poor ability to run > from the browser. > > 7.4. Java 1 stand-alone > Description > Application over JRE 1. > Sources > Sun’s forums, JUG mail lists > Client downloads > We can ship with JRE 1.1.8 that is 2.7 megabytes on top of small > application size. By cost of slight enlargement we can whip the executable > for each platform wrapped into install shield. Or not to care about > platforms we can ship the zip and suggest the customer to pre-install JRE. > As any stand-alone application, it must be downloaded and installed just > once. > Testing. > · Unit testing. General Junit framework. There is Java 1 version. > · Automated GUI testing. For Dean to evaluate. > Multi-threading > Available as in any Java code. > Pros > · multi platform > · free > · has many open source knowledge communities around > Cons > · requires JRE 1 on client’s machine or should be shipped with it, possibly > wrapped into InstallAnywhere executable. > · Slight security limitations > · Sow > · Java 1 gets obsolete > Other > Acceptance > Rejected because Java 1 is obsolete. > > 7.5. Java 2 stand-alone > Description > Application over JRE 2. > Sources > Sun’s forums, JUG mail lists > Client downloads > We can ship with JRE 1.4.0 that is 9.2 megabytes on top of small > application size. By cost of slight enlargement we can whip the executable > for each platform wrapped into install shield. Or not to care about > platforms we can ship the zip and suggest the customer to pre-install JRE. > As any stand-alone application, it must be downloaded and installed just > once. > Testing. > · Unit testing. General Junit framework. > · Automated GUI testing. For Dean to evaluate. > Multi-threading > Available as in any Java code. > Pros > · multi platform > · free > · has many open source knowledge communities around > Cons > · requires JRE 1 on client’s machine or should be shipped with it, possibly > wrapped into InstallAnywhere executable. > · Slight security limitations > · Sow > Acceptance > Accepted as multi-threaded and partly compatible with browsers. > > > 7.6. Java Web Start > Description > Free Sun’s implementation of Java Network Launching protocol intended to > help rusty Applet technology to run Java 2 application from the browser on > client’s machine. > Sources > Sun’s forums, JUG mail lists > Client downloads > The download and installation process stays in between customary concepts > of stand-alone and web application. There is no plug in for it. Usually > there is a link for the customer to download 9.2 megabytes of JRE 2, plus 8 > megabytes of JavaWebStart on top of it. This is a single download and > installation of base and our software. No other downloads and installations > are ever expected unless we encourage it from the server if we need to > update the application’s version. > Testing. > · Unit testing. General Junit framework. Perhaps there are some specific > issues and special frameworks and design solutions for them. > · Automated GUI testing. For Dean to evaluate. > Multi-threading > Available as in any Java code. > Pros > · multi platform > · free > · has many open source knowledge communities around > · 8 megabytes of download over 9 megabytes of JRE 2. > Cons > · requires JRE 1 on client’s machine or should be shipped with it, possibly > wrapped into InstallAnywhere executable. > · Slight security limitations > · sow > Other > Kind of a plug-in that helps client run java stand-alone apps from > browsers. There is no research on browsers’ support and how smart it is. > Also, JN thinks it is too much of download headache for a customer. V.S.’s > point is that by using JavaWebStart we can develop just one client version > and use it in two ways. More and more people suggest it. V.W. thinks, it > helps to automate version upgrade routine. Now if to compare Java2 applet > and JavaWebStart app, apart from reliability issues - what is the principal > difference? I think, first of all in download cycle. Java 2 applet requires > to download Java 2 VM once and applet every new browser session. Java Web > Start requires to download VM once, target application also once (unless > newer version detected) and some Java Web Start thing in addition. So they > both download Java2, though applet may be cashed but never installed into > the system, whereas Java Web Start requires more to download first time, > but less all subsequent times. Some security issues may arise. For > instance, if the user tries to access his system from the Kinko's, Internet > Cafe or public library, those machines will surely allow applets but may > disallow target app installation from Java Web Start, and disallow to > install very Java Web Start. Is that right? These are just my premature > guesses. This is what response I got from Sun’s forum on plug-in for JWS: I > don't believe that JWS can boostrap itself onto a client. In my test so > far, I have a link in my web page to the appropriate sun URL from which the > user can download the JRE and/or the JWS. They must first do that before > downloading my application using JWS. You can provide a link to > http://java.sun.com/products/javawebstart/ for people > to download. It will auto-detect your operating system. > Acceptance > Accepted as more fashionable than applet way of running from the browser. > Also, we need to write just one application, not 2, no headache with > version synchronization. > > 7.7. Flash > Description > Macromedia;s technology to show vector graphics in a browser, alternative > to HTML. Data source is binary. The server side Salsa script and J2EE > connection through paid Macromedia’s Gateway is possible. > Sources > · Macromedia, Inc. 600 Townsend Street San Francisco, CA 94103 Tel: (415) > 252-2000, [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], > [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], … > · Open sources: http://www.anotherbigidea.com/javaswf/index.html, > http://www.orgdot.com/javaopensource/, > · From A.F.: www.flashgap.com and www.jzox.com. > Client downloads > 0.5 megabytes player and in most of the cases nothing needs to be > downloaded once. Then media size is bigger then HTML, but still small if no > animation is used. Data reload may be organized economically unlike in > HTML. Perhaps, bigger player must be downloaded for Flush MX that has > built-in standard controls library. > Testing. > · Unit testing. specific Flash solutions need to found out. Perhaps, it can > be debugged. If it is within HTML page, probably Junit can still be > applied, if it is served from JSP server, Junit and Cactus will be used. > · Automated GUI testing. For Dean to evaluate. > Multi-threading > No. > Pros > · - it is much richer than HTML. > · - supported by 98% of market client browsers. > · - requires very little to download in plug-in fashion if any at all. > · We may need to buy merely nothing at all > · - tends to be a base for new browsers, is in fashion. There are many Java > open source packages for SWF rendering and automatic content update. > · Generally it is deep and growing technology, so we may commit to it not > fearing licensing traps. > · - looks less fragile then Java Applets. > · - has possibility smart action and communicational scripting. > · Allows dynamic content generation through open source Java APIs. > Cons > · - increasing development cost. We do not have many people around > experienced in dynamic Flash applications. To connect it properly to back > end. And sure it is harder to incorporate it into standard server > technoloties like JSP comparing to HTML. > · - some parts of this technology are not free. Development tools, gateway > if we need it... > · - it may be disallowed by customer due to reputation of heavy overuse. > Customer may be afraid of nasty media. > Other > · I still do not know about multithreading here. I will know by tomorrow. > Acceptance > Rejected as not multi-threaded. > > 7.9. Rebol > Description > Core component is a base for Perl-like scripting language. View component > adds GUI, many other components add options. IOS seems to be > inter-organizational environment like Lotus Notes or Filosafe. > Sources > [EMAIL PROTECTED], [EMAIL PROTECTED] http://www.rebol.com/feedback.html > [EMAIL PROTECTED] > Client downloads > 0.5 megabytes of view.exe must be pre-installed and then really small > script text file application on top of it. Perhaps, we can compile and link > it together with Rebol base and then ship. That size should not be large > too. Perhaps we need to buy more from Rebol in this case. > Testing. > · Unit testing. As [EMAIL PROTECTED] says, since REBOL doesn't > support step tracing at this time, the console and embedded print > statements are the most common debugging tools I think, at least they are > for me. There is also a unit testing script (based on JUnit?), called > rebol-unit. According to [EMAIL PROTECTED], testing is done at the console > level. Generally REBOL is easy to test and debug once you understand how > evaluation occurs. When an undefused error occurs, the program breaks into > console mode, much like BASIC. At this moment you can peer into your > program, test values and functions, somewhat useful. Usually though, you > add probes into the suspect area of your program to make sure it is doing > what you expect. Almost all bugs I encounter are fixed within a minute or > two, and often just seconds. The tools are not nearly on the level of > Visual BASIC, though somehow debugging goes pretty easy in REBOL. > · Automated GUI testing. For Dean to evaluate. Perhaps we can consider it > just like regular native GUI application, especially if we compile it on > server. As to specifics, Boris may ask on mailing list. > Multi-threading > · As [EMAIL PROTECTED] says, REBOL doesn't support native > multithreading. Maarten's latest release of Rugby has cooperative > multithreading in it as an example of how you might approach it. > · According to [EMAIL PROTECTED], no forking in native rebol. Here is a > simple 2 line a piece master and slave demo, made in about twominutes. > This is one way to communicate between processes. You may also should be > able to tie processes together with better performance by using C > functions. I cant give you an example of that. Does anybody know if you > could fork using a C function from REBOL? > Pros > · EK recommends it as another “run anywhere” thing > · It may help us for managing remote space for clients saving their list > files there. > Cons > · seems, it is not intended to be used for this purpose. > · Not free. > · it is not a popular solution, so we may run into unexpected technical and > business license traps. For instance > · what serious projects had used Rebol? > · what is the way of delivery to client - myapp.r and view.exe files? Can > we re-desctribute the components? What should we buy then? Or we can > compile and link it first and then distribute the single executable, but > then we probably need to buy the source? Waht other components we may need? > What is IOS for? > · what unit and GUI test tools are available? Debuggers? > · for the serious project our 2-week familiarity may not be enough, but > there are no Rebol experts around. > · No direct multi-threading; > · No dedicated debugging means; > Other. > · If use it anywhere, the first choice is probably to ask sys-admin guys to > install it for inter-company communication, get used to it and then think > of further usages. > · Basically we can freely re-distribute their view.exe component along with > our myMailloop.r script file > · If we require more features along the way (which is hard to foresee with > our current level of expertise), they start charging considerably > · Anyways it just looks like another form of developing native apps that we > already can do in Perl and C++. I do not see how it can become a web app > running in a browser. > Acceptance > Rejected as not multi-threaded, quite singular and having complex pricing > policy. > > 7.10. Maui > Description > Bitmovers’ product generating HTML in run time for Swing original. > Sources > · Bitmovers Systems Inc. 402-329 Railway Street, Vancouver, BC V6A 1A4, > CANADA, 1-877-733-4533 is not in service, 604-733-4533, both mail boxes are > full, [EMAIL PROTECTED], [EMAIL PROTECTED] do not respond. Seems, > they went out of business. > · Candidate D.W. > Client downloads > Same as for JSP. > Testing. > · Unit testing. Junit for testing Swing source and HttpUnit for testing > generating web application. > · Automated GUI testing. Just like for JSP. > Multi-threading > Not on client side just like for any HTML page. Once any request is > generated, page freezes until response comes. Yes for Swing original and > unknown for their servlet app. > Pros > · cheaper than WebCream > · local > · saves on cost of web application development > · we do not need synchronization of stand-alone and web app for every > update. > Cons > · not popular enough. We may run into unexpected issues. > · Slow. > · Unlike WebCream, it needs code modification. > · Out of business > · We lose control of web app with such an approach > · In stand-alone app we should allow more than in web, for instance, saving > into local files. > Acceptance > Rejected as the one having HTML client, vendor is out of business and many > other things. > > 7.11. WebCream > Description > CreamTech’s product generating HTML in run time for Swing original. > Sources > · http://www.creamtech.com/webcream CreamTec, LLC PO Box 230833 > Centreville, VA 20120-0833, [EMAIL PROTECTED] [EMAIL PROTECTED] > [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED] > · candidate M.O. > · candidate D.W. > Client downloads > Same as for JSP. > Testing. > · Unit testing. Junit for testing Swing source and HttpUnit for testing > generating web application. > · Automated GUI testing. Just like for JSP. > Multi-threading > Not on client side just like for any HTML page. Once any request is > generated, page freezes until response comes. Yes for Swing original and > unknown for their servlet app. > Pros > · saves on cost of web application development > · we do not need synchronization of stand-alone and web app for every > update. > Cons > · just like Maui it is not popular enough (but still more popular than the > latter). We may run into unexpected issues. > · more expensive than Maui > · Slow. > · We lose control of web app with such an approach > · In stand-alone app we should allow more than in web, for instance, saving > into local files. > · Unlike Maui, it does not need code modification. > Other > Acceptance > Rejected as the one having HTML client, quite costly and many other things. > > 7.12. SOAP > Description > W3C’s specification on messaging format. We can use it to talk between > different layers of our system. > Sources > [EMAIL PROTECTED] mail list, www.w3c.org, microsoft, … > Testing. > · Unit testing. HttpUnit for client testing in any case, Junit for Java > server side and perhaps CppUnit for C++ side testing. > · Automated GUI testing. For Dean to evaluate. This must be not a GUI event > tool, but perhaps some data parsing tool. > Client downloads > In case of using it on client’s machine (all except HTML and Flash based > clients) we need at least 180k of additional library. Data traffic also has > size overhead because data is wrapped into XML tags. > Pros > · supported by communities > · fashionable > · provider independent > Cons > · slow > · requires libraries > · there are slight vendor’s incompatibilities. > Other > A.F. proposed this communication protocol with HTTP carrier, and Rick > approved. Then applet needs for instance Apache's soap.jar or 180k. > Alternative communicational library will take some size anyways. W.V. and > D.K. think SOAP is an overkill for the project. W.V. proposes RMI and JNI > instead. SOAP is not so universal a thing. There are some issues of > providers and clients compatibility. And having so diverse environment, we > will definitely need to use different packages. Perhaps Apache SOAP in Java > and MS SOAP in some native Windows code. Perhaps, we need to use > org.apache.soap.providers.com.RPCProvider class if our SOAP service is > Apache Java (C:\programs\soap-2_2\samples\com\readme.htm). Or if it is MS > implementation, we need to adjust java client for it. People say that SOAP > is slow, has lots of data overhead and therefore is rarely used on desktop > or client web apps. Rather it can be used between two server machines as > peers. > Acceptance > Accepted as more fashionable than CORBA and perhaps other reasons Rick can > provide. > > 7.13. RMI > Description > Sun’s narrowing of CORBA. Object exchange protocol over TCP. > Sources > Sun > Client downloads > It adds nothing to regular Java application download size. > Testing. > · Unit testing. General Junit. > · Automated GUI testing. Perhaps, nothing is available. Unit tests should > suffice. > Pros > · easier than CORBA or SOAP > Cons > · just Java to Java, where as we have C++ component. > Other > V.W. suggests using it to talk between stand-alone Java client and some > intermediate Java Java app server. > Acceptance > Rejected as Java-to-Java thing whereas we may have just one Java layer. > > 7.14. CORBA > Description > OMG’s object exchange protocol over IIOP. > Sources > OMG, … > Client downloads > Perhaps it adds a little to JRE 1 and nothing to JRE 2. Perhaps a little > more libraries in case of native stand-alone application. > Testing. > · Unit testing. Junit on Java side, CppUnit on C++ side and perhaps some > CORBA specific resources need to be found out if need comes. > · Automated GUI testing. For Dean to evaluate. > Pros > · more universal than RMI, just like SOAP > Cons > · too heavy for applets > · difficult at many aspects > Other > Acceptance > Rejected for the Reasons Rick can explain. -- To unsubscribe from this list, please send an email to [EMAIL PROTECTED] with "unsubscribe" in the subject, without the quotes.