To get this discussion off the ground, I think it’s helpful to first think of what the standard features of a text editor are since word processors have all these features and then some. It’s the ‘and then some’ that I’m most interested in i.e. the essential features that make something a word processor.
Text Editor Features
So, here is my first stab at defining the features of a general, all-purpose, text editor. Keeping in mind that there are no strict rules to this and all category clumpings for this entire discussion are necessarily loosey goosey… text editors include the ability to:
- open, update, and save a suitable document, format, and store (eg on the file system or online) for recording the text.
- CRUD (to slightly abuse an acronym used in programming) text ie Create, Read, Update, and Delete text. I include here the ability to add/update/delete via normal keyboard input as well as common cut and paste tools.
That is actually it – the core feature set for a basic editor. A text editor doesn’t need to do much more than this.
Then there is another set of features that your favorite text editor may have (most text editors have some of the following) while still remaining a text editor. I want to categorise these as text editor features (most are related directly to editing text) and they include the ability to:
- select text
- select single and multiple block level items (eg paragraphs)
- apply inline styles (such as italics, bold, underline, strikethrough etc)
- apply subscript/superscript
- spell check (to varying degrees of sophistication)
- find and replace characters and words (to varying degrees of sophistication)
- calculate a document-wide word count (including possibly character count, line count etc)
- add and remove tabbed space / indents
- create, modify and remove hyperlinks
- add and remove images
- apply block level (eg para/image) justification / alignment
- undo / redo edits
- undo formatting
- add special characters (including diacritics)
- apply block level formatting eg heading 1, heading 2, paragraph, block quotes etc
- add, modify and remove colored highlighting to text elements
- add. modify, and remove text color
- ability to set the document language
- support for right to left, vertical, and left to right word orientation
- table support (create, modify, delete)
- show invisible characters (line breaks, para breaks etc)
- CRUD Math and display math in correct fonts and layout
- export to various document formats
- the ability to change fonts per selection, style and document
- the ability to change character size
That’s a good starting list. Undoubtedly you will be able to think of more. If you think of anything critical you think I missed, either add a comment to this post or email me (firstname.lastname@example.org).
Word Processor Features
So, what does a typical word processor have that a general purpose text editor doesn’t have? I think it is really, at present, a small set of features which inhabit two categories – content processing and document formatting. First, content processing:
- track changes. Yes the famous track changes, common to many word processors and sometimes called ‘Record Changes’ etc
- ability to create a document outline / ‘table of contents’
- insert special field / meta data (date / page number / time / author etc)
- annotation / commenting features
- bibliography control (including citation / reference placement etc)
- hyphenation control
- thesaurus control
- grammar check
- CRUD form elements
- create and insert charts
- create and insert basic shapes (with colors)
- ability to extend (typically via macros)
- footnote and end note support
…and, interestingly, the following document formatting features:
- ability to set style palettes
- ability to set page size
- margin control
- pagination support
- page numbering
- ability to create, modify, delete and use document templates
- header / footer control
Web Based Word Processing
So, why am I going through the rather mundane task of separating a list of features of text editors vs word processors? Well, its because when it comes to publishing we talk far too much about editors, and we don’t go far enough to define what it is we need from them. Far too often the tacit understanding is that we need good online text editors when we actually mean word processors. Hence our designs and requirements fall short of what publishing requires.
Not so? Well, take a look around. I see many projects suggesting we need to bring publishing into the web. Great, I agree completely. Implicit in that is the need to have good tools for changing text in the browser. Yet how many open source tools do we see that fill out the list of requirements for word processors that you see above. I don’t see any. I do see Google Docs, but that is closed source, suffers from insufferable UX (user experience design), and we can’t customise it, extend it, and integrate it into publishing workflows. So it is more or less useless to us. Same with what ever Microsoft is doing in this area (I would guess, I don’t know the MS Live product in any detail).
I also see attempts to make an online version of LibreOffice. But, I have to say, this so far looks horrible. Picking up a desktop app and just transferring the user interface and all the internal thinking ‘into a browser’ is not the same as making a web based word processor.
So, just so I get this all out there. Making a web based word processor that is open source, reusable, and native to the web is what the Wax editor is all about. Wax is a new product coming out of Coko and it aims to be a highly customisable, highly extendable web based word processor. It is built on top of the Substance.io libs. Wax so far supports some of the word processor features listed above, however our aim is to componentize it so others can jump in and help us fill out the rest.
But thats not the end of the story. Bringing word processing into the web is not just about a translation of a desktop word processor to the browser. You need to embrace the web and extend the concept of word processing into a browser-based, shared document, networked environment. That means extending the concept in some areas, and potentially closing down some ‘old fashioned’ ideas. Where does that point to exactly? Well…thats the topic of my next post in this series!