KeyNote 2.0 Development FAQ

Last updated: 21 May 2003
The latest version of this file is available at http://www.tranglos.com/free/knt2devfaq.html.

When will KeyNote 2.0 be released?

As soon as it is ready! I am not being flippant; I simply cannot offer a reliable release date. Please keep in mind that this is a hobby project, that I'm working on a few other hobby projects at the same time, and preparing the release of my first shareware project. This, of course, in addition to my real-life work. KeyNote 2.0 is going to be a huge improvement over the current version, which also means its complexity is an order of magnitude higher. If you're interested in seeing version 2.0 released as soon as possible, consider assisting me in the project.

Will KeyNote 2.0 be available in languages other than English?

Yes. At this time (May 2003) I have completed work on the localization engine which will be used in all new applications, including KeyNote. To see it in action, you can download Oubliette version 1.9 or later. The localization mechanism does not support double-byte characters, however, so some languages will be excluded. For more information please see the Localization forum.

I want to help with developing KeyNote. What information is available?

What new features are planned for KeyNote 2.0?

In general, here is what you can expect:

Precautions to take when testing demos, prototypes, alpha and beta versions

First, never replace your existing 'live' copy of KeyNote.exe (or its associated files) with any demo version. Create a copy of your KeyNote installation and use the copy for testing, or install the demo version in its own, temporary folder as appropriate. Expect bugs, expect crashes, expect data loss. Never run any demo, prototype or alpha version with your personal data. Always create copies of your data files and work on the copies.

Will KeyNote use XML to store its own data?

No. I do not believe XML is a suitable format for the type of data KeyNote needs to store. The "human-readable" aspect of XMl does not apply, because RTF data (and other binary information, such as images, as well as HTML) would have to be base64-encoded for XML storage. Also, other formats can provide for much faster reads and writes than XML would. If you still want XML, feel free to develop a converter. I will provide help with regard to KeyNote's native file format, but with XML itself, you'll be on your own.

What about a database backend for storing KeyNote data?

Nope. KeyNote must be a self-sufficient, standalone application. I don't want to make it dependent upon any database package, even if it's free and open-source, especially that such packages are typically much larger and more complex to deploy than KeyNote itself.

Will KeyNote 2.0 support storing attachments inside .knt files?

Too early to say. It depends partly on what new file format is going to be used. If you need such functionality, you'll probably be better off with zip (or tar) files and storing hyperlinks to those files in KeyNote documents. Storing attachments (or embedding files) inside KeyNote's native data is being considered, but it's not a priority issue.

Is the current (version 1.x) file format documented?

Yes. Please download the KeyNote file format specification. The package includes detailed description of the file structure, additional notes and example .KNT files.

By far the best documentation is KeyNote source code. You can download the full source code (see below) and see how KeyNote saves and reads its files. The format is fairly simple and, depending on what you're trying to do, you may not need to access all the information in the file. The full source code is somewhat large, but you'll only need to look at three files: kn_FileObj.pas, kn_NoteObj.pas (separate routines for saving simple and tree-type notes), and kn_NodeList.pas. Please note that the current file format will change heavily in version 2.0; you may want to consider this before creating any tools that work with the current file format. (KeyNote 2.0 will of course be able to read 1.x files, so it's OK for third-party applications to create files in 1.x format.)

Where can I find information about the new (version 2.0) file format?

The new file format has not been established yet. When it happens, information will be posted to the -dev list and will be available here. Version 2.0 file format will be fully documented. Meanwhile, if you subscribe to KeyNote-dev, you can still have a say in what the new file format will be.

Where can I find KeyNote's source code?

Version 2.0 source code will be available from SourceForge and tranglos.com, but it does not yet exist. The current (1.x) source code is available here and here.

Notes on new terminology

After a lengthy debate on keynote-dev and lots of excellent suggestions, the following terminology changes have been introduced:

KeyNote "files" are still "files", but this may change depending on what file format is ultimately chosen.

Will there be a Linux version?

* No, unless you write one. I have no knowledge of Linux programming and really no desire to learn it, sorry. (This should not be interpreted as a put-down of Linux. I simply do not have the time, and Linux is unsuitable for my everyday work and play, so I'll stick to Windows for the foreseeable future.) Further, in order to port KeyNote to Linux I would have to purchase Borland Kylix (the free version can only be used to create GPL-licensed applications, which KeyNote is not). I would gladly accept a gift of Kylix, but I probably wouldn't be able to make constructive use of it, anyway.
You may be able to run KeyNote (version 1.x) under Wine. If you have success that way, please let me know and, if possible, write a detailed How-To, which I'll post on the website.

Will KeyNote be ported to PDAs, such as Palm or PocketPC?

* Not by me, or not as freeware. The issues here are very similar to the issues related to a Linux port. I would first have to learn C (two to three years at least; you probably don't want to wait that long) and then I'd have to purchase development tools for PalmOS (or PocketPC). If you'd like to work on a PDA port yourself, I'll do my best to help you on the KeyNote/Windows side, so please let me know if you're seriously interested in it.

Will KeyNote 2.0 support Unicode?

* No. Delphi has no support for Unicode, which means that I would have to create from scratch all VCL controls that display text, no matter how simple (TEdit, TCheckBox) or complex (TListView). A freeware set of Unicode-enabled VCL components by Troy Wolbrink is available here, but KeyNote uses a lot of customized controls, which add functionality to standard VCL widgets. If I were to use Troy's set, I would again have to re-create all the added functionality. In other words, here's a job looking for a volunteer :-)

Will the rich text editor in KeyNote 2.0 support headers, footers, columns, tables, on-the-fly spellchecker, footnotes, endnotes or other advanced editing features such as those in Word?

* KeyNote's RTF editor can only support the range of editing features which are built into the standard WIndows richedit control (riched20.dll). Please read the main KeyNote FAQ for more.

Will KeyNote 2.0 have its own spellchecker?

* At the moment, it is unlikely. I have yet to investigate a number of options, such as hooking into the open-source ispell engine.

Will KeyNote 2.0 be able to display more than one note at the same time? Will I be able to see or edit two notes (or nodes) simultaneously?

The existing interface (tabs plus trees) makes it rather cumbersome to add yet another layer to the UI. Also, there are serious issues with preventing users from editing the same note in two instances of an editor at the same time (much the same as editing the same file in two instances of KeyNote). I'm investigating the options here, but it is not part of the current design.

Will KeyNote 2.0 support concurrent access to files? Can several users read and write the same file at the same time?

* Unlikely. Such a facility requires a very complex solution, beyond what I can take on at the moment. Of equal importance is the fact that KeyNote is targeted at individual users, rather than corporate / network environments. The amount and complexity of the work involved here do not justify, in my view, the relatively small number of cases where concurrent access would actually be used.

Will there be a web interface to KeyNote?

* Please contact me if you can provide assistance in developing it.

I'd like to help with designing graphics for KeyNote. What's required?

Please see this detailed document.

Important addresses and contact information

* If you're a programmer and would like to help develop any of the design elements or mechanisms marked with a red asterisk, I will appreciate if you contact me: but please do so only if you're prepared to write actual code or offer programming expertise.
Valid HTML 4.0!