diff --git a/tw5.com/tiddlers/mechanisms/BootMechanism.tid b/tw5.com/tiddlers/mechanisms/BootMechanism.tid index 73f6a04f7..642341066 100644 --- a/tw5.com/tiddlers/mechanisms/BootMechanism.tid +++ b/tw5.com/tiddlers/mechanisms/BootMechanism.tid @@ -1,22 +1,22 @@ -title: PluginMechanism +title: BootMechanism tags: docs mechanism !Introduction -TiddlyWiki5 is based on a 500 line boot kernel that runs on node.js or in the browser, and everything else is plugins. +TiddlyWiki5 is based on a 600-line boot kernel that runs on node.js or in the browser, with all other functionality dynamically loaded as plugins. -The kernel boots just enough of the TiddlyWiki environment to allow it to load tiddlers as plugins and execute them (a barebones tiddler class, a barebones wiki store class, some utilities etc.). Plugin modules are written like `node.js` modules; you can use `require()` to invoke sub components and to control load order. +The kernel boots just enough of the TiddlyWiki environment to allow it to load tiddlers and execute JavaScript modules. Plugin modules are written like `node.js` modules. -There are several different types of plugins: parsers, serializers, deserializers, macros etc. It goes much further than you might expect. For example, individual tiddler fields are plugins, too: there's a plugin that knows how to handle the `tags` field, and another that knows how to handle the special behaviour of +There are many different types of module: parsers, serializers, deserializers, macros etc. It goes much further than you might expect. For example, individual tiddler fields are modules, too: there's a module that knows how to handle the `tags` field, and another that knows how to handle the special behaviour of the `modified` and `created` fields. -Some plugins have further sub-plugins: the wikitext parser, for instance, accepts rules as individual plugins. +Some plugin modules have further sub-plugins: the wikitext parser, for instance, accepts rules as individual plugin modules. !Plugins and Modules -In TiddlyWiki5, a plugin is a bundle of related tiddlers that are distributed together as a single unit. Plugins can include tiddlers which are JavaScript modules. +In TiddlyWiki5, "plugins" are bundles of tiddlers that are distributed and managed as one; "modules" are JavaScript tiddlers with a module type identifying when and how they should be executed. -The file `core/boot.js` is a barebones TiddlyWiki kernel that is just sufficient to load the core plugin modules and trigger a startup plugin module to load up the rest of the application. +The tiddler [[$:/core/boot.js]] is a barebones TiddlyWiki kernel that is just sufficient to load the core plugin modules and trigger a startup plugin module to load up the rest of the application. The kernel includes: @@ -65,4 +65,3 @@ TiddlyWiki5 makes extensive use of JavaScript inheritance: * Tree nodes defined in `$:/core/treenodes/` all inherit from `$:/core/treenodes/node.js` * Macros defined in `$:/core/macros/` all inherit from `$:/core/treenodes/macro.js` -`tiddlywiki.plugin` files