Slashdot Log In
Creating Applications with Mozilla
from the lizard-is-the-new-black dept.
On the first and most obvious level, the book is just the typical, thorough treatment of the important APIs that we've come to expect from O'Reilly. There are chapters addressing all of the important layers of the Mozilla platform and plenty of examples that show you how to customize the platform. Some may want to change the icons and others may want to add more robust features. The range of possibilities is surprising and coders are creating one-to-one communications enhancements, add-on widgets, and even games. There are certainly some things missing, and some areas that could use more detail or more complicated examples, but the book is already 454 pages long.
On another level, this book is also one of the first finished documents that explains what the Mozilla group has really been up to for the past five years. Some have abandoned the project, and others have attacked it as fundamentally misguided. This book shows why it took so long by demonstrating all of the cool features added during the long march to a new, thoroughly extensible architecture.
Are the results enough to justify the time and the effort? Some note that the features may be a bit overhyped, because building your own browser with the Mozilla API is like making a pizza with $15 and a telephone. While there's a large part of the book devoted to the work you can do to change the look and feel of the buttons on your browser, the book and the project offer much more. The Mozilla project is one of the biggest threats to simple tools like Visual Basic to come down the pike in some time. The various layers offer many ways to provide good, customizable interfaces to databases, the web, and much more. I can see how many corporate development shops may want to start making Mozilla the platform for a license-free front-end, simply because it's a straightforward tool without extra costs or restrictions.
At the most abstract level, the book is a great way to get a taste of modern software development. Computer scientists sometimes fix problems by adding more and more layers of indirection. This may not solve anything, but at least there are hooks for a real solution to use some time in the future if some one ever does figure out how to make the box do it. The Mozilla browser is one of the most extreme examples of this philosophy to ever emerge. Emacs was something special, but this is even more insane. Everything can be changed around by rewriting some XML and Javascript and most people don't need to juggle the pointers in grubby C to do amazing things. I realize it's not as beautiful as Lisp to some, but it's got a clarity and level of abstraction that's stunning to behold. Lisp was just procedural, while XML is more like logic programming.
This relentless customizability embodies one of the deepest reasons for the success of open source. Technology is inherently complicated and the only way we can use it is if we can look under the hood. You can say all you want about CVS trees and bazaars filled with competing code, but opening up the interface is one of the most powerful themes of open source. It's not about teaching people to build their own VCR or PVR from scratch, getting the VCRs for free or even debugging the VCR's source code -- it's just about making them easy enough to program.
The book illustrates how Mozilla opens up the API to create a relatively easy language for people to use. The real open source is not the C in the tar ball, but the XML interface spelled out in the book. Many people feel that the most important thing that the first browser designers did was make it easy for people to see the HTML tags marking up the document in front of them. The new Mozilla takes this transparency to a new high.
If you look at the book at all of these levels, you can see that this is one of the most important documents to emerge from the open source community in some time. At first glance, it's just another set of APIs for us to wiggle. I realize it's not fair to credit the Mozilla team or the book authors with creating the browser or XML ex nihilio -- they just jumped on some of the most popular bitwagons propagating across the Net. But the result is a stunning completion of a very important and cohesive vision. The book doesn't crackle with bleeding-edge novelty, but shines with the certainty of a job well-done.
Peter Wayner is the author of Translucent Databases , Disappearing Cryptography , and a number of other books. You can purchase Creating Applications with Mozilla from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
XML is amazingly powerful (Score:5, Informative)
Furthermore, and of particular interest to someone like myself, the XML format offers a number of advantages for computational physics: clear markup of input data and results, standardized data formats, and easier exchange and archival stability of data.
I will definitely use a few dollars of grant money to purchase this book and keep it in the labs for all to read and enjoy.
Lisp is just procedural?! (Score:3, Insightful)
Online book (Score:5, Informative)
The real problem here (Score:4, Insightful)
This is why stuff like TCP/IP and "C" took off, because they were in the hands of a standards body who were responsible and considerate of issues like this.
The Gnu/Open Source community needs to take into consideration that since they are working their way into the mainstream they *must* begin to be more proffesional and intelligent in matters of "standards" or they risk alianating the commercial development community.
That would be a serious mistake on their end, serious indeed.
Warmest regards,
--Jack
Re:The real problem here (Score:5, Interesting)
The TCP/IP effort was very focused on standards and interoperability. That's what the U.S. Department of Defense, which funded the effort, wanted, because they wanted all their computers to be able to talk to each other. (Back then, IBM, DEC, Xerox, etc. each had their own network protocols, all incompatible.) The DoD project management people were very insistent on this; a formal DoD TCP/IP standard was pushed through. The individual implementations were forced to comply. (The Berkeley BSD crowd had to be hammered on a bit; they'd gone off on a LAN-only tangent for a while, neglecting long-haul issues.) And it worked.
C was the creation of two people. K&R C was rather PDP-11 oriented and lacked a real type system, but UNIX took off within the academic community before C was standardized. ANSI C came years later, so the UNIX world was still on K&R C years after the DOS world used ANSI C. Eventually, everybody settled down on ANSI C, but it took a while.
Parent
Indeed (Score:3, Interesting)
For a group of people which rely on so many open standards (and indeed, complain when companies don't use them!) I've yet to see little progress here on ensuring XUL remains an open standard. Which is a pity, because otherwise it has little to recommend it, no matter how extensible it is.
Also, does anyone here know anything about performance issues? Visual Basic nowadays is fairly reasonable for certain aspects of enterprise solutions, but if this is anything like Mozilla I'm not sure I could recommend it as being a good platform for applications.
Re:The real problem here (Score:4, Informative)
Having said that, 99% of XUL is now solid anyway. If you develop apps, the syntax may change or more likely you'll get new features, but if you then want to upgrade to that version of Mozilla, you can simply run the old XUL through some XSL transforms. It's the same as with any API really, except it's easier to upgrade/alter XUL.
Parent
Any questions for the author? (Score:5, Interesting)
Re:Any questions for the author? (Score:3, Funny)
You will be having dinner in Ireland near a college?
I don't think you guys are going to be sober enough to deal with too much tech details tonight.
Author giving talk tonight in TCD, Ireland (Score:3, Informative)
Komodo Mozilla based non browser application (Score:3, Informative)
ActiveState http://www.activestate.com (The Perl,Python,PHP,Tcl people) have a great IDE application written on the Mozilla engine called Komodo, it's up to version 2 now and certainly worth checking out.
Now if only ActiveState would just open source it, after all it's base is open.
XUL (Score:3, Informative)
it was rough in the begining since i had people that were not using mozilla and even now some people just use mozilla because they have to.
but the power of the lists, tabs, etc are awesome compared to having to write javascript/layers/etc crap that takes more effort than the cgi environment to code.
i love it
You need to "get it." (Score:5, Informative)
There are a couple of very interesting examples developed using this technology out already:
- OEOne [oeone.com], a complete desktop environment.
- Kimodo [activestate.com], a python and perl IDE.
I myself am working on a Bible program that will run, locally, under Mozilla. This is probably the future of desktop application development for most stuff.Mozilla Development (Score:5, Informative)
I've been developing a Mozilla-based application component since August 2001. It's an HTML-rendering MOO client [www.moo.ca], and recently I've been pouring some 90% of my free time into working on it.
75% of that 90% of my free time lately has been updating the application to newer standards which have come into place since August 2001. For example, the Navigator/Mail/Editor/Chatzilla options used to be on the 'Tasks' menu in Mozilla, and were moved to the 'Window' menu around 1.0rc1. Bang, suddenly my application stops working properly, and less importantly, stops being a friendly component which works like all the others. A patch from a friend moved just about everything over to the 1.0rc1 way of doing things, and all was fine. Not everything worked flawlessly, though. The 'MOO Client' menu option didn't have an associated key visible, and the 'Window' menu inside MOOzilla didn't have any visible keys. The menus inside the application had long since stopped graying-out/disabling properly depending on what you have selected in the window. Many hours of last weekend was spent fixing these problems by conforming to new command handler expectations, and so on. (Where 'new' means 'changed since 0.9.6'. ;))
XUL is a wonderful tool. However, it runs dog slow on OS X. You don't have to take my word for it, just look at the Pheonix project. Pheonix is available for Windows and Linux, but not for OS X. Why? Because Chimera exists for OS X, which is faster (I'm using it right now) and integrates with the OS better. But... it doesn't support XUL. That's why it's faster. So where is my Mozilla application left? Stuck in the massive Mozilla suite when it's run in OS X. Mozilla, at startup, uses over 120 megs of RAM on my TiBook. Thank God for good VMs.
When initially writting MOOzilla, the XUL documentation was shit. The only place to go for any idea of how things really worked was deep inside the Mozilla source. And sure enough, this worked. The official XUL documentation at that time had sections which trailed off in 'blah blah blah' often because someone got bored of writting. I specifically remember it once read 'This is very important because blah blah blah'. Arrrg! How frustrating!
Mozilla is a powerful application development environment. XUL is a wonderful tool. Books like this one are going to make the world a better place for Mozilla component developers. And more cross-platform software developed with Mozilla makes the world a better place for users. Now... if only we can somehow apply this book heavily to the head of people who don't want to download Mozilla to try out an application, because they don't want to use it as a web browser. *sigh*.
Re:Mozilla Development (Score:3, Informative)
By the way, where were you when the Moz developers were saying that 1.0 was supposed to be the stable API to work on? I applaud you for developing on Moz, but to state that you had no warning about an API changing from under you is foolish. I'm sorry for your pain, but you knew that you were holding a hot poker.
So it gets a 9, big suprise (Score:4, Insightful)
Re:You're absolutely right - this book review suck (Score:3, Interesting)
Sounds like he talks about what can and can't be done with the code samples and even a bit about a few of the individual chapters. He just didn't do one of those boring Slashdot reviews that goes through each chapter one by one. I can get the chapter breakdown from the book's website.
And if you ask me, knowing what to do with the XML is pretty important. If the Mozillians are smart, then that means there's something of value int he book. I really don't want a well-written, witty book about how to write assembler code. Dis
database applications (Score:4, Interesting)
The book is good and interesting, but it reminds me another book, Programming Jabber [oreilly.com]: a lot of examples in the book, and no available examples in real life (besides Jabberd itself).
This is NOT a book review (Score:4, Insightful)
The book itself *IS* good (at least that which I have read so far). You'd never be able to tell from this review though....
Data based GUI (Score:3, Interesting)
I laud Mozilla for going down this road and it is clear to me that the core developers for Mozilla are a step above your standard programmer. Some accuse Mozilla for not following a method that would create "standards" for their XML GUI description language, but I have found that the successful "standards" usually follow already adopted and reasonably mature technologies. You do not know how you want to design something until you have done it, used it, and given it to other people to play with. Only after an application has grown sufficiently to include all the thousands of unexpected details is it sufficiently mature for people to talk about standards. For example, I consider the EJB specification's largest failing is that they tried to standardize it before it was actively used for a couple of years. Only now that we have some mature app servers do we really have an idea what needs to be in the core EJB specification. If EJB had followed this road, maybe application developers would not need to use vendor specific code for the critical parts of the functionality. Like OO, the mantra of "standards" seems to be more of a marketing tool to get Fortune 500 companies to cough up millions of dollars than something that really influences how sophisticated and successful applications get developed.
I have my own questions for the Mozilla team. How do you deploy "overrides" of existing configurations. Suppose I want to deploy a "batch" of changes that I want to turn on or off. Is there a way to create configuration "layerings" in XML files so a group of data specifications can be conditionally included from a set of external files? How much scripting is allowed in these files? If I want to write conditional code for specifying a color (such as a color choice per day of the week), is there a way to write scripting solutions for that need? Of course, I could read the book but I am lazy and I suspect that it would not give a full answer.
It isn't necessarily a web application. (Score:3, Insightful)
That being said I run mozilla on mac os 8, 9 & 10, linux, solaris and windows. I'm not sure what the problem would be.
Re:Standards anyone ? (Score:3, Redundant)
Besides, Mozilla technology is available on most important platforms by now.
Re:Standards anyone ? (Score:4, Interesting)
It seems Mozilla is working closer and closer to being an OS than just a browser. Kinda funny if you think about it, where MS has windows which was supposed to be an OS and is now including a browser.
Parent
Re:Standards anyone ? (Score:5, Insightful)
What is doubly amusing is that when Microsoft attempted to kill (perhaps did kill) Netscape, they did so because they were scared the browser would turn into a platform that would let you write kickass apps making Windows irrelevant. In a way, this became a self-fulfilling prophecy, as if Netscape hadn't been taken over by AOL and left to do its own thing, would Mozilla (a platform as well as a browser) exist today?
I doubt that one day all desktop apps will be written using Mozilla. But it's an intriguing possibility, I look forward to the GRE with much interest.
Parent
Re:No, what's amusing... (Score:4, Informative)
All that IE does for Quicken is allow Quicken to use it as an HTML renderer. This is much different than Mozilla which can create a standalone application. The Quicken developers had to use C++ of VB or whatever and embed the MSHTML control into it. Mozilla does not require anything in addition to the package itself to create a new application. So even though this isn't necessarily new, it's definitely a lot more than IE can do on it's own. Plus you can embed Mozilla into apps like Quicken as well. Topstyle [bradsoft.com] does a great job of integrating IE and Mozilla side by side using this technology.
Parent
Re:Standards anyone ? (Score:3, Funny)
Eventually Mozilla will become emacs.
Re:Standards anyone ? (Score:5, Insightful)
Nope.
Can my IE web app run on almost every platform out there?
Nope.
Can I modify IE in case I need additional functionality?
Nope.
There's the tip of the iceberg in differences...
Parent
Re:Standards anyone ? (Score:3, Interesting)
Let's see... can I embed IE into my web app?
Nope.
Yes you can. I've done it before, and I currently use three different programs with IE integrated.
Can my IE web app run on almost every platform out there?
Nope.
You're right about this one, but for most commercial apps, hitting 99% of the users is pretty damn good. You can't please all the people all the time.
Can I modify IE in case I need additional functionality?
Nope.
Yup, you sure can. I run a customized version of IE for a few special projects.
Oh yeah, and this has all been true for several years now.
So, 2/3 were flat wrong, and the third one was pretty irrelevant. All in all, I gotta say this was a *very* professional troll. Blatantly wrong, and intentionally inflammatory.
Re:Standards anyone ? (Score:3, Interesting)
Point two is not only correct, as you yourself admit, but is most certainly not irrelevant as you claim. Between desktop boxes, PDAs, embedded systems and non-Windows PCs, IE does not have a 99% market share. I think that perhaps you are confusing a particular segment (commercial retail) of commercial software with the universe of commercial software.
Point three is probably correct despite your denial. I'm fairly certain that the previous poster was referring to mshtml.dll and not IE itself. While IE provides a powerful and flexible toolkit, the fact remains that if there is a need to alter the core behavior of the toolkit there is no method for the developer to do so aside from petitioning Microsoft to change the behavior. This is not the case with Mozilla.
Re:Standards anyone ? (Score:3, Insightful)
Re:Standards anyone ? (Score:3, Interesting)
I use a customn app that I wrote that is completel automated using the XML object that comes with IE. You don't need the source since you have access to every possible property/method in every DLL, and they're all documented. If you have to muck with the source, that's because the program itself doesn't work, or has a shitty API. IE works and has a very extensive API. Has for years.
And no, of course you can't use it on Solaris. But, I'm not aware of a whole heck of a lot of products that would need to be ported to Solaris (Quickbooks for Solaris? I don't think so.).
So yes, you are completely wrong.
Re:Standards anyone ? (Score:3, Insightful)
Not sure whether it will catch on, but it's nice that they make it easy for other developers to benefit from all the work that's gone into coding Mozilla.
MS has been pretty damned sure. . . (Score:3, Insightful)
Hint: It was *not* to simply have the most popular browser that they made no profit on.
KFG
Re:Standards anyone ? (Score:5, Insightful)
An example of this kind of thing would be Komodo [activestate.com], an IDE for Perl/Python/Tcl/ development.
I seem to recall that some use MSIE as a component architecture to develop generalized applications in much the same way, but I can't think of any examples of this right now.
Parent
Re:Standards anyone ? (Score:3, Interesting)
Good examples would be Oddpost [oddpost.com], an email app that launches from the web, and RhymBox [rhymbox.com], a Jabber client.
Note that I've spoken to the froods who did both of these projects, and they've been constantly hitting the wall in terms of what IE can do. RhymBox now uses quite a lot of ActiveX code in order to work around the general lameness of using DHTML .hta files for the ui.
Re:Standards anyone ? (Score:5, Interesting)
This article is about the mozilla application framework. The application can be a stand alone application! This is not some kind of "mozilla only webpage."! This is just a method for creating an application that uses parts of the mozilla codebase, or more appropriately (though you and the mdos don't seem to understand the meaning of this) the mozilla application framework.
Parent
Re:Don't click on Slashdots book link (Score:5, Informative)
Parent
Even Less Ethical Than Spam (Score:4, Informative)
Parent
Re:potential of mozilla development (Score:4, Informative)
Parent
Re:potential of mozilla development - db's? (Score:4, Informative)
It's a little different if you are talking about accessing client-side data sources. Mozilla/XUL is (kind of) a virtual machine (VM), meaning it doesn't intrude too much upon the client's OS. But, XUL/XPCOM has bindings for all kinds of programming languages, such as C, C++, Perl, Python, Ruby, and the list keeps getting longer (Good intro here [ibm.com]). Thus, on the client-side you can use the database capability of any of these to talk to the Mozilla elements. I'm sure it wouldn't be too hard to whip up just a little communication between Mozilla and ODBC
Parent
Re:potential of mozilla development (Score:4, Interesting)
I really DO believe that Mozilla has a bright future in this regard. It provides some great tools. I about wet myself when I discovered the Javascript Debugger! As the article says, it will provide a totally free/Free way to deploy custom applications.
It's also a potent tool against IE's monopoly. If there's one thing that can cause people to switch from IE to Mozilla, it's applications that only work in Mozilla! I used to support the "Best Viewed with Any Browser" campaign (which is still appropriate for pure information) but I have since realized that because Mozilla is Free, open, and cross-platform, there is no need for anything else! I now encourage people to develop web-based applications in XUL.
I do have a few small gripes with it. Textboxes don't wrap like they do with HTML's "wrap=soft" attribute. That's bad. I asked in a newsgroup and was told that this functionality would be in Mozilla 1.2.
Also I was hoping to embed an HTML editor in my application, so that people could post HTML in their comments and have a fancy editor for them. To my dismay, it appears like the HTML Composer can ONLY be embedded in local chrome:// apps, not in those served by HTTP. Anyone know a way around this?
Overall though, Mozilla kicks arse! I think it has a very bright future!
Parent
Re:potential of mozilla development (Score:3, Informative)
Re:Current Applications? (Score:4, Informative)
Parent
Re:Current Applications? (Score:4, Insightful)
In short anywhere which requires a web-oriented application (preferably cross-platform) would do very well to evaluate Mozilla as a development platform. I expect database and server-side apps will ship in due course with applications based on Mozilla to do form design and other administrative tasks in a cross-platform manner.
Parent
Re:the important part (Score:3, Informative)
But have you dabbled with web design? If the answer is yes, then you can write Mozilla apps. It's due to this fact that it's so easy to write patches for Mozilla. XUL (which if you know html is easy), CSS and JavaScript are all you need to know.
You could well be a programmer with Mozilla, and never know what a pointer is.
This is a rip off of the book's preface (Score:3, Informative)
Re:My Review (Score:4, Insightful)
Folks, this is a rip of the preface of the book.
Have a look for yourself [mozdev.org] and then mod this troll down.
Parent
Re:Examples? (Score:4, Informative)
Parent
Re:God Damn It That's My Pot Pie Kitty! (Score:4, Interesting)
Where the contention comes about is in how fat the client should be. IMO, most or all the functionality should be on the server, with the browser being Turing-dumb. (I drafted an XML protocol called SCGUI to do just this.)
However, some people and applications are going to want/need client-side scripting. If it gets to be too much client-side scripting, then you have essentially created a client-server application. That is probably what Mozilla should *not* target.
I guess what I am trying to say is that there is a need that Mozilla can fill and that I hope it does not get carried away in an Emacs-ish way.
That niche is an HTTP-friendly GUI browser with *optional* scripting capability to have *some* local Turing-complete application programmability sprinkled in. IOW, get right what HTTP+DOM+JavaScript could not get right.
But, if they make it a fat-client client-server tool, then slap them with a wet Visual Basic box.
Parent
NI! (Score:5, Funny)
And here I thought he was one of the knights who say "Ni!"
Parent