I wanted to give the group a brief progress report on the TiddlyWiki5
development work. You can see the latest code at
http://tiddlywiki.com/tiddlywiki5

The heart of TiddlyWiki is a representation transformation engine that
converts tiddlers between different forms (for example, wikitext to
HTML) and can selectively update the representations if the underlying
tiddlers change. This engine has to satisfy many constraints in order
to be flexible enough to run on the server under node.js or within the
browser, and to be efficient enough to serve as the basis for the
interactive features of TiddlyWiki.

There are still quite a few features to be implemented, such as
slices, sections and filters, but the basic design of the engine is
now complete. Over the last few weeks I've been gradually adding more
experimental interactive features, notably the slider and chooser
macros, so that I can verify that the design is adequate to support
the interactivity I'd like.

Over the next few weeks I'll be filling out the available macros,
matching all of the core TiddlyWiki ones. The next big area is to
implement editing, which I'm thinking through now. I'm hoping to have
something usable by the early summer.

Some characteristics of the new engine compared to classic TiddlyWiki:

* Everything is a macro. In classic TiddlyWiki the main story column
and individual tiddler links behave somewhat like macros, but are
treated completely differently. Now, they are both implemented as
macros. This change makes the design easier to hack and change, and
makes TiddlyWiki easier to comprehend, because it reduces the number
of entity types one has to learn about.
* No cookies. The idea is to store user interface state data in
tiddlers instead. You can see this in the story and slider macros. The
story macro takes as a parameter a reference to a tiddler containing a
list of tiddlers. To display a new tiddler one just adds it to the
list, and the story macro will automatically refresh to display the
newly added tiddler. Similarly, the slider macro can optionally store
its state in a specified tiddler. One can then flip the slider open or
closed by setting the text of the tiddler to "open" or "closed". See
the tiddlers SliderTests and StoryTiddlers to see these features.
* Efficient sliders. The content of sliders isn't rendered until the
slider is opened for the first time
* Base64 embedded images and SVG tiddlers
* Syntax highlighting for JavaScript tiddlers and fragments. Tiddlers
of the MIME type application/javascript are parsed to an abstract
syntax tree which enables syntax elements to be colour coded. In
addition, comments are treated as wikitext. See the tiddlers
TypedBlockTests, SampleJavaScript and SampleJavaScriptWithErrors, and
the TiddlyWiki source code tiddlers whose titles start "js/"
* Syntax highlighting for JSON tiddlers and fragments. The CSS is
pretty terrible at the moment; see SampleData
* Safe inclusion of tiddlers containing untrusted JavaScript. There
would be a lot of work to fully implement and verify this feature, but
the idea is that by parsing and recompiling the JavaScript code we can
use a combination of static analysis and code injection to ensure that
it doesn't do anything bad.

Under the covers, the API for creating and saving tiddlers is much
simpler than before. For example, here is the code that updates the
ClockTiddler:

                window.setInterval(function() {
                        me.store.addTiddler(new Tiddler({
                                title: "ClockTiddler",
                                text: "The time was recently " + (new 
Date()).toString()
                        }));
                },3000);

Finally, my approach to the user interface of TiddlyWiki5 is to try to
design it for touch and mobile first (see the tiddler
UserInterfaceSketches). With that in mind, I've been experimenting
with a pervasive new 'chooser' that makes it quick and easy to locate
and open tiddlers. Right now it's just an alphabetical list of tiddler
titles, but it's going to evolve into a full hierarchical menu. I made
a short video to demonstrate it on the ipad here:

https://vimeo.com/38496125

You can follow the development along at https://github.com/Jermolene/TiddlyWiki5

Best wishes

Jeremy

-- 
Jeremy Ruston
mailto:[email protected]
http://www.tiddlywiki.com

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWikiDev" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/tiddlywikidev?hl=en.

Reply via email to