[PW] standard web development tool for managing service oriented websites

John Franklin jfranklin at project-wombat.org
Sat Aug 25 01:17:04 PDT 2007


On Aug 23, 2007, at 1:39 PM, Anne Marie Barter wrote:

> Have not found much in the current literature on this topic, any  
> suggestions
> would be greatly appreciated. annemarie.barter at statcan.ca
>
> Question: whether there is any development of a defacto standard web
> development tool for organizations managing large service oriented  
> websites
>
> is javascript becoming that standard?
>
> are organizations moving away from tools such as dreamweaver, front  
> page and
> visual basic programming?

Here's a stab at answering these questions from someone who's done a  
lot of tinkering with such things. (Apologies for the length of the  
message!)

There is no single de facto standard for web development tools,  
period, whether for organizations or individuals.

[Related Note: There are, however, quite explicit standards for web  
pages, which are maintained by the W3C (World Wide Web Consortium).  
You can test a page to see if you're doing it right using the W3C  
validator, which is found at
http://validator.w3.org/
If a page fails validation, then purists won't like it, and more  
importantly it is more likely to look "wrong" when viewed in new web  
browsers (either new versions of the ones you have tested, or other  
browsers entirely). And note that even if your audience is running  
only one web browser, a site which fails validation but still "works"  
may fail if the browser is updated. Validation doesn't just please  
purists, it helps future-proof your design. Most tools support HTML  
validation in some way, so it's a good idea to incorporate it into  
the standard development process. This message brought to you by the  
Coalition of Web Users Standing Against Important Design Errors.]

Javascript is not a web development tool. (Well, okay, there are  
server-side Javascript implementations, which could technically be  
used to create a web development tool, but as far as I know there are  
no widespread products that do so.) Javascript is a programming  
language and API which allows web pages to run programs on the  
viewer's computer. As an analogy, "Javascript" is roughly to "web  
development tool" as "paint" is to "paintbrush" -- the terms are  
related, but the one is not part of the other.

If you mean, on the other hand, "is Javascript a standard system used  
to provide services to users on the web" then the answer is a bit  
more complex.

Javascript is not a good language for producing services directly. It  
is (intentionally, for security reasons) limited in its features, and  
(unintentionally, for many reasons) very slow compared with other  
options. For example, you might build a Javascript-based phone  
directory, where a script would pull up the information directly.  
This would be quite possible, but all the data would have to be in a  
format understood by Javascript and embedded in the page (or pulled  
in by reference). Every time the user loaded the page, their computer  
would have to download Javascript containing all the information  
(slow, and possibly not secure), and depending on how the Javascript  
parts were written, the program might become very slow when there  
were many numbers listed. And in addition, most browsers have a limit  
on the amount of script allowed in a single page; it's the main  
reason nobody has developed a serious Javascript-based graphics program.

[In particular: you should never attempt security through Javascript.  
Since all data and code used by Javascript has to be explicit on the  
user's computer, if a password is authenticated by Javascript, then  
the user will be able either to see the password, or the system used  
to encrypt the password and the desired target value, thus clearing  
the way for a brute force attack.]

That, however, is not the end of the story. Although Javascript is  
not good at data storage or heavy-duty processing, it is an excellent  
way to control the interaction of elements on a web page. A system  
has evolved over time in which Javascript controls the appearance of  
a web page, loading data from a server invisibly and presenting the  
results, giving the illusion that a single web page gives all the  
information at once. This technique is called AJAX (for Asynchronous  
Javascript and XML), and it is becoming very common, but as far as  
standardization goes it is still rather murky; at present you must  
write at least a little separate code for Internet Explorer and All  
Other Browsers. (This should surprise nobody who has done any web  
development, given Microsoft's history.)

[Note: AJAX often -- although not inevitably -- has some undesirable  
side effects. The Wikipedia page "AJAX (programming)" does a good job  
of outlining them at present, but here's a summary: (1) Since an AJAX  
service does not necessarily load a new web page, it can break the  
"back" button, which may be extremely frustrating to users. (2) AJAX  
services may also make it difficult to bookmark specific information,  
since the data is not necessarily related to the URL of the page. (3)  
Search engines may not be able to index information which is provided  
through AJAX-based services. (4) Older browsers (or simpler browsers,  
such as those on some handheld computers) generally cannot handle  
AJAX well, or at all, making AJAX services undesirable in some  
environments.]

Alternatives to Javascript exist, but all of them which come to mind  
involve embedding a program in a web page as a single alien object,  
without access to the content of the page itself. (Examples include  
Java applets, Flash media files, and ActiveX controls.) (The latter  
also has the limitation of working only on Windows, and not working  
on browsers other than Internet Explorer without extra work for the  
user.) The tradeoff is that these alternatives are likely to be far  
more powerful and predictable. A Javascript function may fail  
suddenly if it accesses a feature not present on that specific  
browser, but a Java applet will (aside from limitations of network  
access) either run the same way as it did on the developer's machine  
or not run at all.

A third possible interpretation of your question is "has Javascript  
finally become standardized enough for an organization to want to  
work with it?" The answer to this question depends on who would be  
running your Javascript and what your Javascript would be doing.

All those old browsers which had mutually incompatible versions of  
Javascript -- creating Javascript's bad reputation in the first place  
-- are still out there, albeit in much-reduced numbers. If your goal  
is for 100% of all possible users everywhere to be able to use your  
Javascript, you are out of luck. Try again in about 20 years, when  
hardware failures will have forced practically all of these users to  
upgrade.

On the other hand, you may be developing for users who are reasonably  
up-to-date (as in most higher educational institutions), or for users  
who are required to use fairly recent browsers or the same version of  
some particular browser (as in most corporations with strong IT  
departments). Either way, you can safely ignore the older browsers.

It may also not be important for all users to be able to access your  
site/service/page. If your service is strictly voluntary -- nobody  
will ever need it desperately -- then you can develop for some  
particular browser/version combination or combinations (it's a good  
idea to test in at least two different browsers, just in case), make  
sure it works where you say it will, and just post a notice that all  
other browsers are untested and may not work.

What the Javascript does also determines how compatible it will be:

If you want to read information from form controls, do some basic  
text or number manipulation, and load new pages, then with a little  
care you can support an overwhelming majority of users -- over 99%.  
(And the few users you don't support will be used to things not  
working at this point.)

If you want to do some reasonable manipulation of the page content,  
react to standard events like mouse clicks, and use timers, then with  
a little more care (and careful testing) you can probably support  
nearly as many users -- although you may have to break down and write  
some browser-specific code. (If you do, keep it in a separate file,  
in order to make it easier to maintain if future browser versions  
need different code.)

If you want to do highly specific manipulation of the page content  
(as, for example, most Javascript-driven animation), work with  
anything but the most trivial parts of AJAX, and react to more  
complicated events like mouse drags, then you are in for long  
sessions of debugging and lots of browser-specific code.

The good news is that although there are many browsers and many  
versions of each browser, it is fairly easy at this time to make sure  
that your Javascript supports around 95% of them, as long as you  
avoid browser-specific code. As of the end of July, the top five  
browser/version combinations appear to be IE 6, IE 7, Firefox 2,  
Safari 2, and Firefox 1.5. Between them, according to
http://marketshare.hitslink.com/report.aspx? 
qprid=6&qpmr=55&qpdt=1&qpct=3&qpcal=1&qptimeframe=M&qpsp=102
they have just over 95% of the market, with no single other browser/ 
version taking even a full percentage point. (Safari 2 is listed as  
"Safari 41", that being the first two digits of the build number of  
all releases in the 2.x version. These numbers may, of course, be  
disputed, but probably not much.) Well, any Javascript which runs on  
IE 6 will almost certainly also run on IE 7, and any Javascript which  
runs in both of those which runs in Firefox 1.5 will almost certainly  
run on Firefox 2 and Safari 2. So if you just design for (and test  
in) IE 6 and Firefox 1.5, chances are very good that your Javascripts  
will work in all five, and quite probably others as well. More  
testing is better, of course.

And for the last question:

I can't claim to be privy to any special information about  
Dreamweaver and Frontpage. (Other than that Frontpage has been  
discontinued as such, of course. From now on, Microsoft will not be  
including a web page builder in Office, and will be selling a pair of  
programs which will not be called Frontpage.) But it is worth noting  
that such editors have as their primary goal WYSIWYG editing of web  
pages, not large site maintenance. (There are features to support  
maintaining a large site, but it just isn't the main purpose of the  
program.) If the conceptual simplifications for a large site -- such  
as server-side includes, ASP master pages, or consistent use of  
cascading stylesheets -- are beyond you, then Dreamweaver won't  
actually help you very much beyond making each individual page  
editable in a GUI, which may or may not make sitewide changes any  
simpler. For this reason, many developers never really started using  
graphical editors in the first place. (Not that I consider myself  
particularly exemplary, but I do all my development using nothing but  
a copy of BBEdit, along with a couple of open web browsers and a lot  
of page refreshing.)

Visual Basic, on the other hand, is not a web development tool but a  
language/API (like Javascript, except that VBScript generally runs on  
the server instead of the viewer's computer). There is, presumably, a  
trend toward using VB.NET or C# to generate pages directly instead of  
using in-page scripting, since that's a new technology on that  
platform and the people who want to use it are probably moving away  
from in-page scripting, but in-page scripting is still supported and  
probably won't go away any time soon.

You might also, I suppose mean "is there a trend away from code- 
generated pages, such as produced by Visual Basic scripts?" The  
answer to that is a resounding "no". The only significant long-term  
trend is that the number of ways to generate a dynamic web page is  
growing. Microsoft now has at least 6 ways by itself, and they  
certainly don't hold a majority in that game. (I don't touch their  
stuff myself, preferring to avoid people who try to patent logic  
operators; that isNot something I want to get mixed up in.)

I hope this helps. (I also hope I'm not incoherent from hay fever and  
lack of sleep.)

-John Franklin


More information about the Project-Wombat mailing list