TiddlyWiki as a modelling tool - let's discuss

For those with a particular interest, or who want to step out of their comfort zone, I want to stimulate a discussion on the use of TiddlyWiki as a modelling tool.

Background
In an off line conversation (with my father) I was discussing complex knowledge / information and modelling problems and realised this a is a key value of tiddlywiki.

I have put similar argument’s in the past, such as how once you have your data in your wiki is is relatively trivial to organise it, or view it in different ways including but not limited to lists, sets, tables, hierarchies and networks to name a few.

  • In some past threads about what tiddlywiki means to people, the metaphor of plasticine (or modelling clay) was a strong one, I think we can “unpack this further”.

Now add custom or global search, and the ability to capture analytics of self use (eg last modified/viewed…) we do have a powerful modelling tool.

Given these flexibilities, it becomes easy to model many things from random ideas to complex structures of knowledge, processes, real and imagined systems or virtual worlds in tiddlywiki.

  • Models can be exploration and research and the act of attempting to build a model, even if you don’t succeed, can still have benefits. Building a model may help you identify missing information, or identify structures and relationships you were not aware of.
  • TiddlyWiki supports the development of multiple and simultaneous models of the same information. Alternative “world views”.
  • There are many default, automatic and additional methods to develop “referential integrity”. From propagating the renaming of tags through to using relink including against additional fields. This allows data and models to remain valid even when change happens.

For discussion

  • What types of models are you aware of, and which, if any, have you or others modelled? Tell us about any you have seen or heard about?
  • What features in tiddlywiki help or hinder model making in tiddlywiki?
  • What examples help illustrate what modelling is for naïve or expert users?
  • Does/will tiddlyWiki as a modelling tool resonate as a reason for tiddlywiki?
  • What is something you have/would like to model yourself?
  • What issues lay nearby or tangentially, to the concepts of modelling such as using a model to drive processes from operational, tactical, strategic and contingency perspectives (I just added contingency to the list because of a serendipitous discovery), another I commonly add is “blue sky”, the dreamy/creative end of strategy.
  • What features would improve the capacity of tiddlywiki to model different things we encounter?

I look forward to your ideas on even one of these modelling related issues.

Is it possible for you to give a specific example of using TW as a modelling tool, can be a hypothetical one? I am just not sure I understand the subject matter.

Yeah, I’m thinking the same. @TW_Tones , what do you mean with “model” here? In some sense I don’t use TW as a model at all, but in another I guess any abstraction or representation could be called a model so then everything in TW is a model…

yes @Maurycy as @twMat says. I think for those who think this way it is obvious but most people would not have come across this way of looking at things.

Recent discussions such as the GTD methodology includes a flowchart, this can be considered something to model. Others include Gaming worlds, Railroad systems, Genealogical trees, Books for Authors to write/structure a book. Others may include subject areas like All Pasta, Archaeology and geological epochs.

TiddlyWiki is not necessarily these things themselves, but a representation of these things, a model.

Feel free to ask for further clarification but do ask with examples if possible.

I agree with this line of thought. We have started to use TW as a business modeling tool. Using coreBOS as a business framework where you can customize the application to many many business requirements, we are capturing those needs in a TW for each company, modeling and documenting the needs of the company, and then easily creating the necessary configuration objects directly in coreBOS.

So we are modeling specific business processes (BPMs) in TW.

2 Likes

@TW_Tones Gotcha. Then I think my main problem with giving some feedback might be that I think treating it as a “modelling tool” is too generic scope to be able to have a meaningful discussion about it. What I mean is that the answers to the questions you posted in the main thread will vary wildly depending on what type of modelling you’re doing. Or perhaps it all just sounds too academic for me to have an intuitive grasp given my lack of academic background.


Nevertheless! I’ll treat this as “What challenges have you encountered that relate to TW fundamental behavior” because I think it should match “What features in tiddlywiki help or hinder model making in tiddlywiki?”.

And I can answer that!

Relations:

  • 1:1 relations are fairly easy – you can use tags with the name of the other tiddler or a custom field in either tiddler.
    • Adding metadata is not an issue, you can use fields.
    • If you decide to use tags for the relation, renaming will update the tags.
    • But if you use a custom field links will get lost with rename!
  • 1:many relations are also, for the most part, without a problem:
    • If you use tags on the many tiddlers you can then use fields for additional metadata and renaming will be handled.
    • If you use list field¹ on 1 tiddler then you can still store metadata in the many tiddlers, and rename will work.
    • But if you use a custom field on many tiddler you have the same problem as with 1:1 relation.
  • many:many relations are the worst:
    • If you don’t need to store any metadata for the relation you can use list field¹ on both sides.
    • But if you need metadata the only way to go is tiddlers defining the relation and… here start the problems:
    • Orphaned relation tiddler if you remove either or both of the linked tiddlers
    • You can’t use tags or list field because you need to know which linked tiddler does what, so renaming either will break the relation.

For my Task List plugin I have many:many relations and I had to solve both of the problems using JS. As far as I know there is no native way to do it and that’s what I’d call a hindrance.


Footnotes:

¹ - If you try to use listops filter operators with tiddlers that contain spaces in their name you’ll have a bad time, but that’s not a fundemental problem of TW.

2 Likes

I have used TW cljassic as a model for writing a set of complex gaming rules. All was to be done by hand. I haven’t restarted this project yet. The problem was to be able to get both a wiki and a linear book out of it (epub or ddf). I shall try again for sure but when?

I’m also presently using TW as a whole system for recording a11y tests and reports from them. I had built a SGBDR within TW to record my 1:n relations. There is a problem in that it can very slow on very complex reports. On building them but also on display, as in TW most displays are dynamic.

Something that I lack is a way to track orphan when some tiddlers are staticly orphan but not dymaicly orphans. I would help ensuring a better quality.

1 Like

I have ‘Modlled’ a simply supported simple beam so the forces around a joint can be found.

evan’s spreadsheet formula plugin is awsome. (Formulas for TiddlyWiki — spreadsheet-inspired number crunching)

https://hwh.stephenteacher.com/Simple%20Frame%20Calc.html

So mathematical and physics models are definitely doable!

2 Likes

I am EG architect and I am totally blind, so modelling tools are important part of my SW toolset. I am using TW for modelling, especially architecture in ArchiMate and “from and to” knowledgebase.

For example, we have https://architektovani.tiddlyhost.com (in czech language, about knowledge architecture) and in this wiki we model knowledge architecture metamodels.

  1. Every ArchiMate metamodel concept is one tiddler and tiddlers have some atributes in text, for example ArchiMate language element type (BusinessActor, ApplicationService, etc.) - because TW automatically support CamelCase linking, they are linked to conceptual types in their tiddlers.
  2. With Free links plugin we can EVERYWHERE in wiki automatically link metamodel names in every tiddler´s texts. It works great, because whole content is clickable and we dont must add glossary and metamodel description to every document in wiki, super!
  3. I am developing some scripts to automatically get models contents (in CSV files) and possibility to generate (with transclusion) some additionals models.
  4. Every tiddler I am tagging to thematic folders (tags with folder emoji for better understanding that tag is folder). This is great for transfering some thematic part of knowledgebase to another wikis or exporting them (for example to CSV for Enterprise architect).
  5. I am lazy at this time, but in future I want to create scripts for automatic generating complex architecture (models in CSV, diagrams with PlantUML generated from data tiddlers and documentation with transclusion and wiki-text templates) for easy-to-use custom architecture for small units of public administration organizations in Czechia.

…and I am using TiddlyMap plugin to build some visual models of knowledges, unfortunatelly their editor isnt accessible, but I can still make connections in Map toolbar button.

3 Likes

It sounds great. Have you some tips or guidelines for business proccesses modelling in TW, for example some templates? :slight_smile:

I think the relink-plugin is able to handle that. It also gives you more possibilities to “show” relations in the tiddler (i)nfo area.

1 Like

As a data scientist in agriculture, I am interesting to use TW as a tool for visualisation our complex datasets.

The dataset is very complicated so that it is not easy to only handle in TW. External tools are required to conduct data analysis and then push results into TW (e.g. R, Python, or other domain software).

I am thinking the main benefits of TW over other tools (e.g. R Shiny, Rmarkdown, Python notebook, Asp .Net Core) including

  • no overhead to configure and maintain a web server.
  • Easily to privately share with other colleagues.
  • Wiki text is easy to use for adding and updating contents.
  • Organise contents in a single file

Still trying to figure out a better way to achieve my target. But TW sound a promising tool for me.

1 Like

Just add the relink plugin and configure your additional fields in it.

I am on the road so cant give a full answer but I have solutions to all your pecieved problems with relationships. Could be a thread of its own.

In fact some recent discussions I have being involved in relate to the use of additional list fields. Adding titles to list fields containing spaces etc… can use the format operator and work if used the the right way.

Simply thinking of relationships as set membership is helpful and bringing in common concepts like indexes help build many to many.

If you provide your own buttons for tiddler creation, deletion and relationship assignment you can ensure referential integrity for any complex relationship. However I am working on customisations of tiddlywiki to make this appear generic.

All thanks for your comments. We have started with tiddler relationships but what other methods help us with modling ?

3 posts were split to a new topic: How to improve TiddlyWiki for users with assistive technology

Methods to help us with modelling;

To bump this topic I will add something.

“relationship handling” or “referential integrity”

When building models we are keen to ensure they do not break, this can be referred to as “relationship handling” or “referential integrity”. Key parts of this need are;

  • delete/rename inhibition if some criteria are not met
    • Eg; don’t allow delete if the tiddler has children, propagate a rename where needed eg in fields of other tiddlers.
  • delete/rename intervention:
    • Eg: allowing delete but trigger some clean up actions, ensure a rename does not damage relationships.
  • Update parent or children where necessary.
    • Eg; If I rename a parent update the children and “vice versa”.
  • Ensure new tiddlers created in a particular context are given the required values so as to exist within the appropriate part of the model
    • Eg; the New Here button, tags a the new tiddler with the current one, and as a result maintains the integrity of the TableOfContents if the current tiddler is already in it.

Ensuring “referential integrity” can be adopted at various levels.

  1. Designer supplied tools eg; have a tool to manage items we want to maintain referential integrity for.
  2. When using standard tools like the delete button, or edit to rename
  3. When writing buttons/widgets while designing the solution
  4. Attempting to ensure no additional macros, widgets or plugins can act in a way to break the referential integrity.
    4.1 This depends on methods to trap attempts by any core widget or macro to modify a tiddler we wish to retain the referential integrity for.

The relink plugin goes a long way to dealing with this if you include additional fields in its settings. It does not handle the delete case.

  • Relink supports the above levels (except delete) of 1 and 2 and the designer may be able to take account of this for level 3.
  • I don’t think its supports level 4.

Visualisation is a big part of modelling, ideally to achieve;

  • Intuitive communications - eg icons that represent something in the content
  • Presenting complex information in an easy to see way
  • Analysing and graphing
  • Introduction of special symbols eg Unicode and Katex

Do you use visualisation in your models, please share?

I have used tiddlywiki to build a proof of concept of an application that lets you create and manage business models. You can see it in action in this video: https://brainn.org.

You can get an idea of how it works by watching the video. I am amazed of how far one can get with tiddlywiki. Thanks to the community behind tiddlywiki. I am planning to launch a preview version soon, to test the interest of the market. Before making it public I need to clean the code (I am not a programmer and have learned tiddlywiki on the go, so the code is an absolute mess, though it works)

To handle many:many relations I use a “relation toddler” with a source field pointing to one tiddler and a target field pointing to another one.

I am very interested in this topic.

2 Likes

Thanks for sharing, it looks like a great project, along the lines of similar things I too am exploring. Unfortunately I don’t understand your language (I hope you do mine) but it was still inspiring.

  • You are using a lot of different visualisations for different aspects of your model. Do consider modularising them for reuse in other designs and sharing them separately from your model. This would allow others to;
    • Share/Reuse your design elements
    • Contribute to improvements on a per module basis
    • Benefit yourself from modularised design

Hi @TW_Tones , thanks for your answer.

I have added English subtitles to the video (https://brainn.org)

I have also published a json file that lets you use semantic ui in tiddlywiki. I am still not familiar with the tiddly talk usage guidelines, Should I post it in a new thread?

Hopefully, I will be creating modules and publishing them soon, but I will need some guidance on how to do it. Is there any useful documentation on how to get started.

I will also be happy to hold a videoconference with anyone interested in my project.

1 Like