TiddlyWiki as a modelling tool - let's discuss

@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

If you want to introduce your project imo the Showcase - Talk TW section would be the right place.

If you want to discuss your project a new thread here in the Discussion section is fine. If you want that a thread is visible, you should create your own thread. Comments like this one are hard to see by other users.

@lucascervera I will review your share and respond tomorrow my time + 12hours from this reply

Thanks Mario. I have added it to the Showcase - Talk TW

1 Like

I have loaded a wiki with your JSON files and see it immediately displaying elements from the semantic-ui “CSS Framework?”. Thanks for doing this.

  • Note: Other frameworks and CSS are available for use in tiddlywiki from font awesome, to basecamp and W3.css but of course these also tend to apply to HTML/JavaScript solutions.
  • Making use of such frameworks, TiddlyWiki needs a somewhat different approach because the “TiddlyWiki Framework” handles immediate refresh and interaction’s. For example we need to use the <$button and <edit-text rather than just HTML/JavaScript.

It would be helpful for us to publish a guide how to make use of such frameworks in TiddlyWiki. Especially if we are supporting “TiddlyWiki as a Modelling Tool” we don’t want to introduce to many undocumented features without guidance.

  • perhaps you could share some of this insight building tiddlywikis using semantic ui?

Hi guys, back to this thread.

We actually prepare building simple modelling tool in TW for ArchiMate models and structures. Here is few of basic concepts:

  1. Element is tiddler with name as name (not caption) and few fields (Type, Specialization, Status, Responsible, Documentation). Text of tiddler is making by transclusion macro {{||element}} and it renders human readable element properties.
  2. Relation is tiddler too. Nothing about tags or contents by field, simple tiddler with fields Type, Source and Target.
  3. Source and Target field has names of tiddlers (source element tiddler and target element tiddler).
  • Everythink about relation content is grabbed by macros from source tiddler and target tiddler.
  • Exporting is done by simple export in CSV format which renders CSV which can be imported to Archi or another tool.
  • Grouping is done by tags, it allows grouping both (elements and relations) to packages and it is possible to have one element in many packages (great, this function absents in architectural tools). Modelling (including to models) is done by tags too.
  • And, we want code some easy forms to user-friendly and easy editing or adding right elements and relationships (for non-architect users).

Thats we brainsorm brainstorm about using TW as simple modeling tool. At this time we wont generate diagrams, because it is not easy to draw relevant elements UI concepts, but we know that this can be done by TiddlyMap plugin with some customisations. But, may be someday…