About me — I have programmed in other contexts but not web stuff. My closest experience is 2 years managing a site with Red Hen and Open Outreach on Drupal. That was miserable for me. While I learned to handle various problems, what I learned was almost entirely about problems with Drupal, Open Outreach, Red Hen, and their various redundancies. When Drupal stops maintaining Version 7, Open Outreach will be gone. Its maintainers have something they think is new and better, and utterly incompatible. Red Hen is already changing things around for Version 8.
Meanwhile, I have a Wiki project I want to do. It involves naive users who want to learn as little as possible about how to do things. I quickly found that TikiWiki could easily be set up to meet my minimal requirements, and I started looking at how to improve the user experience.
I wanted a simple change. Put the Backlinks list at the bottom, showing the link and user. Don't put it between the vital user menu and the user text. The existing backlinks was a button on the side, and when it was clicked it made a new little window. It was very good but I can't depend on my users to find that button. I want them to see the backlinks unless they care enough to learn how to turn them off.
Modules are how TikiWiki gives things their own boxes, so I looked for it there. Just move the module under the wikipage window, and set it to always on. But it wasn't a module, it was a button. The system gave me no easy way to change it. I found some of the files by inspecting the image.
OK, ignore the existing button, I'd use the plugin myself. I could make the Backlinks plugin work in a wiki page! It did just what I wanted, except it was above the wiki menu. Also, to put in in my users' wiki pages I had to get them to make multiple clicks and then the calling code wound up at the top unless they worked around it. Not very good.
OK, I'd make my own module. I found documentation that worked, and immediately I could build modules and place them wherever I wanted, and I could have boxes of text. Just drag them into place! But my Backlinks plugin did nothing. I realized it was only for wikipages, not modules.
OK, try to cut with the grain of the wood. The documentation gave ways for modules to do lots of things, and it said that dynamic content always worked. Maybe I could have the wikipage plugin in a different wikipage. Every time I display a wikipage, it gets the other page to dump its output into a content block and the module can display it. That might have a lot of overhead, but maybe it would work. Or maybe there would be too many problems with permissions. I played with that some and gave up. I'd come back to it later if nothing else worked, and the experience would surely be useful.
I could have my plugin in a different wikipage, and "include" it, and then I could lock the spare page. I can't depend on my users to push a button, but I can't depend on them not to exploit an opportunity either. I could easily get that working! Only I had to pass the page name to the second page so it wouldn't give the links to itself instead. Could I make a new Smarty variable to hold it? Apparently not. Apparently only .tpl files got the Smarty interpreter. And maybe variables could only be created in .php files? Could I use some existing Smarty variable that wouldn't get used for something else? Apparently not, I couldn't just assign a variable outside of the .tpl file. Could I build my own .tpl file for it? I put one in the file that all custom files are supposed to go in, and the system couldn't find it. I put that aside, it looked like too big a bite for one day.
By then I had seen somebody had provided a way to display Smarty variables inside wikipages. When I ran my locked page by itself, $page had its name. When I called it from another page with Include, it had the other page's name! If I had paid attention I would have seen that from the actual results, but I had assumed it wouldn't happen. With no attempt to change the $page variable it just worked. So I had a locked page that I could include in any wiki page.
Even when I put the include thing at the bottom, the output was still between the wikimenu bar and the user's contribution. Maybe I could just move the menu to the top.... No, I couldn't. It wasn't a module, so it didn't show up in the list of assigned modules that I could move.
That's where I am now, after 16 days.
I made slow progress at first because there was just so much that could be done without any programming that I got lost in it. Then I sped up, and slowed down again as I ran out of the possibilities available from clicking permissions. Now I'm starting to speed up again as I begin to see how templates, modules, and plugins fit together. I feel like that's something where more hints would make a great big difference. But maybe people who already have a background in PHP and Speedy would find it all more intuitive.
There are surely tools that might already be hidden, or that would be particularly useful, and I don't know what to say about them. I won't know what tools are especially good for templates etc until I am already getting results with them.
But I notice the beautiful system that lets me put modules anywhere I want just by sliding them in place and choosing, and it would be obviously better if everything that goes on the page is a module. Or behaves like a module that particular way.
And there are a lot of plugins that only work on wikipages. If somehow there was something generic that could be added to them so that modules could be enough like wikipages for them to work, that might be a lot of added functionality for modules. Maybe there's already an easy workaround, but if it just worked without needing the workaround that newbies don't know about, that would help.