WubWikit

Summary

wubwikit bundles together Wub and wikit

Description

See Also

Wiki News
announcements and such
this wikit
old, obsolete problem list for

Obtaining

Github

After google announced it would shutdown google code, the repositories were moved to:

Wub
Wub server
Wikit
Wiki application on top of Wub

Google code

Code was hosted on google code:

wubwikit20120502.zip
the most recent release of wubwikit
install.tcl
a download/install script for wub
wiki database for offline use
has "wubwikit.kit" that is all the pieces in one file. Unfortunately, as of 2013-04, wbuwikit.kit is not up-to-date
wikit repository
wub repository

Building

RZ: To build a standalone wubwikit using kbs get kbs.tcl and run:

./kbs.tcl -r install wubwikit

[Fill in details about WubWikit, in particular, where to get the application, the differences between wubwikit and the traditional wikit, etc.]

MHo 2014-06-12, another try:

D:\home\Hoffmann\Downloads>tclsh kbs.tcl -r install wubwikit
=== Package eval: wubwikit
=== Require wubwikit
=== Require kbskit8.6 wub wikitcl tdbc tcllib1.15 sqlite3.7.15.1
=== Require eval: kbskit8.6
=== Require kbskit8.6
=== Require kbskit0.4 sdx.kit
=== Require eval: kbskit0.4
=== Source Cvs kbskit0.4
=== Require error: kbskit0.4
missing sources of package 'kbskit0.4'
=== Require error: kbskit0.4
Require failed for: kbskit0.4
Error in execution of 'install wubwikit':
=== Package failed for: kbskit0.4
Require failed for: kbskit0.4

Can someone be so kind to explain the process a little further, or point to an existing wubwikit.kit (Startkit) or wubwikit.exe (Starpack)?

Questions

WikiDbImage question.png

  • Does Anyone know how to deal with "templates" (a working example would be great)?

Within WubWikit? It's not really designed for that ... no way to specify a place to get the stuff to substitute into a wikit page. Wub has Mason domains which function like tclhttpd templates.

  • Could not find out how to specify a user defined "docroot" outside the source-tree for customization (with my own css, jQuery, etc...).

Configuration file, under Wub section, docroot element.

  • The "port" command line argument doesn't work as expected, value in the Listener section is not overwritten ?

This is a problem that needs to be reported under http://code.google.com/p/wub/issues/list with a more precise problem description.

  • Is there a possibility to run wikit under apache (cgi mechanism) ?

Wikit should (may) still run under Apache. WubWikit won't. Don't know any more.

Some room for improvement:

The possibility to upload images to the database is really handy and works quite well. It eliminates the need to specify a full qualified url and thus makes it really easy, to "carry around" wikiwub locally on different computers (running on different OSs).

There's just one more thing:

  • When performing a search, text and (database) images are treated the same way, which messes up the "last modification" page. Maybe this behavior could be improved a bit (search only text / search only for WikiDbImages).

Misc

MHo:

  • With the old wiki(t.kit), it was very simple to grab a copy of the starkit, define some simple cgi-wrapper and drive this through Tclhttpd. I suppose the new WubWikit only works with Wub - as the name says ;-) So, WubWikit never runs as a standalone CGI-process, is it right?

MHo: Will there be binaries available sometimes in the future?

LV: Anyone have a recipe for bringing up and running this latest generation of the wikit? Anyone created a starkit with the necessary code in it?

  • Is a downloadable copy of the wiki pages theirselves available, such as wikit.gz??

LV: If you mean a downloadable copy of the wiki pages, I don't think this is available yet. If you mean a downloadable copy of the executing code, see CMcC's comments. [This comment is obsolete now - a compressed copy of the page file is now available - wiki database for offline use ] MHo Yes I mean a copy of the database with the wiki-pages, e.g. to make it offline available or to keep a backup for restauration in case of vandalism...

CMcC: there's an interesting problem here: the wiki db is currently 95Mb, and clearly it would be a bad thing to allow too-frequent downloads (that's part of what brought the old wiki down - some clown doing multiple uncontrolled downloads - denial of service.) I'm trying to work out what a good policy might be to balance the utility of providing the download while bounding the cost.

Here are some policy questions to which I have no good answers:

  • What if everyone on the wiki wanted a daily db backup? That's about 90Gb/day, won't work. What about hourly?
  • What if we put a limit on the number of downloads per day? How do we stop one of the daily (hourly?) backup crowd from grabbing one of the slots without requiring login?
  • Should we require actual login for db downloads?
  • Could/should we require everyone who downloads the db provide it for others to further download? How would we do that? -- Lars H: This is exactly the kind of problem BitTorrent aims to solve, is it not?
  • How often should a given user be permitted to download a copy of the db? If they are doing it frequently, they're wasting enormous amounts of bandwidth.
  • Should there be some kind of db delta download? Like RSS like history: give me all the pages which have changed since <some date>

LV: The primary issue here is a limited resource - your bandwidth. So why not upload the data, compressed, to google, and let people download it from there. That way, the bandwidth issue is no longer yours - you upload to google once every N period (whatever you can afford) and let people get it from google. As for what the db delta - I don't have a need for that, a simple compressed .tkd file is all I need.

jcw 2007-06-30: The quick solution is to simply delegate: get one or more mirrors in place with a reasonably recent copy (I'd vote for daily). Then you don't have to deal with it. As for delta's: rsync is very effective for this type of data (either via ssh or as rsync server). If you want to go fancier, check out wikit's "-update" command (written before the history got added to the db, btw).

KJN 2007-11-23: I would occasionally download a copy of the database if I was going somewhere without fast internet access - it was very useful to have this facility. A daily, or even weekly, database dump to Google would be much appreciated. Page histories could be omitted. BitTorrent would also be a good solution.

jdc 7-dec-2007: I created a SourceForge project to download the wiki db: wiki database for offline use

RZ 11-dec-2008: Great work so far. But when I try to use wubwikit with my own *.tkd files I have on the left side the wikit categories. Is there a way to use my own ones? Is it OK to use the commandline argument "cmdport -1" to supress starting of the maintenance socket? This is needed to run more then one instance of the program.

jdc 11-dec-2008: You can edit the TOC file in directory docroot.

RZ Yes I can. ut then I end with a separate wubwikit.kit for each use case :( May be we can use some special pages. I remember from the old wikit the reserved first nine pages.

jdc 12-dec-2008: Can you try to use argument toc file:your_toc_file .

RZ 18-dec-2008: Sorry for the delay. I tried it with your suggestion. So far it works in the Tk mode (standalone). In the web server mode it is not working so far. If I find some time I will investigate further:) But thanks for your effort.


LV: Over on comp.lang.tcl, some details about this version of the wiki are being discussed. In particularly, there are particular URLs which cause specialty functionality to occur.

        https://wiki.tcl-lang.org/18028
        https://wiki.tcl-lang.org/18028.txt
  • a URL of the form https://wiki.tcl-lang.org/<PageNumber>.code returns all code blocks on the page. Code blocks are displayed separated by ### <code_block id=$blockid> ############################################################ tags. A code block is just one or more lines starting with a space or blocks delimited by ====== lines.
        https://wiki.tcl-lang.org/15312.code
        https://wiki.tcl-lang.org/18028.str
        https://wiki.tcl-lang.org/_/edit?N=18028
        https://wiki.tcl-lang.org/_/history?N=18028
        https://wiki.tcl-lang.org/_/ref?N=18028
        https://wiki.tcl-lang.org/_/revision?N=18028&V=47
        https://wiki.tcl-lang.org/_/revision?N=18028.txt&V=47
        https://wiki.tcl-lang.org/_/revision?N=18028.str&V=47
        https://wiki.tcl-lang.org/_/revision?N=18028&V=40&A=1
        https://wiki.tcl-lang.org/_/diff?N=18028&V=58&D=57

        https://wiki.tcl-lang.org/_/diff?N=18028.txt&V=58&D=57

        https://wiki.tcl-lang.org/_/diff?N=18028.str&V=58&D=57
        https://wiki.tcl-lang.org/_/diff?N=18028&V=58&D=57&W=1

        https://wiki.tcl-lang.org/_/diff?N=18028.txt&V=58&D=57&W=1

        https://wiki.tcl-lang.org/_/diff?N=18028.str&V=58&D=57&W=1

gobvip 2010-07-19 How to open debug message in wubwikit?

Debug.wikit {"debug message"}   ;# I want this command print something. How it works?

JOB 2011-03-30: Script to start wubwikit.

Note: We now do have a "config" command line option.

Here is the start script:

#!/usr/bin/ksh

# Script to start wubwikit...
# Purpose:
#    In the hope, to bring some light in the mystery of wub-configuration.
#    March, 2011, Johann Oberdorfer
#    -- enjoy! --

# Wub's info page: https://wiki.tcl-lang.org/20412
# requirements:
#   - minimum tcl version is 8.6
#   - a platform dependent kit version including sqlite3 and tdbc packages
#   - source *.vfs tree (CVS checkout or similar) + binary including sqlite3 and tbc
#     for windows ActiveTcl offers a convinient way (installer)
# wikiwub configuration:
#   - 

PREFIX=`dirname \$0`
THIS_PLATFORM=`uname`


case ${THIS_PLATFORM} in
    "Linux")
        TCLKIT_EXE=./Linux64_kbsvq8.6-gui
        ;;
    "Darwin")
        # ActiveTcl installation:
        TCLKIT_EXE=/usr/local/bin/wish8.6
        ;;
    *)
        TCLKIT_EXE=/usr/local/bin/wish8.6
        ;;
esac

WUB_WIKIT=${PREFIX}/wubwikit20110317/main.tcl
WIKIT_DB=${PREFIX}/db/my_wiki.tkd

# WIKIT_DB=${PREFIX}/db/wikit-20110307.tkd

# create a new database / local / configuration file:
# ${TCLKIT_EXE} ${WUB_WIKIT} mkdb     ${WIKIT_DB} title "My WikiWub"
# ${TCLKIT_EXE} ${WUB_WIKIT} mklocal  ${PREFIX}/wub_local.tcl
# ${TCLKIT_EXE} ${WUB_WIKIT} mkconfig ${PREFIX}/wub_config.tcl


# Start the http server...
# ------------------------
# see main.tcl for additional configuration...
# set TMP=.\tmp


echo "------------------------------------"
echo "Open URL: httpd://localhost:8090 ..."
echo "------------------------------------"

# Note:
#   when specifying a port as argument,
#   make shure, the Listener section in the wub_config.tcl file
#   is configured with the the same value - some kind of missbehavior in the current version ?!

${TCLKIT_EXE}  ${WUB_WIKIT} \
    local ${PREFIX}/wub_local.tcl \
    config ${PREFIX}/wub_config.tcl \
    wikidb ${WIKIT_DB} \
    port 8090
    #?????? docroot ${PREFIX}/my_docroot

WikiDbImage question.png

JOB 2013-10-24:

  • I upgraded to the most recent wbuwikit20120502.zip code.
  • Since this release, sqlite FTS is used, which requires a few more tables on the database.

The question now is: how do I migrate the database(-file) ?


MHo 2014-06-12: Just grabbed the latest available wubwikit.kit and started it just specifying wikidb xyz. The following errors appear on the html page:

Server Error: no such table: pages_content
no such table: pages_content
Error Code 'NONE'

no such table: pages_content
    while executing
"::oo::Obj73::db eval {SELECT * FROM pages_content WHERE id = :pid} ::oo::Obj102::-resultArray {::namespace inscope ::oo::Obj102 {my RecordResult}}"
    ("uplevel" body line 1)
    invoked from within
...

xyz was a newly created db. Is there something to be done to fill in the initial pages etc.?

MHo 2014-06-13: Sorry, I overlooked mkdb, mklocal, mkconfig and the like. Now I fight against

The Wiki is currently in Maintenance Mode

No new edits can be accepted at the moment.

Reason: no such table: pages_content_fts

By looking at the sourcecode or showing help I found that I need to call wikidb xyz mkfts 1 in addition. ok.

JOB 2014-11-15:

mkfts command executes the following statements on the database:

DROP TABLE pages_content_fts;
CREATE VIRTUAL TABLE pages_content_fts USING fts4(id,name,content);
INSERT INTO pages_content_fts SELECT a.id, a.name, b.content FROM pages a, pages_content b WHERE a.id = b.id;

JOB - 2014-11-18

wubwikit with FTS support:

Scenario:

Running ActiveTcl on Mac OSX 10.9.5 with the following versions installed:

  • Versions used: Tcl/Tk 8.6.2
  • sqlite3: 3.8.6 / tdbc 1.0.0
  • wubwikit: 2012-05-02

Using teacup to install dependencies such as:

sudo teacup install sqlite3
sudo teacup install tdbc
sudo teacup install tdbc::sqlite3

is not sufficient, as it installs the default sqlite3 library without FTS support!

So, Sqlite3 needs to be compiled to have FTS support enabled. Downloading the source and re-compilation is required:

./configure CPPFLAGS="-DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS"

Now, we can execute wish to launch wubwikit with an already existing database file.

  • Make sure to execute the command, which creates the required tables for FTS only once (which is commented out in the shell script down below).
  • Also make sure to have a FTS enabled sqlite3 binary in your auto_path (which by default, is ""not"" the case), as already mentioned.

Finally:

  • In WikitWub.tcl all occurrences of -readonly 1 arguments need to be changed to: -readonly 0 as readonly -1 is not implemented in the tdbc::sqlite3 source code so far.
tdbc::sqlite3::connection create db $dbfnm -readonly 0
#! /bin/sh
TCLKIT_EXE=wish8.6
WUB_WIKIT=./wubwikit20120502/main.tcl
WIKIT_DB=./db/my_wikit.tkd

# create missing tables for sqlite FTS search ability:
# $TCLKIT_EXE $WUB_WIKIT wikidb $WIKIT_DB mkfts 1

$TCLKIT_EXE $WUB_WIKIT local ./wub_local.tcl config ./wub_config.tcl wikidb $WIKIT_DB

That's all for the moment.