Programming Industrial Strength Windows

« Previous: Setup, and Down AgainNext: TextEdit Command Index »

Chapter 21: The End of the Road

This is it. We’ve reached the end of the road; TextEdit is done. At least, version 1 of TextEdit is done. There are many things I’d like to change, and there are many features that I’d like to add. In spite of blemishes and imperfections, however, I think the overall design and implementation of TextEdit illustrate my basic arguments. My intention with this book has not been to present TextEdit as an example of a perfect Windows program, but rather to make you think.

About this, for example:

I admit to some suspense as to how the unified file model will actually fare; the industry has decades of conditioning to turn around. TextEdit is an experiment, and the jury is still deliberating.


Let me close with some thoughts and ideas on how TextEdit could be improved. This includes additional functionality as well as improvements in the architecture and user interface, all mixed up.

Some of these are easy, and some are hard. It is never right, however, to just barge in and implement whatever seems easiest or most fun or interesting to implement.

2008 update: Some are also irrelevant. If you want to create a Unicode version that runs well on Win9x, be my guest. I'm not going to, ever.


First, make a list of priorities, of guiding principles that will help you select appropriate features. If you do this in the spirit of TextEdit, rock solid robustness takes precedence over flashy gimmicks, for example.

Next, do the detailed design for the selected features, striving for a conceptually unified whole. If you elect to replace the MRU list with browser-type forward/backward buttons, for example, you should also consider an address field for the file name.

Then, and only then, should you start thinking about the implementation.


In this book, I’ve tried to emphasize the importance of doing things properly, of getting the details right. But no matter how good your intentions, you can’t always do what you like. The marketplace imposes its own constraints, including competitors’ feature sets, impending ship dates and escalating costs. Striking the proper path through this terrain is a difficult balancing act. I do hope, though, that the industry as a whole will start to veer ever so slightly towards a stance of greater responsibility towards the end user. Perhaps the market forces will start to work that way, too, as the global economy comes to rely more heavily upon the correct functioning of software, and ever more software users – and software buyers! – come to realize that efficient flow of information is more important than dancing deodorants.


Do the world a favor. Help lead the way.