I would also like for this (actually, I've even made this suggestion myself, but I fail to find where).IMO tiddlers, as they're currently manifested, are not general enough to be "the smallest semantically meaningful unit". IMO, what is "the smallest" depends on context - but at the very atomic level it must be the field.
Like in a standard database, a field is really just a column title, and the instances of it are the values associated with a key. Tiddlers are addressable by there unique name (a key), even if a field-name is used once, to access its its instance we needs to identify the tiddler title to which it belongs. To me this makes the tiddler remain the "atom" of tiddlywiki, fields are the sub-atomic particles.
If there is a field anywhere (and everywhere) in the wiki called "fieldname" then it is fine to have a single tiddler that describes it. If someone chooses to use fieldname in one set of tiddlers to mean X and in another to mean Y then they are free to do so. They could even note in the fieldname tiddler that fieldname has two or more uses. Extending the Info page to tell you in which tiddlers the field is used and or has a value will help.
In keeping with the field concept I think data tiddlers can be considered external fields,
they define a field, its instances(index name is the key not the tiddler name) and values all in a single tiddler, they are more like a global field not to be confused with others such as Text/Title/Tags so by thinking of them as external fields (for want of a better name) could help. Actually it could be helpful if we (users) could define a global field like text and Tags in a tiddlywiki that exists in every tiddler like changecount (from TWC).
However there is a good argument that maintaining a SINGLE tiddler for each fieldname, and each field name for a documented purpose, is a way of supporting a good naming standard, avoid unexpected results, support self documentation practices and more.
Never the less a Tiddler can be a tiddler with content, including containing text/code (macro) or references to other tiddlers, be a tag and a Field definition all at once. And as in the discussion you linked to, also a variable or container for a variable. It is with this possibility in mind that perhaps a state tiddler should not populate the "text" field but a "value" field in the state tiddler. Although using text should remain valid.
If we are to simplify the syntax I think we may need to start differentiating here because there are constants that can change, things that vary and things that vary within the tree. In someways "currentTiddler" causes a problem because there is a current tiddler "Displayed" and a changing "currentTiddler" as a result of a filter/list. Sometimes the current tiddler is not even a tiddler, or only a potential tiddler. Because I am keen for tiddlywiki to undergo reform not revolution if we keep currenttiddler and introduce a value "displayTiddler" for the parent that is static in the tree below, a templateTiddler when specified for the displayTiddler it would have helped me learn and do things sooner.
Perhaps the whole widget tree idea needs to be made clearer, perhaps by providing tools to navigate it, not through understanding the code but tools provided that help people visualise and tap into it, perhaps even a debug mode so we can see its value changing, Inheritance is is a good example. It is all fine having a many to many quine but a lot in tiddlywiki and the real world uses hierarchies and these should be more available, visible, understandable and reusable.
Tony,I'm unsure if what your last post describe is as things currently are or as you'd want them to be.
But it seems your vision is not to have fields be separate entities like I envision them. But if you're happy to always see them integrated in tiddlers, then what do you mean by first class citizens? You can access a field value from anywhere with {{tiddler!!field}} and you can set fields and remove them.
Warning:In the following I hope it is OK that I also rant a bit and clarify my thoughts/opinions, not as an attempt to hijack your thread but rather to bounce ideas:Like in a standard database, a field is really just a column title, and the instances of it are the values associated with a key. Tiddlers are addressable by there unique name (a key), even if a field-name is used once, to access its its instance we needs to identify the tiddler title to which it belongs. To me this makes the tiddler remain the "atom" of tiddlywiki, fields are the sub-atomic particles.I did not know this. Very interesting view of it, or maybe it is not even a view of it but how it actually is implemented. Either way, very interesting.
My vision is then to rather make the cells be the atomic unit, with the row+column ID equivalent to tiddlertitle+fieldname. I.e an instance of such a unit could be something like "MyCar.Color:blue", where "MyCar.Color" is the unique ID. This unit should be independent - for example it should be exportable to other TWs.
I'll here refer to these cells as fids ("field tiddlers") from lack of a better name. Tiddlers would still have an important role but they are complex entities consisting of fids, but they would probably differ in implementation depending on context/need. (Tiddlers in a notebook TW are probably different from tiddlers in a spreadsheet type TW.)
..but really, the tiddler.fieldname as ID is just a special case. It is two dimensional. The ID could consist of any number of parameters that would also serve as fid kinship (categorization/belongness). For example MyCar.Color.MyWifesCar:blue I intentionally did not use a hierarchical example here, like Vehicle.MyCar.Color:blue because I do not mean a hierarcy. The ID would be more comparable to tags! (OK, probably throw in a unique hash number also.)So another fid might be Foobar.Color.MyWifesCar:whatever and the ID shows clearly shows the partial kinship with the previous fid.The point is that, just like tiddlers, these would be independent units that are still linked to one another. They would be as targetable as cells in a speadsheet but in no way locked in like they are in spreadsheets. IMO this is pure tiddler philosophy. Not that we should be dogmatic about "tiddler philosophy" - I think just think "minimal chunks of meaningful content to create bigger narratives" is a brilliant strongly practical ideal.)
Likely, the most popular use of such fids would be to group tids into tiddlers as they are currently expressed. But not always. :-)If there is a field anywhere (and everywhere) in the wiki called "fieldname" then it is fine to have a single tiddler that describes it. If someone chooses to use fieldname in one set of tiddlers to mean X and in another to mean Y then they are free to do so. They could even note in the fieldname tiddler that fieldname has two or more uses. Extending the Info page to tell you in which tiddlers the field is used and or has a value will help.
In keeping with the field concept I think data tiddlers can be considered external fields,Very interesting!!!IMO, while data tiddlers are pretty concise they are still complex in that they list several more or less independent entries. IMO it would be truer to tiddler philosophy if data tiddlers really were lists of fids, comparable to lists of tiddlers.
Side note: it would be pretty cool to create fids by manually typing a data tiddler type of list, e.g like so:tiddlertitle:Footext:foo1:bar1foo2:bar2foo3:bar3...and, on tiddler save, these fids are created (because they're fully defined). E.g number 2 fid would be Foo.foo2:bar2 ...or whatever the syntax would be - the main point is that this mini-thing defines the entire fid.Recreating the list would be even simpler with something like {{{ [fid[Foo]] }}} ...or with focus on any of the other.identifying.kinship.attributes.that.it.may.have.
...but that was a digress.Back to your thoughts.they define a field, its instances(index name is the key not the tiddler name) and values all in a single tiddler, they are more like a global field not to be confused with others such as Text/Title/Tags so by thinking of them as external fields (for want of a better name) could help. Actually it could be helpful if we (users) could define a global field like text and Tags in a tiddlywiki that exists in every tiddler like changecount (from TWC).What role/purpose would this serve in your vision? (I can, however, see it as part of 'fids' to serve as a part of the ID)
However there is a good argument that maintaining a SINGLE tiddler for each fieldname, and each field name for a documented purpose, is a way of supporting a good naming standard, avoid unexpected results, support self documentation practices and more.
Never the less a Tiddler can be a tiddler with content, including containing text/code (macro) or references to other tiddlers, be a tag and a Field definition all at once. And as in the discussion you linked to, also a variable or container for a variable. It is with this possibility in mind that perhaps a state tiddler should not populate the "text" field but a "value" field in the state tiddler. Although using text should remain valid.Not quite sure what the problem is here. I must assume both the text fild and other fields are "just fields" even if with different properties. It may be aesthetically unpleasing to use the text field for states... but other than that, I don't know.
...If we are to simplify the syntax I think we may need to start differentiating here because there are constants that can change, things that vary and things that vary within the tree. In someways "currentTiddler" causes a problem because there is a current tiddler "Displayed" and a changing "currentTiddler" as a result of a filter/list. Sometimes the current tiddler is not even a tiddler, or only a potential tiddler. Because I am keen for tiddlywiki to undergo reform not revolution if we keep currenttiddler and introduce a value "displayTiddler" for the parent that is static in the tree below, a templateTiddler when specified for the displayTiddler it would have helped me learn and do things sooner.There is much consideration for backward compatibility. Pros/cons with that approach. I'd spontaneously guess that it is not possible to introduce a "displayTiddler" other than perhaps as some alias to currentTiddler. I also think that revolutions (to use your term...by which I assume you mean a total rework, or perhaps a fork) comes when there is enough tension between current status and identified/solvable improvement that it feels justified. The aforementioned backward compatibility approach, probably hastens this process. (Obviously it also takes super skills to be able to pull it off...)
Perhaps the whole widget tree idea needs to be made clearer, perhaps by providing tools to navigate it, not through understanding the code but tools provided that help people visualise and tap into it, perhaps even a debug mode so we can see its value changing, Inheritance is is a good example. It is all fine having a many to many quine but a lot in tiddlywiki and the real world uses hierarchies and these should be more available, visible, understandable and reusable.Considering that I barely know anything about how the widget tree works, I'd like this... but maybe it is more a js matter?
<:-)
I'm unsure if what your last post describe is as things currently are or as you'd want them to be.
I looked at your mangler and thought it was well made and professional. I am only learning about Jason files and did not understand its use case so I will review again.
I am looking to feed a Json file of my large twc tiddlers now in tw5 into a bigdata analysis.
Tony