In case you're curious, this is how Bean: a Word Processor for OS X came about.
Writing fiction (short stories and novels) has been a passion of mine for a long time. I wondered how possible it would be to create a word processor that works just the way I do. And so, I set out on the path that would lead to the creation of Bean. I suppose this is why painters sometimes resort to mixing their own pigments, why fiddle players resort to making their own fiddles. It's not necessary for what they do; yet, the process of creating the tools needed for a medium serves to deepen one's understanding of that medium. In fact, this pattern has emerged in my life: I create in order to understand.
There are many people who use Text Edit and wish it had a live word count and adjustable margins. Truth be told, Text Edit is a bit uninspiring because the interface stems directly from Cocoa's text object and the Objective-C messages it expects. With Bean, I strove for beauty and user-friendliness, so I began with the interface and worked backwards. Still, Bean is just a wrapper for Apple's NSText object, which itself is a refined version of the text object NeXT developed more than ten years ago. Also, all document format conversion in Bean is handled by Cocoa. So all of the heavy-lifting in Bean programming-wise is done by OS X's Cocoa frameworks. I would not have coded Bean if I had to do it on Windows.
In planning Bean, I studied "Lean Word Processor Specifics," by Marten van de Kraats. Also, I took his advice and studied the old, beloved word processor WriteNow, which van de Kraats and others have called 'the best program ever written.'
Pretty much, I was able to implement all of van de Kraats specifics:
Something I decided to skip, after much soul-searching, is footnotes. Adding footnotes is difficult for a number of reasons. For one, Apple's RTF implementation doesn't understand footnotes, although this can be overcome. Also, the algorithm for balancing footnotes with text would have to be very smart. For instance, the first five words of a long document (say, "In the beginning, God created...") might require fifteen pages of footnotes. These have to be balanced with the text somehow. And, if you're writing all that special page layout code to accomplish this, you might as well do sections, columns, floating graphics, etc., and before you know it, you have MS Word!
Another thing missing in Bean is hierarchical styles. I know there is a camp out there for whom hierarchical styles (Heading1, Heading2...) is the be-all and end-all of document creation. The exemplar of this is TeX (pronounced /tek/), the markup language where you tag bits of your document, then compile it with a style sheet. The opposite of this is "narrative" markup, where you simply apply different styles to text here and there (which is in fact what Bean, and RTF in general, does). In no way do I mean to minimize the importance of hierarchical styles, which are necessary for professionals to create documents that are consistent and professional-looking. It's just that in 20 years of using word processors, I've never used them. Not even once.
About Bean, some have said, "Why switch from Word? It has everything that I need!" So, keep using Word; I used Word for years and was reasonably happy with it. But Word is a big brute of a program. Sometimes using Word is like going out for lunch and getting this huge platter of greasy food when all you wanted was something light, like half a sandwich. I suppose, if we extend that metaphor, the after-meal indigestion would be equivalent to seeing that post-crash "Recovered" document in Word and wondering which version it is and what to do with it.
The feedback from users of Bean has been brilliant. One user, Laurent Baumann, even designed a new set of icons for the app and the toolbar, for which I am deeply grateful. Many of the features added to Bean in the several versions before 1.0 were the result of user suggestions and feedback. It's unbelievable how much I learned by communicating with people all over the world about things related to Bean.
Some people wonder about the name Bean. The name is a wordplay on Java and Cocoa, two programming buzzwords. Plus, it's cute. I really did not want a generic name like "Pro Writer 3000, Express Edition." Also, I didn't think the world needed another icon featuring a piece of paper and a ball-point pen! As Laurent pointed out, coffee is a 'tool' that many writers (and programmers) use. So that's the tool you see in the icon.
I am not a programmer. I taught myself what I know of Objective-C and the Cocoa frameworks using the references I had available. The cost was minimal, except for time. The Xcode tools are free with OS X (on the installation disk). Cocoabuilder.com and cocoadev.com are also free and are great resources for when you run into a wall. Apple provides sample code, and open source code examples are available on the internet. Although the Cocoa frameworks are not open source, there is a similar open source implementation of the frameworks called GnuStep, which can assist in understanding the inner workings of Cocoa.
Programming has been a fun hobby for the last two years or so...but watch out, it's addictive.
James Hoover
(Revised 25 March 2008)