Looking for the Rosetta Stone

279 views
Skip to first unread message

joearms

unread,
Dec 20, 2018, 6:44:50 AM12/20/18
to TiddlyWikiDev
You'll have to skip to the bottom to read about the Rosetta stone :-)

I hope you won't mind me pointing out the obvious

The list widget is a for loop

that is:

<$list filter=" ...>
    <<currenTiddler>>
</$list>

means:

     output = "";
     for(i in <list of tiddlers obtained from a match expression>)
         output +=   ... $i ...
    end
    insert output into tiddler

One thing I find reading the code and documentation is that it
is less than blindingly obvious to bears of little brains what
the correspondence between the TW way of doing things and
what these things mean in conventional programming languages.

So far I have discovered that

    $set  means "let X = var in ...end "
    $list  means "for i in filter do ... end"

Now in most programming languages we only need a small number of
syntactic constructors (ie things like for loops, if-then-else) and so on

So what is the corresponding set of core widgets?

   $set and $list seem very important - but what else? - I can't see the wood from the trees
what are the other important widgets? - what is the minimal set I should really
understand?

What's this got to do with the Rosetta stone?

The Rosetta Stone was discovered in 1799 and contained parallel texts
in ancient Egyptian hieroglyphics Demonic script and ancient Greek.

This was key to deciphering Egyptian hieroglyphics.

So what I'd like to find somewhere is a Rosetta Stone that unlocks the
secrets of the tiddly language.

Some parallel texts that say things like:

    $set name='x' value='v'     means let x = '   ' in ... end

Would be fantastic


I think of the TW language as being analogous to Egyptian hieroglyphics and the parallel
text as being in pseudo code (anything like Javascript etc would do)

I would be fantastic if  'they  who  speaketh the tiddly tongue' could
provide a phrasebook into more common languages.

(Oh and tag the subject line: "Rosetta stone")

Cheers

/Joe





Mohammad Rahmani

unread,
Dec 20, 2018, 8:33:37 AM12/20/18
to TiddlyWikiDev
Hello Joe,
 I see you are working with TW and raise some interesting and fundamental questions!
Most of them are answered nicely and I see you have very good discussion from programming point of view.

It would be great if you could put these in a TW wiki and share them to community. There is a ready to use wiki to make a resource of such discussion.


For example what you explained in this post is quite informative

   $set  means "let X = var in ...end "
   $list  means "for i in filter do ... end"

I am following up your question and discussions.


Thank you
Mohammad

 

Mohammad Rahmani

unread,
Dec 20, 2018, 8:46:37 AM12/20/18
to TiddlyWikiDev
Joe,
 The Tiddlywiki user forum seems to be more active and seems to have more members, so I also recommend to post there:



Best
Mohammad

Mohammad Rahmani

unread,
Dec 20, 2018, 8:57:39 AM12/20/18
to TiddlyWikiDev
Joe,

 have you seen:

These are list of widgets in TW core:

The below five widgets are my choice for programming TW and I think these are 
  1. list
  2. set (and vars)
  3. reveal (for conditional operation)
  4. wikify
  5. import (scope of variable and private methods)

Other widgets are important for example
  • creating/deleteing tiddlers
  • field operation
  • creating htmls elements (radio, select, editbox, ...)
  • ...

There are expert people over there can explain in more details.


-- Mohammad

joearms

unread,
Dec 20, 2018, 9:40:24 AM12/20/18
to TiddlyWikiDev


On Thursday, 20 December 2018 14:57:39 UTC+1, Mohammad Rahmani wrote:
Joe,

Yes - I wanted to know the most important :-)
 

These are list of widgets in TW core:

The below five widgets are my choice for programming TW and I think these are 
  1. list
  2. set (and vars)
  3. reveal (for conditional operation)
  4. wikify
  5. import (scope of variable and private methods)


Thanks 

Diego Mesa

unread,
Dec 20, 2018, 12:59:56 PM12/20/18
to TiddlyWikiDev
Joe,

Coming from other languages, in my mind the "reveal" widget is the closest thing to an IF. Wikify is a unique construction to TW. Also note that the great Evan Balster wrote a "Condition" Plugin:


which exposes <$if>, <$else-if> and <$else> widgets.

joearms

unread,
Dec 20, 2018, 1:03:06 PM12/20/18
to TiddlyWikiDev


On Thursday, 20 December 2018 18:59:56 UTC+1, Diego Mesa wrote:
Joe,

Coming from other languages, in my mind the "reveal" widget is the closest thing to an IF. Wikify is a unique construction to TW. Also note that the great Evan Balster wrote a "Condition" Plugin:

Goodness - I haven't got to reveal yet. I wouldn't have guessed it was an IF statement :-) 

/Joe


which exposes <$if>, <$else-if> and <$else> widgets.


Nice

Diego Mesa

unread,
Dec 20, 2018, 1:06:34 PM12/20/18
to tiddly...@googlegroups.com
The great Eric Shulman explained it beautifully here:


The bottom line is reveal is a IF statement like this:

<$reveal type="match" default=<<variable1>> text=<<variable2>> >
    ----This content is shown if variable1 and variable2 match----
</$reveal>

joearms

unread,
Dec 20, 2018, 3:08:42 PM12/20/18
to TiddlyWikiDev
Thanks - seems to me that everything I want to know is out there somewhere but not organised 
at one place and in an order that makes sense to me.

I retrospect it would be nice every tiddler has a copyright/reuse field so I know If I can
reuse the tiddler without infringing on usage rights.

/Joe

@TiddlyTweeter

unread,
Dec 20, 2018, 4:14:27 PM12/20/18
to TiddlyWikiDev
Joe, spot on

... info is there but all over the place. Us lingerers kinda figure out how to find it but we should get our act together to make better sense of it and connect it up so it can be found easily. 

... concerning copyright. Probably an easier issue. Plugins often carry copyright/usage terms. I never seen one that was restrictive. Its more likely it doesn't occur to most users to put terms on each tiddler. How about a general TW flag "you can use it" covering all usage unless at tiddler level there is a (c) when a writer needs specific terms?

Josiah

TonyM

unread,
Dec 21, 2018, 5:23:58 PM12/21/18
to TiddlyWikiDev
Joe,

Unless you bring in a tiddler from an external source such as a plugin with its own licence, I belive you can assume every tiddler is operating under the overall tiddlywiki licence.

As an open source project tiddlywiki is not really a place in which to put restrictivly licenced code, but just because I have not seen it yet does not mean it will not happen.

Plugins often acknowledge others in the readme. This seems to be sufficent.

Others will have a more formal view, but to me contributions are typicaly open source and there is little need to manage by tiddler.

Regards
Tony

TonyM

unread,
Dec 21, 2018, 5:23:59 PM12/21/18
to TiddlyWikiDev

joearms

unread,
Dec 24, 2018, 12:58:52 PM12/24/18
to TiddlyWikiDev

On copyright:

I was thinking more of books - there have been several calls in the TW lists for a TW book (and I'd like to see
one - if I knew the TW well enough I could even think of writing one)

The problem is publishers require written authorization notes for everything that is not the original
work of the author.

I asked on the Pragmatic Authors List (where I'm a member) - can I quote a Tweet - answer "You have to get 
written permission of the author" (email is OK)

The idea of cutting and pasting from many of the good tiddlers I've stumbled over would be an
administrative nightmare.

I'd really like to implement the idea of EDLs (Edit description lists) that comes from Xanadu

An Edit description lists tells where everything came from. Imagine a EDL in some synatx:

    ...
    copy 1,400,120
    copy 2,300,68
    data "abc"

[1] [2] etc define some tiddlers
 
   copy 1,400,120

means copy 120 bytes starting at byte 400 from reference 1 to output

   data "abc"

means append "abc" to output

Now if the tiddlers themselves had "licence:MIT, reuse:true" headers
then the EDL could be automatically checked and everybody
could get the credits they deserve.

Of course, maintaining the EDL is something that should be done programmatically.

TW is one of the few programs that comes near to implementing the ideas of Xanadu
- which is why I think it's great.

For authoring high quality documents - the editing and review process is critical.
     
So I'd like to see ways to automate the author <-> editor feedback cycle. 

Cheers

/Joe

PMario

unread,
Dec 25, 2018, 9:14:32 AM12/25/18
to TiddlyWikiDev
Hi Joe,

Everything used from tiddlywiki.com is licensed, based on the following definitions from 2 CLAs



TiddlyWiki code uses: BSD 3-cause
TiddlyWiki docs uses: CC-BY

Every contributor needs to sign the CLA prior to merging the pull-request. Signing the CLA is an "active" process. So it can't happen by accident. The list of contributors can be seen at the end of the CLA.

Every plugin, that can be included with the TW plugin manager has to use the same licenses.

3rd party plguins should have their own licenses, which are completely up to the author. If a plugin itself uses external libraries, the used licenses can add up.

see: https://wikilabs.github.io/editions/markdown-it/#%24%3A%2Fplugins%2Fwikilabs%2Fmarkdown-it ... where my plugin uses BSD 3-clause and the underlying library uses MIT.

I personally don't include the license text. I include links only. ... Because for some of my plugins the license text would be bigger then the "real" plugin content.

If licenses are defined within a VCS (version control system), it's easy to verify, which license was active at any given time. If 3rd party plugins are hosted, without VCS, it will be difficult, since the author can change the library text at any time. So the latest active plugin could have had a different license 2 years ago.

I personally would not want to contribute to the "EDLs (Edit description lists)" because I consider it "bloat of metadata". I'm in favor of having an "audit-able" system, but it needs to come "naturally". So it has to be part of the underlying system, without the need to make the core more complicated. 

IMO a system with much potential for TiddlyWiki is the DAT-protocol and DAT-filesystem. see: DAT-project

It uses a "copy on write" storage system, that is "naturally" versioned. So it's easy to create valid links to licenses, which also include the whole "prose text". ...
 
just some thoughts.

have fun!
mario

joearms

unread,
Dec 26, 2018, 1:56:10 PM12/26/18
to TiddlyWikiDev
Thanks Mario, 

that was good to know.

What concerns me more are TWs I've found "in the wild" - can I quote from them if I can't get permission from the author
and if there are no apparent rights in the TW file????

Cheers

/Joe

@TiddlyTweeter

unread,
Dec 27, 2018, 7:02:01 AM12/27/18
to TiddlyWikiDev
Joe & Mario

My sense of this is ....

1 - Joe, I doubt any of the stuff (i.e. Tiddler text like you see in blogs) you've encountered and want to recycle is in anyway problematic. 
WHY? The creator never thought to (c) it. If they had it would be likely the PAGE would gave a CLEAR copyright statement.

2 - Plugins do tend to have copyright terms. These get automatically transported when you install them.

IN BRIEF ... I would not worry about it.

Josiah

@TiddlyTweeter

unread,
Dec 27, 2018, 7:24:19 AM12/27/18
to TiddlyWikiDev
Mario

Appreciate your detail on this but it misses something.

Say a person writes a Tiddler in a TW of "text to be read". What is the problem copying it if the "site" indicates NO copyright conditions?

Josiah

PMario

unread,
Dec 29, 2018, 7:53:49 AM12/29/18
to TiddlyWikiDev
Hi,

I have to say, that I'm not a lawyer, so take it with a grain of salt!

On Thursday, December 27, 2018 at 1:24:19 PM UTC+1, @TiddlyTweeter wrote:
Appreciate your detail on this but it misses something.

Say a person writes a Tiddler in a TW of "text to be read". What is the problem copying it if the "site" indicates NO copyright conditions?

As you wrote: "text to be read" ... NOT "text to be copy/pasted and republished", so it looks like "your text".

In most countries you can't avoid copyright. It will be there, even if you (the creator) don't mention it. Copyright is a legal right, so it will be different, according to local law. see US-copyright and EU-copyright and others.

There is a mechanism, that is called "fair-use", which handles exceptions from copyright-violations. ... But I wouldn't bet my financial live on fair-use.

As you can see, ... it's complicated. ... BUT it could be so simple! ... if authors would do their users a favour and assign a proper license.

have fun!
mario





PS: A license is NOT copyright is NOT a licence!

PPS: -------- Additional info, ...

As you can see in section 2.1 of TW CLA: Copyright License,

(a) You retain ownership of the Copyright in Your Contribution and have the same rights to use or license the Contribution which You would have had without entering into the Agreement.

This basically means, something that you contributed to TW, still belongs to you, and outside of TW you can do with it, what every you want. So the copyright is bound to you as a person.

Section 2.1 b) allows other TW contributors, to change your contribution. ... So it let's the devs do what they want ;)

2.3 Outbound License, defines TW code is BSD 3-clause and the docs is Creative Commons Attribution 3.0 (CC-BY) ...

Which makes it easier for TW users, because it defines the rights for the whole project. ... in 2.3 we are allowed to do that, because of 2.1 and 2.2.

-m




Reply all
Reply to author
Forward
0 new messages