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:Foo
text:
foo1:bar1
foo2:bar2
foo3: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?
<:-)
--
You received this message because you are subscribed to the Google Groups
"TiddlyWikiDev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/tiddlywikidev.
To view this discussion on the web visit
https://groups.google.com/d/msgid/tiddlywikidev/82990c03-0e3d-4bcb-9228-e5f64ba0587a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.