On Thu, Nov 19, 2009 at 1:24 PM, Chris Dent <
chris...@gmail.com> wrote:
>
> On Nov 19, 2009, at 12:21 PM, simon mcmanus wrote:
>
>> The convention I am suggesting would prefix the bag name with the
>> vertical name and the suffix would identify that the bag provides
>> clientside functionality required by said vertical.
>
> This convention seems like it may be a bit premature. I can certainly
> understand the desire for some naming conventions but it is important
> to understand the multiplicity of contexts in which a vertical and/or
> TiddlyWeb might be used. I'm also curious about what the conventions
> are designed to allow or protect against? (more on that later)
>
As TiddlyWeb has been under development for 18 months and we now have
several verticals in production, as well as others that have been
under development a while, I think it's actually a great time to be
taking stock and coming up with some sensible conventions.
The conventions are primarily designed to make it easy for people to
learn from example, which in practice has been shown on most platforms
to be vastly more useful than learning from documentation. If
TiddlyWebWiki arbitrarily uses "system" and TiddlyDocs uses "tiddlers"
and TiddlyGuv uses "ui" for the same thing, we are not helping anyone
learn how to make a new application.
Furthermore, the conventions will help in conversations about
TiddlyWeb, aid in mining for patterns in TiddlyWeb applications, and
support tools such as an initial project generator and any
diagnositics tools.
It's great TiddlyWeb has many degrees of freedom, but the price you
pay for all this flexibility is people don't know where to start.
Conventions help to combat that problem so developers end up with the
best of both worlds. (The rapid "happy path" build-a-project-now
experience of Visual Basic with the rich, flexible, model of <choose
your favourite language/framework>).
> TiddlyWeb is architected so that it is practically and conceptually
> easy to reuse tiddlers in different contexts. Similarly it is
> architected so that the same TiddlyWeb server can be used for multiple
> things. It should be straightforward and possible to have TiddlyDocs,
> TiddlyWebWiki and TiddlyGuv all from the same instance, being used by
> lots of different users doing lots of different things.
> Given that there are similar tiddler requirements for all the three of
> the above, it makes sense to have (or at least allow for) having some
> of those tiddlers in the same bag and reuse.
>
I think the idea was to have prefixes for things specific to that
application. e.g. TiddlyGuv maintains licenses, so there might be a
bag called TiddlyGuv_licenses.
> For example the ServerSideSavingPlugin would live in the bag currently
> named "system" in TiddlyWebWiki and be available to all those
> applications.
>
> That current name may be the wrong one. I don't know. Yet.
>
The ServerSideSavingPlugin would be in TiddlyWebWiki_System (or some
other suffix); this makes sense if that project includes it and relies
on it for its core work.
> So there's that. There's also this:
>
> A part of the bag concept is that they can be used as named containers
> for constructing stuff. For example one would have a TeamTasks bag
> that contained all the tiddlywiki plugin, stylesheet and help tiddlers
> that make up teamtasks. Then you would add that bag to a recipe that
> includes another bag where tasks are stored.
>
> So yes, having sensible names for bags is useful, but keep in mind who
> you are making the names for and in what way are the bags going to be
> used. You sound like you are hoping to have some conventions so that
> it is easier for people approaching a vertical from the code side are
> more capable of understanding what's going on. That's great and all
> but leaves out what I think is the more important part: Giving names
> and structure/content to the bags so that they are more capable of
> being used by someone browsing around the TiddlyWeb server and
> constructing recipes that allow them to have collections of tiddlers
> that do the things they want.
I agree that's a vital goal. I'm not sure if I'd say it's more
important the ease of development, because boht are critical to the
success of TiddlyWeb; whichever you say is more important is arbitrary
depending on your perspective etc etc.
I don't see how sensible naming conventions make it harder to browse
the server though. I think it's useful if plugins are in a bag whose
project name is exposed. I don't think this is the case with things
like "comments"; you could argue plugins should be part of the bag
name too, ie you end up with "comments_comments", but I think that's
taking it too far and would indeed make browing more difficult.
Also, we already have the precedent that URLs in tiddlyweb are
designed by default for pedagogical purposes more than mapping what
most people would expect of a REST system in the real world. Hence,
http://examples.com/bags/docs/tiddlers/bid.html; instead of
http://example.com/docs/big.html.
>> Proposed suffixes could be :
>>
>> _application
>> _system
>> _UI
>> _app
>> _client
>
> What's the difference between application, system, UI and app? Are
> they all required to make the thing go? If so, why not put them all in
> the same bag so I can easily create a recipe that uses them but also
> includes my own customizations? These names seem to optimize for your
> use, not for the use of someone using the system.
>
This wasn't a very clear list; the idea is that we would probably use
only one of the above to describe the tiddlers that sit in the UI for
the application.
> To help me understand a bit more, can you describe what these names,
> and using conventions at all, provides for you, other developers and
> users of the system? What is being enabled and what is being prevented
> (in the good safety way)?
>
>> Would anyone object to such a convention being adopted by twebical
>> and tiddlywebwiki? I think it will make things easier for people
>> trying to understand how a TiddlyWeb vertical is put together if the
>> system bag names are more descriptive about the things contained
>> within them.
>
> I think it is too early to be defining conventions like these. There
> is, right now, only one packaged and installable vertical that is
> getting widespread public use. That's TiddlyWebWiki. In some sense it
> doesn't even count as a vertical because it is what is required to
> make TiddlyWeb a serverside for TiddlyWiki. It's just one step off the
> core.
>
> What I would prefer to see is for convention to emerge, rather than be
> prescribed. We have such limited informed use of the systems, thus
> far, that if we made conventions now they would be born from ignorance
> (ignorance of TidldyWeb and ignorance of how people use TiddlyWeb) and
> fail to satisfy down the road.
>
The argument is not that it's prescribed by the core TiddlyWeb
project, but that we start to discuss these conventions, and that a
canonical app will be developed to demonstrate them. As I said above,
I don't believe it's too early to start struggling towards a set of
conventions, so that new projects coming on can adopt them and see how
we go, instead of everyone having to start from scratch.