Towards Web-based Word Processors p2

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
  • printing
  • 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 (

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:

  1. track changes. Yes the famous track changes, common to many word processors and sometimes called ‘Record Changes’ etc
  2. ability to create a document outline / ‘table of contents’
  3. insert special field / meta data (date / page number / time / author etc)
  4. annotation / commenting features
  5. bibliography control (including citation / reference placement etc)
  6. hyphenation control
  7. thesaurus control
  8. grammar check
  9. CRUD form elements
  10. create and insert charts
  11. create and insert basic shapes (with colors)
  12. ability to extend (typically via macros)
  13. footnote and end note support

…and, interestingly, the following document formatting features:

  1. ability to set style palettes
  2. ability to set page size
  3. margin control
  4. pagination support
  5. page numbering
  6. ability to create, modify, delete and use document templates
  7. 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 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 that’s 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…that’s the topic of my next post in this series!

Some links


Coko Products

I am currently planning how to keep all the Coko projects balanced and moving forward. It gave me a moment to reflect on just how productive we have been. At present we have 6 major products, all moving forward at an excellent pace, they include :

  1. PubSweet  – the API toolkit for building publishing workflows (website coming soon).
  2. INK – the file prosessing (conversion, extraction, enrichment etc) framework.
  3. Editoria – the monograph production platform for publishers
  4. XSweet – the XSLT production for converting MS Word to HTML (HTML Typescript)
  5. Wax – the web based word processor built on top of libs
  6. xpub – the (early stage) journal platform.

All this in less than 18 months, which is amazing enough but also consider that Coko was only 3 people (with Jure being the only developer) until 12 months ago. Its kind of astonishing to me.

The invisible skill

I do a lot of facilitation and I’m very good at it. I don’t know how I came to be a facilitator exactly, it’s not the sort of thing I think you go to school to learn. It just somehow comes out of you bit by bit on a road to achieving something else entirely. In my case, I think it came about while trying to build FLOSS Manuals (a community that produces free manuals about free software). FLOSS Manuals (FM) needed content, and I realised that it was not going to happen at the scale needed if I wrote it all myself. So I had to learn to build community and building community requires facilitation (even if you don’t know it at the time).


Anyway, long story short, I became a facilitator the hard way – by not knowing that it was facilitation that I was doing. I had no context. ‘How you get things done’ in the world seemed to be all about the doing of those things. If you want to write software manuals, for example, you wrote manuals. That is what publishers and author, editors etc did. Who ever heard of facilitation in the context? No one that I could find.

So it took me a while to even realise that facilitation could play a role in making manuals (books) and I only had that realisation after I first tried it the publishing industry’s way and failed. It’s even fair to say that I had no understanding that facilitation could have a role in helping people to make books until I had been facilitating people to make books for many years. I was that blind to the idea. Instead, I had this strange, slowly evolving awareness that somehow when I got people in a room and I was there also, then books resulted. It seemed like it was the participants that ‘were doing it’ and, bizarrely, every time we did it, it worked, every time we did it it was better than the last time, and I happened to be there to witness it.


It took me some time to work out that this result was because of the role I played. It took a very very long time – I would say, possibly, 2-3 years. The awareness didn’t come in one shot either. I first thought it must be the process that made it work. So I started trying some stuff out. I remember very strongly thinking that there was this process that actually existed, like publishing processes exist, and that it was concrete and tangible, but it was just that it was unknown.  As seriously kooky as that might sound, that’s how I thought of it at the time. I felt I was discovering something that pre-existed, some process that just needed to be revealed.

Then, slowly, after Book Sprints were really kicking ass and producing remarkable books I’d have thoughts like ‘I wonder how important this process is?’ I wonder if it might actually be me that is the most important ingredient. Not me in an egoist way, like Adam Hyde is the only person that can do this (interestingly, other people thought this might be the case!), but maybe that it is not so much the process but what I am doing that is making this work.


So comes the understanding of the extremely interesting and tangled relationship between facilitation and method. I spent many years untangling it and now I think I have a 1.0 understanding. Like, at the school of facilitation if you get this idea, then you are actually allowed to call yourself a facilitator…. it is that basic, and that central to what facilitation is. My un-battle-hardened synopsis is this series of truths might seem a little contradictory: a good facilitator is better with a good methodology. A good methodology is nothing without a good facilitator. And a good methodology to a good facilitator is nothing but an interesting yet weak navigational instrument.

Anyhow. My sum of this is that I often get people telling me they would be a good facilitator for this or that, or that they would be if they had the opportunity. I also see a world where methodology is seen as king, you just need to read it and follow it to the letter and you’ll be sweet! I can’t blame people for this. How could I when it took me so long to understand that facilitation was a thing? I can’t blame people when they think it’s something anyone can do. But of course, I do find it frustrating. I’m no saint! But after many many years of practice and experimentation, pondering, trying things out when I was terrified they would fail, failing, succeeding, mentoring others to do it well, exploring the weird psychology of it all, seeing others do it so very badly – I can now say I know what facilitation is and how special it is to be able to do well this invisible skill that so many do not know even exists.