Hi Jeremy,

To have two unique tiddler fields in JavaScript would mean using a separate 
> hashmap for each field that we want to enforce uniqueness. It would 
> considerably complicate all the low level operations involving tiddlers. 
> Right now, TW can be fast because the tiddler store is a very thin wrapper 
> around JavaScript's native storage mechanisms.


I already figured that there would be some performance drawbacks or 
complexity-issues when using ids as a parallel mechanism, however, thanks 
for explicitly highlighting this point.

The bit that you don't have is enforcement of the uniqueness of the ID, 
> though.


That is true, I pray to god that the javascript function never creates the 
same id twice.

My preferred solution to the breaking links problem is also a solution to 
> wider problems of wikitext authorship: a decent search and replace 
> operation that is syntactically aware; it can reliably find and replace all 
> the references to a tiddler (without being confused by plain text 
> references to the same text).


That would be a nice solution, similiar to refactoring-dialogs in modern 
IDEs, however, this is also extremely complicated to program as the issue 
becomes quite complex.

Sorry for labouring the response to your points; I just figured it may be 
> useful to lay out some of the reasoning.


That's ok. :) I regard my original question as answered.

Regards
Felix

Am Dienstag, 3. Juni 2014 11:05:28 UTC+2 schrieb Jeremy Ruston:
>
> Hi Felix
>
> That said, I apologize for bothering you with my newbie-opinions or 
>> questions, but from my understanding
>> it is possible to have more than one unique-field that identifies a 
>> tiddler. Similar to SQL
>> where I can have several unique attributes in a table that each could be 
>> used to identify a row.
>> If a new tiddler is created, the system only needs to ensure that the 
>> title AND the id is unique.
>>
>
> To have two unique tiddler fields in JavaScript would mean using a 
> separate hashmap for each field that we want to enforce uniqueness. It 
> would considerably complicate all the low level operations involving 
> tiddlers. Right now, TW can be fast because the tiddler store is a very 
> thin wrapper around JavaScript's native storage mechanisms.
>  
>
>> From this point on, it is the decision of the user to reference the 
>> tiddler by id or by title.
>> As written above, I have introduced this mechanism in my wiki and it 
>> works well.
>>
>
> The bit that you don't have is enforcement of the uniqueness of the ID, 
> though. One could imagine adding tools that prompt you if you've got an ID 
> clash, and that wouldn't be ridiculously expensive. But making it a 
> properly enforced constraint is expensive.
>  
>
>> Providing a build-in alternative to a reference-by-title concept for 
>> those who want it would be a nice
>> feature because links wouldn't break. Maybe it's not a common issue but I 
>> found a threat on stackexchange
>> where a user had the same problem:
>>
>> http://webapps.stackexchange.com/questions/22850/changing-the-name-of-a-tiddler-in-tiddlywiki-and-retain-the-references-pointing
>>  
>>
>
> Link breakage is definitely a common problem. As I said at the top, I'm 
> keen to support the ID way of working as an option (using the title field 
> as the ID), but I don't think it's practical to enforce multiple unique 
> fields on the tiddler store.
>
> My preferred solution to the breaking links problem is also a solution to 
> wider problems of wikitext authorship: a decent search and replace 
> operation that is syntactically aware; it can reliably find and replace all 
> the references to a tiddler (without being confused by plain text 
> references to the same text).
>  
>
>> In any case, I fully support your choice to use the title as unique 
>> identifier and if TW internals
>> do not allow the introduction of such a parallel-concept then it is 
>> totally fine. I think TW is
>> great and offers much flexibility either way!
>>
>> So thank you for your work and your previous answers.
>>
>
> Sorry for labouring the response to your points; I just figured it may be 
> useful to lay out some of the reasoning.
>
> Best wishes
>
> Jeremy
>  
>
>>
>> Greetings
>> Felix
>>
>>
>> On Monday, June 2, 2014 6:46:26 PM UTC+2, Jeremy Ruston wrote:
>>
>>> Hi Felix
>>>
>>>>
>>>> By the way, is there any reason, why the tiddlers do not get a unique 
>>>> id on creation time as a field value per default?
>>>> This would support people to create unbreakable references via ids, 
>>>> without the previous effort to give each tiddler a unique id or creating a 
>>>> custom button.
>>>>
>>>
>>> That's the unavoidable, perennial question referred to above. A simple 
>>> formulation is: do we use the "title" field as the identifier for a tiddler 
>>> the "title" field, or do we use a separate "ID" field. The two options 
>>> can't co-exist, we need to choose one. TiddlyWiki chooses the former on the 
>>> basis that is a more human formulation, and that it can trivially emulate 
>>> the ID approach. But that is done by using the title field as an ID, not by 
>>> introducing a new ID field. The reason is because of the need to enforce 
>>> uniqueness: we guarantee the uniqueness of titles, but not of other fields.
>>>
>>> Best wishes
>>>
>>> Jeremy.
>>>
>>>
>>>
>>>
>>>
>>>> Regards
>>>> Felix
>>>>
>>>>
>>>>
>>>>
>>>> On Monday, June 2, 2014 5:02:33 PM UTC+2, Jeremy Ruston wrote:
>>>>
>>>>> This question of whether tiddlers should be identified by title or by 
>>>>> an abstract GUID is a perennial one.
>>>>>
>>>>> My aim is that users should be able to use GUIDs for tiddler titles if 
>>>>> it suits their use case. The missing piece is a way of linking to a 
>>>>> tiddler 
>>>>> by it's GUID/title, but having a specified field displayed as the text of 
>>>>> the link. Here's an example of a macro to do that:
>>>>>
>>>>> \define link(guid)
>>>>> <$tiddler tiddler="$guid$"><$link><$view field="name"/></$link></$
>>>>> tiddler>
>>>>> \end
>>>>>
>>>>>  This is a link by guid <<link qqu99yie1>>
>>>>>
>>>>> Of course, it would be more useful if one could arrange for that macro 
>>>>> to be automatically substituted for links.
>>>>>
>>>>> Best wishes
>>>>>
>>>>> Jeremy.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Jun 2, 2014 at 2:57 PM, Felix Küppers <[email protected]> 
>>>>> wrote:
>>>>>
>>>>>> Well, I know linking via ids is not readable in edit mode, however in 
>>>>>> a non-edit mode, the id translates to a name, so that is ok for me.
>>>>>>
>>>>>> As for semantic-alias (i.e. a real second title) vs. ids, I rather 
>>>>>> chose ids as their purpose is only to allow exact references. same as in 
>>>>>> SQL autoincrement primary keys...
>>>>>> And I rather place them inside a field because I like them to be more 
>>>>>> "invisible" as they have no semantic meaning.
>>>>>>
>>>>>> However I took a closer look at you example in your space and it is a 
>>>>>> really nice workaround you are using, I mean exploiting the 
>>>>>> masking-title 
>>>>>> of the link as a variable to use it in a local macro.
>>>>>>
>>>>>> This way I could do something like
>>>>>>
>>>>>> {{ 415241 | id }}
>>>>>>
>>>>>> and put the filter in the macro instead of directly writing
>>>>>>
>>>>>> {{{ [field:id[]!has[draft.of]first[]] }}}
>>>>>>
>>>>>> that will make a nice shortcut...
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Monday, June 2, 2014 3:30:38 PM UTC+2, Stephan Hradek wrote:
>>>>>>>
>>>>>>> I can't see a fundamental difference between my alias approach and 
>>>>>>> using IDs. Except that ID's tend to be unreadable.
>>>>>>>
>>>>>>  -- 
>>>>>> You received this message because you are subscribed to the Google 
>>>>>> Groups "TiddlyWiki" 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 http://groups.google.com/group/tiddlywiki.
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> -- 
>>>>> Jeremy Ruston
>>>>> mailto:[email protected]
>>>>>  
>>>>
>>>
>>>
>>> -- 
>>> Jeremy Ruston
>>> mailto:[email protected]
>>>  
>>
>
>
> -- 
> Jeremy Ruston
> mailto:[email protected] <javascript:>
>  

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" 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 http://groups.google.com/group/tiddlywiki.
For more options, visit https://groups.google.com/d/optout.

Reply via email to