In the spirit of Open Dialogue - Avoiding the - Yet another Plugin?

That is you reaction to the use of the word failure not mine.

I did not say that. Please read the content and understand it before you flame. I suspect you are reacting because of other replies.

@Charlie_Veniot
You do not know what you are talking about if you are talking about what I said.

I am sure what I am trying to say in this Topic is something I belive based on more than decade with tiddlywiki and a perspective that understands what less technical people face using tiddlywiki. Although I am always happy to revise a position based on reasonable feedback but few of you have replied in a substantive way to my argument, or few have even tried to understand it.

Few have asked what did you mean by something?, they have just said I am wrong.

Just look at my contributions and kindness toward people in this community and ask yourself if it does any good to attack a regular and prolific contributor with such vitriol.

1 Like

That’s a very good conclusion. I agree with it. Users tend to use what they know, because it seems to be easier and faster. For “me” as the only user of that work it probably is …

IMO Tony is right too. If you know JS it may be faster for you. But the solution is “hardcoded” in a way that cannot be easily changed by others. TiddlyWiki WikiText is designed to be editable and reusable by ordinary users. That is an advantage.

Which leads us to the next conclusion …

… There can never be enough documentation. But documentation is a community effort.

I don’t want to derail this thread, so I’ll add a link to a “to be written thread”, which will link to some resources here at Talk, how users can contribute to the TW docs.

5 Likes

Tony has always been one of the most cooperative and active contributors to this community. When I was test-driving TW around 5-6 years ago, his detailed guides to my beginner questions on Google Groups were a big reason for convincing me to make TW my notes app. I said to myself, “Wow, TW has a helpful community. It is worth investing time in. If I get stuck, someone from here will definitely help me.”

We must judge a person as a sum of his past contributions rather than a single post.

JS vs. TW

I have noticed this issue more than often leads to unnecessary friction in the community. I don’t know what the reason is and why people feel so strongly one way or the other. But this “JS vs. TW” tag of war undercurrent is always there.

I felt it in the Google Groups, too, from more than one member and in both directions.

Curse of Open Source

More often than not, open source projects form internal factions, which turn into zealots, and then bitter fights break between them.

I have seen it in heated debates on Vim vs. Emacs, Vim vs. NeoVim, Vim plugins vs. native commands, Gnome vs. KDE, GNU vs. Linux, etc.

To outsiders, these bitter debates would seem frivolous. But these quarrels erode the community. There is a reason why “this is the year of Linux desktop” never materialized.


Agree. The syntax documentation is complete, IMO. What we need are use-case based tutorials. For example, “List tiddlers you created on a certain date.” This tutorial will teach a bit about filters and ListWidget. I have some plans for tutorials, but first I need to learn TW. :smiley:


Another problem I have is that the investment in TW is not transferable to any other project. Investment in TW will only help you in customizing TW. This is not true for other tools that support Lua, Python, or JS plugins.

What are your thoughts on this?

1 Like

I think that’s not the case. TiddlyWiki brought me to HTML, CSS and JavaScript.

I did know and used several other programming languages for my professional carrier. I did programming and teaching in Assembler, C, Pascal, Ladder-Logic and other IEC61131 automation languages.

So JavaScript was “just an other c-like” language, with an interesting twist [1]. It was developed for the Web and now browsers dominate the world.

I didn’t have any relation to HTML and CSS prior to stumbling upon TiddlyWiki. So TiddlyWiki brought me to the web. …

Not as a consumer … but a creator. … And from my point of view that’s one of the superpowers of TiddlyWiki, that it can do that.

I think there is no other system, which can be used as a UI rapid prototyping system, where the same code can be used for a production system. That’s a huge thing.

About: rapid prototyping

The purpose of a prototype is to allow users of the software to evaluate developers’ proposals for the design of the eventual product by actually trying them out, rather than having to interpret and evaluate the design based on descriptions.

Just think about the Stroll project. It takes on Roamresearch, which is a big company. But @DaveGifford repetedly “calls” himself a “non programmer”. … Think about that. … IMO that’s fantastic.

There is problably more, but that’s my thoughts for the moment.

[1] I know that’s a long video, but it’s the “history of the web”. Which I had been part of as a consumer since NetScape and then FireFox.

4 Likes

I believe the problem here is not the opinion, but the attitude towards us who write Javascript.

Here’s one example that seems condescending and actually hurt my feelings:

Promoting WikiText is good, and I appreciate that @TW_Tones has taken the time to teach me a lot.

But how can it be good to downplay and belittle community efforts for being in Javascript?

4 Likes

I didn’t even know how to write a macro in Tiddlywiki until a year or two after Saq and I did Stroll. :slight_smile:

1 Like

This is an interesting take. I learned more about this community.

It makes me think my problem with TW widgets/macro/filter is more personal than a general one. I have learned and worked professionally in several languages and frameworks, including JS and its several frameworks. I now have fatigue and perhaps unconsciously resist learning new syntax/frameworks unless the payoff is good enough.

Thanks for the video. I will watch it entirely, but the parts I saw were illuminating.

Yeah. I agree. Regrettably, OP could have phrased it better in this thread and the one you linked, which would not have caused strife and, given the appearance of factionalism.

In the spirit of egoless programming, egoless programming is a terrible idea.

In a setting like tiddlywiki where there are very large differences in comfort and experience of the contributors, it just serves to create a toxic environment for the less experienced and more vulnerable members.
If you need an example, if someone were to look at the code for Bob – which is a personal project that I am rather invested in – and say ‘why did you do it this way? It is stupid’, it would have no real effect on me. I am established in my career and know enough about what I am doing to either know that it is indeed a terrible idea and should be fixed and it is that way because I haven’t fixed it yet, or to know that it isn’t a reasonable criticism and be able to explain why.
If someone said that to me about something I made 15 years ago it would have been a completely different situation. I wasn’t experienced enough to know if the criticism was warranted or not, I wouldn’t know how to explain one way or the other, I would have just been discouraged and due to factors that have absolutely nothing to do with coding or tiddlywiki I would not have had the ability to deal with that sort of toxicity so I would have just left.

If someone has to put up with hostile environments in their daily life, they have far less energy left over to address attacks, despite the attacks being prefaced with ‘it isn’t anything personal, it is just about the code’. And yes, it is an attack, it may not have malice behind it, but the intent behind it doesn’t really matter to the one it is directed at. Trying to deny that it is an attack just invalidates the person affected by it and shows a complete lack of respect for them as a person.

In a situation where there is no hierarchy, everyone is in a secure position, and everyone has a similar level of proficiency, a very careful version of egoless programming can work. Some of my projects are with close friends who I have known for well over a decade and everyone is experienced, and for those projects everyone is very harsh in their critiques, but the difference between the social and development aspects of our interactions are well understood. For a group like the tiddlywiki community, there isn’t really a difference between the social and development aspects of most relationships. In every instance where I have seen egoless programming in public projects, it has been used as something for people in secure positions to hide behind while harassing people in less secure/less knowledgeable positions. Even if that were not the case, if you look at the 10 commandments of egoless coding they are all things that require a lot of experience. For example, how can you ‘be kind to the coder, not to the code’ if you aren’t an experienced coder? Or ‘Treat people who know less than you with respect, deference, and patience’? While ‘punch up, not down’ is a good general rule in life there isn’t a way to judge which one is which here. Status and position is a very complex subject and someone who is proficient in coding isn’t necessarily in a secure position otherwise and, as much as we may wish they were, different aspects of life are not independent. Like I said in my example above, things completely unrelated to tiddlywiki do matter.
Despite the efforts of everyone involved, there is a hierarchy here. Criticism from me on most things would have much less of an impact on a conversation than the same criticism from Mario or Jeremy.



To directly address the points in the original post, they seem to be almost exclusively opinions about aesthetics. Making a value judgement about if a javascript plugin or a wikitext plugin is a ‘more substantive contribution’ seems to be based solely on opinion.
And for me, in both an aesthetic and technical way, the core should not do everything. TiddlyWiki has an amazingly flexible plugin system so the core can, in principle, be extended however a person wants. Anticipating all of the potential extensions and adding them to the core would just make the core bloated and difficult to work with.



As a post script about the egoless programming, the following quotes demonstrate some of my problems with egoless coding:

responding to someone not interpreting what you say the way you want it to be interpreted as though it is necessarily a failure on their part because they don’t understand what you meant and then interpreting it as a personal attack seems at odds with the ‘you are not your code’ aspect of egoless programming, although in this case it would be ‘you are not your explanation’.

2 Likes

I’m a career software engineer with 20 years of experience in multiple languages all across the board: C/C++, Python, C#, JavaScript, Lua, etc. I feel that I’ve been an active TW user since April of 2021 (that’s the created date of my first tiddler from when I decided to go all in from Roam Research and Notion, found by looking in [all[tiddlers]!is[system]sort[created]limit[10]]) but I definitely still feel like a beginner in learning the idioms of TW and this community. Just letting you know where I’m coming from!

I’ve seen a lot of programmers that write SQL like they write imperative code: they code against the grain, so to speak. “How would I solve this in my programming language?” vs. “How do I tell the database what I want via SQL?” Subtly different.

I do that when writing TW “code”. A lot. However, the only time I’ve reached for JavaScript so far is when I made a personal plugin that puts a tiddler in edit mode if I triple-click it; if there’s a way to do that in “pure” TW please let me know!

All the other little systems I’ve made for myself (project management and todos, tracking who I’ve lent books to, an embarrassing implementation of Soren’s reference explorer, etc) have been in TW alone. I enjoy the intellectual game of figuring out if TW can do what I want “out-of-the-box”. And it’s delightful that the answer, so often, is a resounding yes.

Are we counting CSS customizations? HTML? What about scripts that we use to do things with our wikis besides edit them in browsers? I’ve used ag and sed from the command-line to make mass-scale edits to my wiki (running in Node locally on my desktop). I know about the Commander plugin, but I’m honestly faster with the command-line tools for certain things.

I have yet to consider making a pull request against core at all. Again, I feel that I’ve a lot to learn culturally first and I don’t feel that I’m done exploring what can and can’t be done in TW.


That said, I agree with some of the other respondents on this thread – communication in a mixed experience level community is hard (via text, no less!) and it’s probably best to accept feedback in the spirit in which it’s given. If someone is saying, “That communication seems dismissive or harsh,” then arguing back why they’re wrong probably sends the wrong message. :slight_smile:

1 Like
  • Really find it hard to see the “condescension in my words” so to move forward either;
    • help me understand, ideally privately if you want to be frank and avoid flame wars
    • or people need to stop reacting emotionally to the contestation of ideas.
  • Well we have to agree to disagree, all I can say to this is, there are personalities in our community who are prickly to deal with. They respond quickly with emotional fervour, anger and sometime silently black list others without even asking the author, source of their distress “what they meant”.
    • This is of course part of the natural diversity of people.
    • But it does not mean it is right to "respond quickly with emotional fervour and anger.
  • It is very difficult to write useful criticism’s of intellectual arguments without sometimes using words that people of different backgrounds may misunderstand.
    • This thread is an example and why I call for a little more generous consideration of what people say.
  • The problem here is that if the claim that the “That communication seems dismissive or harsh,” is made, it is then difficult to contest it.
  • Basically the first negative response
  • Once someone responds emotionally to someone else’s comments without first requesting clarification, it puts the author in a difficult position. This is I believe what has occurred in this thread.
  • I was after all only offering a view point, I did not accuse someone, I did not insult someone personally.

My next post is about the OT and if anyone is still listening I would appreciate your perspective about the ideas not the person, “me” in this case.

In summary I said In my view when we come across a tiddlywiki limitation we should endeavour to return to the core and identify the limitation and address that rather than writing another plugin, and in particular the less accessible JavaScript plugins.

  • From my experience the core contains substantial resources already and most gaps can be addressed by a minor tweak or extension to existing code.

Two examples;

  • The core does not provide a tiddlywiki serial date picker, or simple date arithmetic, @EricShulman’s comprehensive date tools address this but arguably these key features should be in the core. Over the years I have seen a few dozen attempts to address this but all in plugins. As a result the core still does not have a simple date picker or date arithmetic.

Another example is being able to transfer a complex or simple filter into an easy way to search, export or delete those tiddlers.

TiddlyWiki already has this built in, but not available, see Control Panel > Info > Basics scroll to the bottom and you will see;
Snag_60c9e4

  • If you click in any of these the filter is transferred to the Advanced Search > Filters tab
  • The macro that does this show-filter-count(filter) is defined in $:/core/ui/ControlPanel/Basics but not usable elsewhere.
  • Here I externalised this macro in show-filter-count.json (975 Bytes) and added a parameter to show/hide the count.
    • Thus you can now do <<show-filter-count "[all[shdows+tiddlers]tag[$:/tags/Macro]]">>
  • Once externalised the original definition can be deleted reducing the size of the core tiddler $:/core/ui/ControlPanel/Basics
  • Then all we need is to document the macro.

I did give you an answer to your original post in my reply, but since you may have skipped over it here is the general idea: putting aside the assumed value judgement about a wikitext contribution having more value than a javascript contribution, adding everything to the core so wikitext covers every instance where someone would want to use javascript would introduce a lot of unnecessary bloat and part of the beauty of tiddlywiki is how flexible the plugin system is. The core can, and in my opinion should, be as small as possible for both aesthetic and technical reasons.

The only problem that I can see with having many plugins available is that we don’t have a good method for discovery of community plugins yet.

3 Likes

@inmysocks I did read you reply in full, thanks, but it would have being quite involved to give you a full and comprehensive response, and simultaneously avoid being miss read by anyone. Although I have read and deeply considered your views. I also concur with most of what you said, except perhaps what I did actually reply to.

  • To be sure, what I said has being missrepresented by others a number of times.
  • Agree with this whole heartedly but I also think such a resource could be tied to essential core features, especially if the core is not going to address these for example if we must use a plugin for date picking then lets document the community resource for date picking in the documentation.

As an example your Bob and Bob.exe are to me, key features needed in tiddlywiki, I personally would like to see it or a version of it in the core plugins at least because you have addressed a substantial gap. You also deserve some relief from maintaining this on your own.

  • If some of the key affordances were in the core (or core plugins) bob could be simplified, and easier to maintain.
  • I am glad you did put this aside because I did not say or argue that at all.
    • Its not a value judgement when a JavaScript Plugin is the solution and the core already handles it effectively. Simply put the Plugin is “redundant”, and unnecessary.
  • As I think with your experience you also know on one hand there are things best left out of the core and others that by nature demand a plugin and none of us want bloat, and on the other hand some belong in the core.
  • My key argument is there is little encouragement to ask for and seek gaps in the core to be addressed, resulting in numerous plugins each taking their own approach to addressing the gaps.
    • Of note here is @jeremyruston and other core developers do actually identify such cases and improve the core, this happens every new release. It is also a bit much for them to take responsibility for identifying and filling every gap. Some of which they never see because they don’t see the gap given their knowledge they can do a work around.

My point, missed by many, is those with both advanced tiddlywiki skills (I count myself amongst them) and JavaScript skills are the people we need to identify the gaps for which core tweaks and features can be achieved with little or no bloat.

  • To use JavaScript in tiddlywiki requires some understanding of integration in TiddlyWiki this same knowledge, is what we need to use to improve the core.
  • But there are many cases where we do not need JavaScript code
  • For example look at how the small amount of code to define the cascade filters has resulted in substantial increased hackability. Most of that solution is wikitext, widget and macros. The Gap was the cascade operator.

I was referring to the first 15 minutes … I do like Douglas Crockford’s presentations. There always is a lot of history info. The rest of the talk is relatively technical.

This statement is just not true.

as shown in these two quotes

you may not have meant it that way, but by refusing to acknowledge or address this it is impossible to have a reasonable conversation. In order to communicate effectively you have to accept that a viewpoint that isn’t yours exists and may be valid.

Sorry, I have done enough “addressing of this”, and once again I ask a little generosity and compassion, in the way my words are interpreted, I explained what I tried to say, and returning to my original words without taking subsequent words into account is not fair.

And other people including yourself;

This is not a one way street.

Yeah, I agree, my wife and I joke about this all the time. It’s the “You sound negative today!” “No I don’t!” “Aha!” problem.

Do you have a list of particular functionality that you’ve wanted or wished for? Do you have a list of gaps, in other words?

2 Likes

If someone who is clearly competent enough ends up creating a plug-in that “reinvents the wheel” or whatnot, I would see that as more of a “failure” of the wider TiddlyWiki ecosystem. I think it is safe to assume that the plug-in developer would also have searched the documentation, and other locations, but still “failed” to find the relevant content to give them what they needed.

Being open to pointing the new developer to existing, relevant content only serves to make them more knowledgeable in the future; and could incentivize them to change course on their own plug-in to further extend TW capabilities beyond the Core or an existing plug-in.

2 Likes
  • I could give a list, but people find them every day, that why I posted, I am hoping more emphasis can be put on identifying Gaps and addressing them rather than “patching them” with yet another plugin.
  • Because my core development skills are not so advanced I can not readily do fixes to gaps, I am also guilty of making the patches I complain about.
  • Although people would attack me for using the word “Failure” do they even understand I too admit to failing in this way as well?
  • This has being an unpleasant experience :frowning_face:
  • Thank heavens at least someone (actually a few do) know what I am talking about.