Using TiddlyWiki with simultaneous multi-user updates on own server

2,575 views
Skip to first unread message

Jose Araujo

unread,
Feb 20, 2015, 6:46:59 AM2/20/15
to tiddl...@googlegroups.com
Hi All,

I have been reading up on the many different approaches for multi-users to update and save a TiddlyWiki and having it stored privately in your own server. However, since there are so many different tools and approaches, I could not make sense of what would be the best solution for my case. Also, much of the information appears to be quite old and I cannot make sense of what would be the easiest and most efficient solution for this. My interest would be to have access to the TiddlyWiki features but allowing multiple users to edit and save updates simultaneously, and I would like to have the information to be private and implemented on my local server. If that would not be possible, I would be happy with a feature like the TiddlyLock plugin, where a TiddlyWiki page would be locked while a user is editing it, but from what I understood, this is no longer supported in TW5.

Any suggestions and comments would be great appreciated!

Best wishes,
José 

Andreas Hahn

unread,
Feb 20, 2015, 7:38:08 AM2/20/15
to tiddl...@googlegroups.com
Hi José,

while it is possible for multiple users to access a single TW and make changes to it, it is currently not possible to have other instances updated simutaneously or detect any editing conflicts that arise. Therefore it is NOT suited for your very specific needs of being able to handle multiple users at the same time.

Any mechanism that may be added in the future will likely work via Locking on a per tiddler basis. Also while there is Danielo's Google Drive Plugin (and similiar projects) which is designed as a remote storage for tiddlers from multiple users, I am pretty sure it does not handle arising editing conflicts or clientupdates.

So bottom line is: If you really need to cover the requirements you have described, you will have to write a system for that yourself, but there are projects that can serve as a guide to you.

/Andreas
--
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 tiddlywiki+...@googlegroups.com.
To post to this group, send email to tiddl...@googlegroups.com.
Visit this group at http://groups.google.com/group/tiddlywiki.
For more options, visit https://groups.google.com/d/optout.

Andrew

unread,
Feb 20, 2015, 7:55:46 AM2/20/15
to tiddl...@googlegroups.com
I think for something like this to work you would need to host it using node.js. I have always wished for a non-server method but imo you would need at least 3 things. 1. An exploded file or external file include plugin. I personally use _canonical_uri field and zTxt text chunks and host the included external files that make up my included tiddlers in sharepoint but it is very static and not dynamic. 2. Maybe a tiddlerlock plugin. 3. And finally, a tiddler saver like export.

PMario

unread,
Feb 20, 2015, 9:20:17 AM2/20/15
to tiddl...@googlegroups.com
Hi Jose,

Should your server be connected to the internet? Is it a corporate environment? Are you the IT admin?

What type of server do you have?
 - Virtual server
 - bare metal

Which OS?

-mario

Chris Dent

unread,
Feb 20, 2015, 9:43:04 AM2/20/15
to tiddl...@googlegroups.com
It's not possible to do easily, yet, so I'm not suggesting the following as a solution. In addition your posting reads like you are looking for something where the server is just for storage and little more than that.

Instead I'm just making my semi-regular "with a bit more work this could be done with TiddlyWeb" posting. Implicit in this should be read my apologies for not being able to do it myself due to employment constraints.

TiddlyWiki 5 and TiddlyWeb can talk to one another relatively well, but with some issues that could be fixed.

The existing (last time I checked) tiddlywebadaptor plugin:

* is designed to work with TiddlySpace rather than a generic TiddlyWeb server.
* it's difficult to make it dynamically choose a desired recipe to use as a source for content.
* it doesn't have smarts for how to fruitfully deal with edit conflicts (TiddlyWeb will return a response code indicating when one happens)

TiddlyWeb can provide (given correct setup) but doesn't make it easy enough:

* content change notifications either through websockets or fairly efficient support for being polled for "all changes since last time I checked"
* comprehensive authentication (are you who you say you are) and authorization (can you access this thing to do action X) controls via challengers and polices
* scales from little personal installations to huge enterprisey installations

If anybody wants to know more about these issues or features please ask and I can try to provide more info.

Tobias Beer

unread,
Feb 20, 2015, 12:52:54 PM2/20/15
to
Hi Chris,

Implicit in this should be read my apologies for not being able to do it myself due to employment constraints.

This is totally understandable and should be ringing one or two bells with me, too.

However, while you may not be equiped with the time-resources to do it all yourself, I think you could perhaps keep an eye on vision / implementation... being the most knowledgeable on the perhaps more critical TiddlyWeb end. Let's face it, who else really has the background to guide through that process? So, do you think it would be possible for you to open up some TiddlyWeb5 repo to which other's could make pull request where you, however, would be sketching out the basic issues, lead the conversation so to speak, where you are able, and possibly throw in the occasional doodle of the details of any of this...

* is designed to work with TiddlySpace rather than a generic TiddlyWeb server

You see, there are only a few people who really understand what that means precisely.
 
* it's difficult to make it dynamically choose a desired recipe to use as a source for content

I take it, you mean to expose the available recipes on the TiddlyWeb end and then assign them in the TW5 front-end. I guess, the point to start is that TiddlyWeb API for anyone to retrieve recipes or perhaps just bags, for starters.

* it doesn't have smarts for how to fruitfully deal with edit conflicts (TiddlyWeb will return a response code indicating when one happens)

There are some smarts in TiddlySpace that could be referenced at some "action-item" so that there would be at least something to start looking for solutions other than a blank canvas. 

TiddlyWeb can provide (given correct setup) but doesn't make it easy enough:

That is fine, so long as the setup is doable on the server-side. At some point there may be some TW5 Admin console to some TiddlyWeb backend, but let's just start with the basics of getting collaboration up and running... with requirements as to some server-smarts in terms of setting things like recipes and bags up properly.

* content change notifications either through websockets or fairly efficient support for being polled for "all changes since last time I checked"

Not precisely sure what that means in terms of what TiddlyWeb actually provides in terms of an API and how the communication details sort out. Again, I would think there is some codebase on the TWc end in TiddlySpace, isn't there?
 
* comprehensive authentication (are you who you say you are) and authorization (can you access this thing to do action X) controls via challengers and polices

That is perhaps one of the bigger issues why I think we all need a guy like you at least for supervision, even if others dare pick up on the coding challenges.

* scales from little personal installations to huge enterprisey installations

Again, let's start with the basics. If people want enterprisey stuff someone will luckily cater for it with that required paycheck involved.
 
If anybody wants to know more about these issues or features please ask and I can try to provide more info.

If I was more of a thorough developer or had all the time of the world at my disposal I might pick up on that offer but — for the time being — my needs are more on the "go look for that next paycheck, Tobi"-front... so, let us know what the Missus says, all non-bindingly.

Best wishes, Tobias.

PMario

unread,
Feb 20, 2015, 3:13:13 PM2/20/15
to tiddl...@googlegroups.com
Hi Chris,

Nice to see, that you still scan the topics.

I do have a running version of TiddlyWeb and TW5 [1] with an adaptor, similar to the one you use for tank.
But as you wrote, setting it up is not straight forward. ...

I activated https, to be able to use the simple auth mechanism.

I changed TW5 (warning 5.0.9 really old) control panel to get some server settings. ... The problem here is, that the default recipe can _not_ be set the way I imagined it, since TW needs a reload to activate it.

Also tiddler bag handling is far away from optimal in TW5.

tweb.at has a TiddlyWeb backend [2] too, but doesn't use it. yet :)
I did some experiments, to find a workflow, that is easy to understand and easy to maintain. ...

The problem is, .. if you want to expose something to the web it needs to be secure.
So at the end the whole system gets more and more complex :/ Too many moving parts (for my taste)

The setting is like this:

 - nginx serves the "naked" TW5 index.html
   - this index.html contains the hardcoded default recipe settings.
   - at startup, it reads a skinny list of all tiddlers.
   - If a tiddler is accessed the "fat" version is read.
 - tiddlyweb api is exposed by nginx with uwsgi.
 - tiddlyweb uses the simple text store.

have fun!
mario

[1] https://dev.tweb.at/
[2] https://tweb.at/api/

PMario

unread,
Feb 20, 2015, 4:09:26 PM2/20/15
to
On Friday, February 20, 2015 at 6:52:54 PM UTC+1, Tobias Beer wrote:
* is designed to work with TiddlySpace rather than a generic TiddlyWeb server

You see, there are only a few people who really understand what that means precisely.

That's true and it's scaring. ... 
 
* it's difficult to make it dynamically choose a desired recipe to use as a source for content

I take it, you mean to expose the available recipe's on the TiddlyWeb end and then assign them in the TW5 front-end. I guess, the point to start is that TiddlyWeb API for anyone to retrieve recipes or perhaps just bags, for starters.

IMO you need to start with recipes. Otherwise you will have big trouble in the future. And client side code wise, there is no difference.
 
TiddlyWeb can provide (given correct setup) but doesn't make it easy enough:

That is fine, so long as the setup is doable on the server-side. At some point there may be some TW5 Admin console to some TiddlyWeb backend,

I do have a very basic admin GUI for the backend. tweb-config [1] but you need to be able to access the server with ssh. I thought, I have a video, how it works, but it seems I don't :)   IMO creating new recipes and bags isn't exposed to the web api, due to security concerns.
 
but let's just start with the basics of getting collaboration up and running... with requirements as to some srver-smarts in terms of setting things like recipes and bags up properly.

And here we have some standardisation work to do and TiddlySpace isn't the best example.

eg:
TiddlySpace defines some default recipe/bag names that make the client side code very complex (in TWc).

.. It's mainly naming conventions and the resulting client side UI. TW5 has some advantages here, because of the very powerful filter syntax. ...

IMO this topic needs its own thread.
 
* content change notifications either through websockets or fairly efficient support for being polled for "all changes since last time I checked"

Not precisely sure what that means in terms of what TiddlyWeb actually provides in terms of an API and how the communication details sort out. Again, I would think there is some codebase on the TWc end in TiddlySpace, isn't there?

Yes.

TiddlyWeb doesn't have real time features out of the box.
socket.io is used on the server and the client. ... But here the client side software is much simpler than, what's needed on the server.

You see. Adding a "simple" feature adds more moving parts, server side and client side. 
 
* comprehensive authentication (are you who you say you are) and authorization (can you access this thing to do action X) controls via challengers and polices

That is perhaps one of the bigger issues why I think we all need a guy like you at least for supervision, even if others dare pick up on the coding challenges.

FND made a low level tiddlyweb console [2]. That can be used to assign recipe/bag policies. It works for TS and TiddlyWeb. .... BUT ...
I broke mine today, doing some configuration changes. ... I hope it's fixed, when you read this post.

* scales from little personal installations to huge enterprisey installations

Again, let's start with the basics. If people want enterprisey stuff someone will luckily cater for it with that required paycheck involved.

For enterprise usage, imo you need a "real" database as a storage backend. ... -> even more moving parts :)

have fun!
mario

[1] https://github.com/pmario/tweb-config and http://tweb-at-home.tiddlyspace.com/tweb-config-about

chris...@gmail.com

unread,
Feb 20, 2015, 5:02:06 PM2/20/15
to tiddl...@googlegroups.com
On Fri, 20 Feb 2015, Tobias Beer wrote:

> However, while you may not be equiped with the time-resources to do it all
> yourself, I think you could perhaps keep an eye on vision /
> implementation... being the most knowledgeable on the perhaps more critical
> TiddlyWeb end. Let's face it, who else really has the background to guide
> through that process? So, do you think it would be possible for you to open
> up some TiddlyWeb5 repo to which other's could make pull request where you,
> however, would be sketching out the basic issues, lead the conversation so
> to speak, where you are able, and possibly throw in the occasional doodle
> of the details of any of this...

I'm happy to advise and support people, and do try to keep track of
anything that has some relevant to TiddlyWeb. However I don't want to
be in the position of initiating a repo as someone else doing so is a
clear sign of real commitment by someone or some group. I think it
would be a bad idea to remove that signal.

If that signal is lit, then woot, I'll watch closely.

> * is designed to work with TiddlySpace rather than a generic TiddlyWeb
>> server
>
> You see, there are only a few people who really understand what that means
> precisely.

Which is interesting because I didn't write the tiddlyweb adaptor for
TiddlyWiki 5.

It's effectively this line that is the issue:

https://github.com/Jermolene/TiddlyWiki5/blame/3df341621d30b205775288e324cef137c48e9f6e/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js#L68

That is the only place that the recipe for the adaptor is set but it
uses a piece of data that only exists on TiddlySpace. As I've
described here:

https://groups.google.com/d/msg/tiddlyweb/UcYrnvGwNUQ/UJRgSn4VjfYJ

the recipe can be set manually but it would better if TiddlyWiki5
could ask the user what recipe on what server they want to use and
load that into a story (either including it in the current, replace
the current or making a namespaced one adjacent to the current).

> I take it, you mean to expose the available recipe's on the TiddlyWeb end
> and then assign them in the TW5 front-end. I guess, the point to start is
> that TiddlyWeb API for anyone to retrieve recipes or perhaps just bags, for
> starters.

Pretty much, yeah.

> There are some smarts in TiddlySpace that could be referenced at some
> "action-item" so that there would be at least something to start looking
> for solutions other than a blank canvas.

True. There are (as with everything) simple and deluxe ways to handle
things. The easiest thing to do is to respond to the HTTP response
code for an edit conflict with a warning message to the user. Then
they can choose to resolve it however they like.

> That is fine, so long as the setup is doable on the server-side. At some
> point there may be some TW5 Admin console to some TiddlyWeb backend, but
> let's just start with the basics of getting collaboration up and running...
> with requirements as to some srver-smarts in terms of setting things like
> recipes and bags up properly.

The direction I'm trying to push things is that as much smarts as
possible are in TiddlyWiki. This is possible. The APIs exist such that
a very minimal tiddlyweb server can do most of the things people have
been wanting.

> * content change notifications either through websockets or fairly
>> efficient support for being polled for "all changes since last time I
>> checked"
>
> Not precisely sure what that means in terms of what TiddlyWeb actually
> provides in terms of an API and how the communication details sort out.
> Again, I would think there is some codebase on the TWc end in TiddlySpace,
> isn't there?

Yes, I suspect so, but it really comes down (if not using the
websockets option) of frequently asking the server for info at the
right url:

https://tank.peermore.com/bags/cdent/tiddlers?select=modified:%3E2015

(anything in that bag since the beginning of the year)

Those selects work on any tiddler collection. There are also ways to
do it with searches.

--
Chris Dent http://burningchrome.com/
[...]

RichShumaker

unread,
Feb 20, 2015, 10:31:21 PM2/20/15
to tiddl...@googlegroups.com
I love this topic.
I am trying to set this up for the Raspberry Pi and have not gotten very far and if you read this thread Jose you will see why I say that.
The ecosystem is not really there, yet, to allow anyone(some can just not everyone) to set up a multiuser TW Environment with different rights set up(Admin, User, TW Specific rights).

Possible Solution #1 - I use the Raspberry Pi but any Server with PHP will work
Here is my 'basic' Raspberry Pi TW server using BidiX store.php script that has NO permissions beyond letting people add to HTML TW's, I use TW5 but TWC would work as well.
So you can't limit people on doing damage by accident to the HTML TW files.
Everyone can do things that overwrite each other as it is just a single HTML file.
With that Said that doesn't mean if you set things up correctly that it won't work great.

By correctly I mean,
1.  Everyone has there own User Name and Log In that is set in the BidiX file.
2.  Everyone uses there Name when they create Tiddlers, there is a thread that discusses this and I think this is it.
3.  Everyone has their own TW5 and then you share one.  This will allow people to create things in their own that may differ from each other then you can 'manually' link them via drag and drop.
3a.  Or you can use the TW Aggregator to bring all the TW5's together BUT it is really just creating one BIG TW file.
4.  If you use Backup's and people overwrite each other you can get data back.  This is the biggest issue as my save will overwrite your save if you are in the same TW5 HTML file at the same time.
4a. I think I remember seeing a Lock TW file discussion but I don't remember which group that was in.

Possible Solution #2 - This solution is in progress

Possible Solution #3 - Again this solution is in progress and Mario has gotten it to work
I love what Chris has done with TiddlyWeb and he has been really helpful to me.
I also understand what he is saying in regards to not having time.

I think the TiddlyWeb solution is the best one if we can find someone who programs in Python and could take over the creation and maintenance of a GitHub repository.
Wish I could say that it is me except I don't have enough code knowledge to do it yet.
In regards to what Chris points out is the issue with TW5 could someone fix that an offer the fix via a GitHub pull request(hopefully I am saying it right)?

Hope some of this helps and keep us up to date on your progress.

Rich Shumaker

Jose Araujo

unread,
Feb 23, 2015, 7:40:43 AM2/23/15
to tiddl...@googlegroups.com
Hi Mario,

thank you for the reply and sorry for being late on mine. 

To answer your questions, I would like it to be connected to the internet, it is a corporate environment but I am not the IT admin, even though I have permission to set up things. I have the possibility to both have a virtual server or bare metal and the OS is currently windows, but we could move to Unix.

Thanks again for the help!

Jose Araujo

unread,
Feb 23, 2015, 7:41:43 AM2/23/15
to tiddl...@googlegroups.com

So from what I understand is that there is currently no solution for this that wouldnt require quite a lot of work right? :)

PMario

unread,
Feb 23, 2015, 9:56:41 AM2/23/15
to tiddl...@googlegroups.com
On Monday, February 23, 2015 at 1:41:43 PM UTC+1, Jose Araujo wrote:

So from what I understand is that there is currently no solution for this that wouldnt require quite a lot of work right? :)

The bits an pieces are there. But there is no black box, that you just need to switch on.

-m

Tobias Beer

unread,
Mar 2, 2015, 5:39:18 AM3/2/15
to
Hi Chris,
 
I'm happy to advise and support people, and do try to keep track of
anything that has some relevant to TiddlyWeb. However I don't want to
be in the position of initiating a repo as someone else doing so is a
clear sign of real commitment by someone or some group. I think it
would be a bad idea to remove that signal.

If that signal is lit, then woot, I'll watch closely.

Totally understand. So, let's wait and see some more when attempted implementation(s) start trickling down.

It's effectively this line that is the issue:

https://github.com/Jermolene/TiddlyWiki5/blame/3df341621d30b205775288e324cef137c48e9f6e/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js#L68

That is the only place that the recipe for the adaptor is set but it
uses a piece of data that only exists on TiddlySpace. As I've
described here:

https://groups.google.com/d/msg/tiddlyweb/UcYrnvGwNUQ/UJRgSn4VjfYJ  

the recipe can be set manually but it would better if TiddlyWiki5
could ask the user what recipe on what server they want to use and
load that into a story (either including it in the current, replace
the current or making a namespaced one adjacent to the current).

I see, so there are actually a few challenges...
  1. expose those recipes to "wiki authors", if only manually
    • this presupposes to manually manage recipes AND user data at the TiddlyWeb serverside
  2. allow to more dynamically configure server(s) and recipe(s) to CRUD from within TiddlyWiki
    • a crucial part may be in the plural above and whatever conflict handling is needed with
      • changing recipes
      • conflicting recipes (duplicate contents, execution order / precedence)
      • how all that plays out with plugins and themes
It looks like the "simple", straight forward TiddlySpace setup has some rather reliable and ready-to-use tenets to work with... for which leveraging all the generic TiddlyWeb potential could quickly increase complexity on the client-end to highly challenging scenarios. For one, in TiddlySpace you only ever authenticate against one server / service: TiddlySpace. That simplifies handling multiple "spaces" / remote locations to talk to by magnitudes, even though it would perhaps be an incredibly powerful thing to hook up to a number of arbitrary (TiddlyWeb or other) server nodes from a single wiki instance... for which there is some "home recipe" and server holding its basic configuration.

A cross-server implementation would surely play along the theme of TiddlyWiki being a "guerilla wiki"... dynamically pulling stuff, even ad-hoc. Switching that "wiki view" from one recipe / remote content pool to another. Some remote recipes / bags could be used conjointly: a home / setup bag, some template foo, a libarary bar, an app baz ...and then others loaded dynamically / switched to, e.g. "TiddlyWiki plugin repo"... alongside ways of moving and merging things from remote location A to B.

Imagine some kind of TiddlyExplorer that would — like any local file system explorer — list any connected remote locations with support to drag and drop / move things from a source to a target... and the corresponding conflict handling.

So, one layer would be to explore those remote locations and cook the desired contents into target locations and then another to define "wiki instances" that feed off of certain remote sources. The explorer could be an entirely independent application from authoring any thus set-up "wiki instance", e.g. an "administrators application".

Sure, if there were a number of remote sources — if only bags (in recipes) — being considered, there'd have to be some ui that allows a user to select and define which one to read from and write to at a given moment, e.g. some form of "select" in both view- and edit-mode that switches to the corresponding remote location for loading or writing.

True. There are (as with everything) simple and deluxe ways to handle
things. The easiest thing to do is to respond to the HTTP response
code for an edit conflict with a warning message to the user. Then
they can choose to resolve it however they like.

All this client-server-talky-talky seems to beg for a thorough requirements analysis / conceptual design... or possibly / alternatively one who dares...
  1. fiddle their way accross all gaps and hurdles, testing and connecting existing infrastructure pieces to that TW5-Collaboration-Puzzle
  2. start a conversation so as to breathe some life into any missing links
The direction I'm trying to push things is that as much smarts as
possible are in TiddlyWiki. This is possible. The APIs exist such that
a very minimal tiddlyweb server can do most of the things people have
been wanting.

Mario mentioned that managing recipes, bags, even users may not entirely be in the scope of the TiddlyWeb API. Is that so or what aspect(s) of a TiddlyWeb setup can be managed via HTTP(s), if any? Otherwise, how do you envision a meaningful default workflow so as to get a TiddlyWeb instance up and running in a multi-user environment?

I guess one big question is: What do we mean by collaboration? What does it entail?
  • user setup / registration / authentication?
  • "shared", multi-user wikis
    • access rights ? r / w
    • admin vs. editor vs. subscriber?
  • user wikis / spaces / profiles
  • "space" inclusion
Yes, I suspect so, but it really comes down (if not using the
websockets option) of frequently asking the server for info at the
right url:

   https://tank.peermore.com/bags/cdent/tiddlers?select=modified:%3E2015

(anything in that bag since the beginning of the year)

Those selects work on any tiddler collection. There are also ways to
do it with searches.

I see, so again it's a task that begs for someone to start playing with a TiddlyWeb server and test out certain communication patterns as to how suitable they are to implement polling in a collaborative environment and then properly handle (merge) conflicts, mostly.

Best wishes, Tobias.

chris...@gmail.com

unread,
Mar 2, 2015, 6:20:59 AM3/2/15
to tiddl...@googlegroups.com
On Mon, 2 Mar 2015, Tobias Beer wrote:

>> If that signal is lit, then woot, I'll watch closely.
>
> Totally understand. So, let's wait and see some more when attempted
> implementation(s) start trickling down.

It's probably not the most productive strategy but time being what it
is...

> A cross-server implementation would surely play along the theme of
> TiddlyWiki being a "guerilla wiki"... dynamically pulling stuff, even
> ad-hoc. Switching that "wiki view" from one recipe / remote content pool to
> another. Some remote recipes / bags could be used conjointly: a home /
> setup bag, some template foo, a libarary bar, an app baz ...and then others
> loaded dynamically / switched to, e.g. "TiddlyWiki plugin repo"...
> alongside ways of moving and merging things from remote location A to B.

Yes, this is very in line with the vision of TiddlyWiki/TiddlyWeb
interaction that I've always been shooting for. Your additional
descriptions are very good.

> Mario mentioned that managing recipes, bags, even users may not entirely be
> in the scope of the TiddlyWeb API. Is that so or what aspect(s) of a
> TiddlyWeb setup can be managed via HTTP(s), if any? Otherwise, how do you
> envision a meaningful default workflow so as to get a TiddlyWeb instance up
> and running in a multi-user environment?

The _API_ supports managing recipes, bags and policies for both,
directly in the TiddlyWeb core. There's a plugin,
tiddylwebplugins.socialusers, which adds _API_ support for users.
What's not present is client side tooling (libraries, UIs) for
managing the operations.

I think there's a perception that doing CRUD on recipes, bags and
users in TiddlyWeb is quite complex. What's complex is effectively
implementing the concepts. The actual operations are simple PUT
requests with a relatively small amount of JSON[1].

One a tiddlyweb instance is created, installed and configured (with
the socialusers plugin), it is possible to manage all the necessary
operations over the API.

(You might be wondering why the socialusers plugin is a plugin rather
than built it. Basically it is because it requires an explicit step
for the admin of the service to say "Yes, I want to expose user
management over the web.")

> I see, so again it's a task that begs for someone to start playing with a
> TiddlyWeb server and test out certain communication patterns as to how
> suitable they are to implement polling in a collaborative environment and
> then properly handle (merge) conflicts, mostly.

Seems so. I think that's the general truth: people just need to try
stuff and see where it goes. There's a tendency to want to solve
problems before they are concrete.

[1] A good starting point for the API is here
http://tiddlyweb.tiddlyspace.com/HTTP%20API or here
http://tiddlyweb.tiddlyspace.com/explorer

PMario

unread,
Mar 2, 2015, 7:39:23 AM3/2/15
to tiddl...@googlegroups.com
On Monday, March 2, 2015 at 11:39:18 AM UTC+1, Tobias Beer wrote:
Mario mentioned that managing recipes, bags, even users may not entirely be in the scope of the TiddlyWeb API.

You are right. "not entirely". As Chris mentioned, there are several server side plugins to manage users and access rights for TiddlySpace. ... but imo the needed authentication and authorisation increases the complexity a lot. Especially the access rights "drop privileges" approach for TS is complex.

I pointed to my console, where you can see, that managing recipes, bags and policies is easy. ... but creating a generic and simple to manage access concept for the basic recipes (TiddlyWikis) and the r/w structure is hard.
 
I guess one big question is: What do we mean by collaboration?

Exactly. And here the scope of the target audience comes into play.

 - Do we want something  that I called "TiddlyWeb at Home",
   - which basically _must_ be a single click install.
   - The store needs to be file based, because we know form all other discussions. Standard users refuse databases.
   - Backup needs to be easy. aka file based and may be using Dropbox or friends ...
   - It needs to be easy to manage small groups. 1, 2, 3 up to 10 concurrent users.

For this group we could design a very basic "recipe" structure, with (kind of) fixed bag names.
 - which makes authorisation (r/w access) simpler.

We can keep the authentication simple.
  - username / password ... http for local networks with no internet exposure.
  - https for settings with public internet connection.

-------

If we target small businesses, IMO this is a completely different area.

 - Authentication systems may already exist. eg: single sign on, oauth, LDAP ...
 - Databases may be possible _but_ "disaster recovery" is a very hot topic here.
 - Handling database backups is more work then file based backups ..
 - An authorisation structure may exist and needs to be adopted ...

... do we want this?

IMO here we hit a big problem. ... I count schools as small businesses. ..
They always have @business like requirements but the admin resources and the complexity needs to be @home like.

Having a look at the group discussion, education users are always the first ones, that want a file TW to be multi user accessible.  ....

What does it entail?
  • user setup / registration / authentication?
This are 2 different topics.
 - setup / registration
     - @home: can be done by an admin.
     - @business: should be possible for the user. So web UI needed.

 - authentication is used to verify, that you really are, who you pretend to be.
     - @home ... imo will be a much simpler structure. cookie based.
     - @business ... will depend on the usecase and imo cant be laid out up front.  
  • "shared", multi-user wikis
    • access rights ? r / w
    • admin vs. editor vs. subscriber?
Especially dynamically share / include / combine bags may introduce higher complexity and will always depend on the usecase.
  • user wikis / spaces / profiles
This is mainly a naming convention, which has to be agreed upon.
  • "space" inclusion
Makes the UI and access r/w configuration much, much, .. more complicated. .. but projects like AMBIT or SunyIt rely an behaviour like this. ...

Just some thoughts.
mario

Tobias Beer

unread,
Mar 2, 2015, 8:07:22 AM3/2/15
to
Hi Mario,
 
I pointed to my console, where you can see, that managing recipes, bags and policies is easy. ... but creating a generic and simple to manage access concept for the basic recipes (TiddlyWikis) and the r/w structure is hard.

When I look at that "good old commander" console I am entirely convinced that one thing we need to get collaboration going is a (TiddlyWiki based) ui to manage TiddlyWeb, including authentication and registration workflows.

Two things I notice looking at the above are:
  1. it's not a TiddlyWiki
  2. I can't seem to even authenticate / log-in, even if I wanted to
Also, setting up recipes without using lists and checkboxes seems error-prone / too complicated. Doing this within TiddlyWiki should eventually simplify the process. However, any server interaction involving login / registration appears to require more components than TiddlyWeb on the server-side, e.g. some (login) forms / email workflows / adding a new / temporary user, discarding it after x-days non-activated, registration tokens, email validation, blocking users, all that jazz.

Not knowing how "socialuser" works, I think it's a bit of a problem / challenge to fiddle these things out every time you wish to implement TiddlyWeb... while sounding simple, user management / authentication / registration workflows have their challenges that do require some well designed workflows / components / processes.

Best wishes, Tobias.

chris...@gmail.com

unread,
Mar 2, 2015, 9:12:11 AM3/2/15
to tiddl...@googlegroups.com
On Mon, 2 Mar 2015, Tobias Beer wrote:

> Not knowing how "socialuser" works, I think it's a bit of a problem /
> challenge to fiddle these things out every time you wish to implement
> TiddlyWeb... while sounding simply, user management / authentication /
> registration workflows have their challenges that do require some well
> designed workflows / components / processes.

Unfortunately this is probably true, in no small part because people
have widely varying preferences for what is appropriate for user
management. For example some people prefer not to use Tank because
it requires one of a google, github or facebook account to log in. I
chose that, however, so that Tank has _zero_ knowledge of (or even
interaction with) a user's password.

One reason user management workflows aren't built into TiddlyWeb is
because one size won't fit all.

Tobias Beer

unread,
Mar 2, 2015, 12:20:03 PM3/2/15
to
Hi Chris, 

One reason user management workflows aren't built into TiddlyWeb is because one size won't fit all.

I imagined the rationale would be something like that. So, taking a look at socialusers for TiddlyWeb may prove to be the best approach to not start all from scratch.


For example some people prefer not to use Tank because it requires one of a google, github or facebook account to log in. I 
chose that, however, so that Tank has _zero_ knowledge of (or even interaction with) a user's password. 

I take it, tank implements its own authentication layer / workflow / processes / modules / forms, independent from or extending socialusers. So yes, wanting some form of user management sure does not necessarily mean wanting tank... but only those user-management-components when it comes to authentication, and possibly registration ...well, basic user management that works out-of-the-box-ish rather than after developing all of that from scratch.

Best wishes, Tobias.

chris...@gmail.com

unread,
Mar 2, 2015, 12:36:29 PM3/2/15
to tiddl...@googlegroups.com
On Mon, 2 Mar 2015, Tobias Beer wrote:

> I imagined the rationale would be something like that. So, taking a look at
> *socialusers* for TiddlyWeb may prove to be the best approach to not start
> all from scratch.

Yes, likely.

> I take it, *tank *implements its own authentication layer / workflow /
> processes / modules / forms, independent from or extending *socialusers*.
> So yes, wanting some form of user management sure does not necessarily mean
> wanting tank... but only those user-management-components when it comes to
> authentication, and possibly registration ...well, basic user management
> that works out-of-the-box-ish rather than after develop all of that from
> scratch.

tank's auth is a UI on top of
https://github.com/cdent/tiddlywebplugins.oauth and
https://pypi.python.org/pypi/tiddlywebplugins.magicuser

Danielo Rodríguez

unread,
May 21, 2015, 6:45:35 PM5/21/15
to tiddl...@googlegroups.com
Hello Jose,

Maybe you could check the couchadaptor


It requires a small setup in one couchdb provider. But any couchdb provider will give you:
* Free hosting onf the TW file as an attachment
* Free storage for your tiddlers
* Revisions
* Users management
* Wiki can be private or public with write restrictions

The plugin itself does not handle collisions, but you will always have the revisions available on the server.

Danielo Rodríguez

unread,
May 21, 2015, 6:48:23 PM5/21/15
to tiddl...@googlegroups.com
For a running example of this you can check my "test" wiki

Reply all
Reply to author
Forward
0 new messages