Revision [3338]

This is an old revision of WikkaDevelopment made by GmBowen on 2004-12-17 03:52:26.

 

Wikka Development

Last edited by GmBowen:
comments on JW's comments.....
Fri, 17 Dec 2004 03:52 UTC [diff]

CategorySystemOverhaul

Things in the next release

I'm planning on putting out a small bugfix release within the next few days. If you have something that you would like to see in this release, make a note here and I'll take a look at it. -- JsnX, 26 Nov 2004


Things to be fixed before releasing wikka-1.1.6.0:
Here's some sparse thoughts from a first test of the beta version:



I saw it in the SandBox and it messed up things royally there... disabled it, and added notes about my findings.
I agree with Dartar, I'd like to see WikkaReleaseNotes included as a default page; if one doesn't look at it, fine, but at least it's there if you do need to consult what was changed (and why) and it's much more readable than what {{wikkachanges}} produces. I'd vote for just removing the {{wikkachanges}} action and simply including a WikkaReleaseNotes page. --JavaWoman


Have both of you thought how this would be implemented?? It's easy to include a default page on install. However, what are we going to do on upgrade? Are we going to overwrite the page? (Yes, of course! And that's what you'd do with a text file as well - what's the difference?) What if the site has changed the page? (Include a note on the page that it is a system page that will be overwritten on upgrade; if possible protect the page from editing by anyone but admin on install.) I think it would be annoying for the upgrade script to overwrite an existing page. (But you would be overwriting the text file - what's the difference? A page is just a more readable version. And we wouldn;'t need to keep the same information synchronbized in two places - always a bad idea.) Hence the solution that I have proposed. In addition, how long is it going to be before someone says, "Hey, why don't we include a text file that lists the changes". (Maybe very long - it hasn't happened, has it? See how it goes.) Once again, we take care of this by including the text file and then showing it in the wiki. Sites are not going to update the Wikka release notes--it's static data. Why have it as a wiki page? (For readability, and it fits in simply with the system. Yes, sites are not going to update the release notes - in whatever form. And if they do want to update them, they could do that with the text file just as easily.)
My 2 cents. On the one hand, I agree with JW as far as readability is concerned: it is much better to have a formatted version, with headers etc., possibly with links, than a plain-text version (the first thing I thought when I saw the SandBox page full of raw text was : "gosh, the formatters are broken!"). This said, there is a question that none of you has mentioned so far. How are we going to deal with internal links that are present in the current WikkaReleaseNotes page? Either we distribute a version of WikkaReleaseNotes with no internal links and no camelcase words left or we have to think of a solution to avoid generating a ton of missing pages. IMO, one interesting solution (which might require some futher development, though) is to use a IncludeRemote FetchRemote strategy to retrieve fresh and uptodate documentation on the new release from the main server (JsnX, have you tried to install the plugin locally?). This has the advantage of avoiding writing a hardcoded page in the user's database and - as Jason was suggesting - let the user free to decide where to add the release notes (it is just a matter of adding somewhere {{fetchremote page="WikkaReleaseNotes")). On the other hand, I was wondering: is there really a problem with overwriting an existing page? Provided the installer says explicitly it is going to overwrite one page, this page will be nothing more than a version of the page (that's the power of wikis!): if a note is added like "updated by the Wikka installer", the user will always be able to retrieve previous versions of the same page if needed. So I don't really think that overwriting is a problem. -- DarTar

Sorry to keep hammering on this, BUT :), let's see how your logic holds up:
Is there really a problem with overwriting an existing HomePage? Provided the installer says it is going to overwrite the HomePage, the new HomePage will be nothing more than a version of the page. The site admin will always be able to retrieve the previous version of the HomePage if needed. So I don't really think that overwriting the HomePage is a problem.
Sounds absurd, doesn't it?
Um, yes. What goes for the HomePage goes for the WikkaReleaseNotes: "overwriting" simply means creating a new version in the database. So I don't really think that's a problem. ;-) --JW

As I said above, I don't consider this a problem. But even if you don't agree with this, consider that no one is proposing here to overwrite a page like HomePage, but a page with a sufficiently clear 'system default' name (like WikkaReleaseNotes) that will hardly be modified by Wikka users (and if it is, again, it's just a version..). -- DarTar

Regarding JavaWoman's comments:
Your first point was that the installer would overwrite the text file, so why not overwrite a page.
That's not correct. The site admin would overwrite the text file, by his choice of uploading the new file to the webserver. It would be his choice to overwrite the file. See the difference?
Most site admins would not "upload the [separate] files" but rather upload the archive to the server, untar it there, and then run the upgrade routine. Just untarring would replace all files. And why would one not replace a release notes (text) file? It contains all previous information, doesn't it?
Your next point was that it's a bad idea to keep the information in two places.
So you are suggesting that we should only make the information available online and after the upgrade has already happened. Wouldn't you want to know what has changed before you upgrade?
It is known before you upgrade because it's right here. --JW
I could go on and on. The bottom line: it's standard for software distributions to include a text file that describes changes. This is where most people will look for the information....and they will want to review the changes before they decide to upgrade--not upgrade and then review what has changed. I'm in favor of using {{fetchremote}} to make the information available online, but also including a text file that can be reviewed offline. Here's an example of how the text file might be useful: Let's say an upgrade breaks an existing site. The admin could view the text file to help narrow his focus for fixing the problem. ... I'm going to throw in one more thing just to preempt it: But couldn't the site admin just view the release notes on WikkaWiki? That's possible, however this site might be down. It could be down from a denial-of-service attack. I could be dead and thus not able to pay the bill. Who knows? By including a text file we won't have to worry about any of this. -- JsnX
Actually, many applications have all their documentation online, except maybe a small readme and a license file. Most people don't download first, then unpack an archive, and then read a changes file to see what's in the latest release: they read the release notes online before even downloading. Sure a site can be down - that can always happen. Many possible causes (and it happens to the best of them). As to you being dead and not being able to pay the bill - that's an entirely different discussion (one we should have, about continuity and how to ensure it, but not here in this context). But the whole idea of including release notes is to provide a reference after download and installation - but that won't normally happen until after one has checked the release notes online to see whether it's worth the download in the first place.
My argument about keeping the information in two different places and two different formats identical still stands, meanwhile - how do you propose to make sure the two versions have identical information at all times? Even if you have a reliable procedure for that (you'll need a script) - it's extra (unneeded) work, as is creating a special action to show the contents of the text file: two files, two programs, all to show the same content? A simple page that (for now) shows just a link or (later) pulls the content directly from the site will be much simpler. -- JavaWoman


Regarding this point, I don't agree with JW's argument. I think a text version with the release notes, accessible to the Wikka administrator before untarring and uploading the package makes perfectly sense (and actually is very common in software distributions). I really don't see the problem with "keeping information in two places": before releasing a new version, the text release notes can be created in 5 seconds just by copying and pasting in a text editor the formatted output of WikkaReleaseNotes. So where's the problem? -- DarTar

In referring to "keeping information in two places" I'm thinking of a build process, assuming (not the case now!) that all the to-be-released files are in a CVS branch, and you just run a script to turn that into a distribution. The files in that branch should -at all times- be up-to-date, which includes any text files to be included. So what happens while you're working on a new release? Something like this - for every change to be made for the next release:
....
The set of files in the repository should be "complete" at all times to be able to do a build; which (in your proposal) means also repeatedly copying the WikkaReleaseNotes (manually, or via a script) - not just once, but for every change being made. It's an extra step, and doing that step is a manual process (even if you run a script to do the copying, running the script is a manual step). People do forget steps :), so the fewer manual steps there are, the more reliable the build and release process will be.

On the other hand, a static WikkaReleaseNotes page with a link to the online WikkaReleaseNotes would need to be created and committed only once; no redundant and easy-to-forget manual steps needed any more. --JavaWoman

Why don't we focus our energy on making the {{wikkachanges}} action better? JavaWoman, you are detailing problems with my crappy action that I spent ten minutes on to demonstrate the concept. Wouldn't it be possible to tweak the action to output the text to your satisfaction? (What I see is is a far less readable version, and if it's in a text file, then how are you going to keep the two synchronized? We already have WikkaReleaseNotes - if you just include that it's simpler (it's already there), more reliable (nothing to synchronise, the data is in one place, not two), and more readable (no extra action needed either).)

I'm proposing that we name the page WikkaReleaseNotes for a reason. Let's imagine that Linus decides he wants to create a Wikka site name LinuxWiki to document his Linux kernel. If we name a default page as WikkaReleaseNotes, won't this confuse people on the LinuxWiki site when they are looking for the release notes for Linux? What will Linus name the page that describes the release notes for his software? You might say, he could just overwrite the Wikka release notes with whatever he wants. But then what happens when he upgrades to a new Wikka version? Do you see the problem that we are creating? (So rename it WikkaReleaseNotes here and include that page as a system page. I agree that the name is not optimal - but the same is true here already. Note: this rename has been done now --JW)

I don't like the idea of us forcing pages on people. If we make the release notes as an action, people can have the release notes show on any page they want. They could create a page named WikiEngineChanges and place the {{wikkachanges}} action on it, and when they upgrade, the changes will show up on the page that they decided. (So they create a page called WikiEngineChanges and just {{include}} the WikkaReleaseNotes on it.) If we force a page named WikkaReleaseNotes, we are going to create an unnecessary struggle with site owners that might not want to have the Wikka release notes on a page named WikkaReleaseNotes. (It's just another "system" page, like SandBox and FormattingRules. I don't see the problem.) -- JsnX

Comments embedded above to make them more relevant to context -- JavaWoman

I gave above some more reactions about my way of seeing the problem of release notes. I'd like to propose here some steps towards a solution that I hope we might all agree upon.
===== Wikka Release Notes ===== 
This server runs on [[[http://wikka.jsnx.com/ Wikka Wiki]] version **{{version}}**.
The new features of the current version are described on the [[http://wikka.jsnx.com/WikkaReleaseNotes main Wikka server]]

In the future, this action will be replaced by a FetchRemote action.
(BTW it might be interesting to add named anchors in WikkaReleaseNotes to facilitate referring to specific Wikka versions)

Is this an acceptable compromise? ;) -- DarTar


===== Wikka Documentation ===== 
A comprehensive and up-to-date documentation on Wikka Wiki can be found on the 
[[http://wikka.jsnx.com/WikkaDocumentation main Wikka server]]

Agreed. --JavaWoman

For the time being, what about creating a default page called WikkaReleaseNotes containing a static link to the online WikkaReleaseNotes? (see my note above on why creating or overwriting a page during upgrade is not really a problem) -- DarTar

Actually, I'd like to see our current ReleaseNotes page here renamed to WikkaReleaseNotes; pages relating to Wikka itself really should start with 'Wikka': we already have WikkaDevelopment, WikkaBugs, WikkaBugsResolved, etc. (why not WikkaDocumentation?) - WikkaReleaseNotes would neatly fit into that pattern and be clearer than just "ReleaseNotes". Then someone writing about, say, a Calendar can create a page like FancyCalendarWikkaReleaseNotes etc.
I agree with DarTar that a page with a static link to the online release notes here, to be included with the install, would be a good temporary solution; to be replaced later by a mechanism like FetchRemote (once finished - but let's not wait for that!) (Note: edited somewhat for readablity - we now do have WikkaReleaseNotes and WikkaDocumentation as suggested.) --JavaWoman


=====Welcome to your Wikka site! ===== 
Thanks for installing [[Wikka:HomePage WikkaWiki]]! This site is running on version {{version}} (see WikkaReleaseNotes).
Double-click on this page or click on the "edit page" link at the bottom to get started.

Also don't forget to visit the [[Wikka:HomePage WikkaWiki website]]!

Useful pages: FormattingRules, WikkaDocumentation, OrphanedPages, WantedPages, TextSearch.


OK.
This should do it:
<?php
echo $this->VERSION;
?>
Save as actions/version.php --JavaWoman (who for once doesn't document what she writes. ;o) )

Here it comes: this is Wikka version Unknown action ""version"". I wonder if it wouldn't be better to have such basic system plugins handled by the wikka formatter, instead of using an action. And maybe in the future {{version}} will print a link (fetchable or not) to WikkaReleaseNotes? -- DarTar

I'm in Rom till sunday so don't expect big changes before monday. Nils
Dropped. Geez, in the whole wide world it's only the Americans who spell it without the "u"....so we keep the U.S. spelling? Ironic.
spelling is ironic - you can always add a colour action yourself containing nothing but an include of actions/color.php, if you must. :) --JavaWoman
Liberia???? Japan I get (beaten in war). OAS I get (sucking up to U.S. ;) ). LIBERIA??? Liberia I don't get. BTW, I didn't mean that spelling was ironic, I meant that the decision was, given efforts by various members on this wiki to "internationalize" the wiki. (Or, I could rename the file. Writing an action to include an action is a programmer's solution obviously. LOL ;-} ) -- Mike

must be replaced with the appropriate call to $this->FormOpen():



Things to be fixed before releasing wikka-1.1.6.0 (JW's take):

After (and in addition to) all the discussion above triggered by DarTar's notes, here are my own observations based on careful code inspection (sometimes better than testing ;-)). See also my thoughts in WikkaGeshiIntegration.
Numbers within brackets refer to (approximate) line numbers.

GeSHi integration
See also WikkaGeshiIntegration.

general:

resolved in version 1.0.4:

integration:
(See worked out solution in WikkaGeshiIntegration (except for installer/updater - will follow soon))
$geshi =& new GeShi($sourcecode, $language, $this->geshi_path);

to be done:
=> at least ones that are highly likely to be used in our (online) implementation:

Bugs and other issues/problems

Major
formatting:
looking at the code I'm not sure this will work correctly. It wil "accept" numerical entity references but not named entity references - so those still won't work. (And strictly, its operation doesn't have anything to do with Unicode, only with entities - which may encode Unicode characters but entities are not themselves Unicode.)
Also, there is no option for the quote_style and charset parameters as in the PHP original, so we lose functionality here, too. It's probably better to have a "wrapper" function around the PHP one, which (after applying the PHP function, passing on the extra parameters) merely reverts all ampersands that are for any entity references (numerical or named); thus the wrapper function should accept all parameters the PHP function does. And since we are supposed to produce XHTML, ENT_QUOTES should probably be the default for quote_style; maybe also UTF-8 should be the default for charset?
Note: the INI code formatter used ENT_QUOTES and this has now disappeared (it was there for a reason!). But an entity used in code should be visible as an entity, not as the character it encodes. Conclusion: a code formatter should use the PHP function htmlspecialchars() so that any entities are "escaped".

handlers:
=> Note: working with CVS (on SourceForge) - and access to it for developers - could prevent this sort of code mangling.

Minor
installer:

main:

handlers:

actions:

--JavaWoman


[for the next minor release]

RR on
			"root_page" => "HomePage",
"base_url" => "http://wokka/",
"rewrite_mode" => "1",


RR off
			"root_page" => "HomePage",
"base_url" => "http://test/wikka-1.1.6.0b/wikka.php?wakka=",
"rewrite_mode" => "0",


Hope this helps -- DarTar


DarTar kind of gave you the key....
Forget about the wrong information that your ISP gave you and read ModRewrite. -- JsnX


[for the next major release]

- See my questions at HandlingWikkaConfig. NilsLindenberg


Ideas

Save Pages to PDF Format
Page output to an Adobe pdf file using FPDF.
E-mail this page facility
--JamesMcl


Usergroups
Yet another idea from me:
Usergroups. So i can create a group of users, and just write that group into the ACLs...
- Take a look at GroupManagement (which doesn't seem to be finished)

"In work" for Wikka-pages
Add a page property, 'Status' [?] that can be used to facilitate code development within Wikka. Imagine a very basic CVS system. A user can change the status to "In use' while considering improvements to the code, and then change it to 'Available' when done. This may prevent this scenario:
OR

Comments:
Dangerous! Consider the following scenario: user has been hard at work all week, now it's Friday afternoon and there's some time to do an edit or three. User opens each page in a browser tab, marking all three as "in use" and starts to edit them. Clickety-click. Suddenly user realises he has to run to catch the train home. Run! On the train, user realises the three pages are still open in the browser and "in use". "No matter", thinks our user, "it's always quiet during the weekend and I'll get back to it first thing Monday morning. On Sunday afternoon, user plays soccer, as he always does, and breaks a leg, which he usually doesn't do. User is transported to hospital where he has to stay for four weeks. ... A bit exceptional maybe - but what do you do with "dangling in uses" and when (how) are they considered "dangling" in the first place? --JW
Good point, but this modification would be only an informational resource to facilitate user communication. Techically, users could still update the page any time they wanted. It would just be a courtesy to hold back if you saw that a page was 'in use.' I didn't mention it above, but I planned to also add a field that would timestamp when the status was last changed. So in your scenario, we would see that the page had been marked as 'in use' for several days and feel free to ignore it. However, this does bring up the idea that it would be good to also have a 'note' box available for updating the page status -- used for comments such as, "should have the code updated within a few hours." Better now? -- JsnX
I've got code/table changes done that indicate if anybody (other than oneself) opened the page to "edit" in the last 15 minutes. It's on an iteration that isn't "live" right now (it's part of an earlier installation of wikka that we just haven't brought the code forward from yet), but I can make it that way so you can test out the functionality if you want. Since much of our site will be geared towards small teams doing collaborative editing, it was designed so that editing conflicts would not occur. Let me know if you want me to get it installed at a test site. -- GmBowen
I agree, it's an important issue (some Wakka forks have already addressed the problem of concurrent editing) -- DarTar
JsnX: If it's purely informational, that's better; I thought the intention was some kind of locking. So you'd have something like:
Then - would the state apply to the logical page or to a particular version? If the latter, what happens if a page is reverted to that version? What happens to the state when another user goes ahead and edits the page anyway?
And I still think you'd need some kind of admin function to "clear" dangling in use states that are older than xx minutes/hours/days.
GmBowen: is yours completely automatic or user-initiated? What happens in the run off to catch the train scenario? -- JavaWoman
(i) it's purely informational, not a "lock"...it sets a red exclamation mark beside the page name at the top if the "edit" link (or double click) has been used in the last 15 minutes by anybody other than yourself (ii) it's automatic (iii) the "train scenario" can't happen. It doesn't check if "saved" or not, just whether an edit was started in the last 15 minutes. This means that if the person doing the edit hasn't saved in the last 15 minutes when editing then the exclamation mark isn't activated for another user. But, people should save edits every 15 minutes anyways methinks. It's not "foolproof", but was meant to avoid many sorts of common editing conflicts on collaborative documents. It's not a very "big" edit of the wikka code actually. The edit.php script timestamps the most recent version of the page when it is activated, and there's a small addition to header.php that checks when the page is loaded to see if the current time is < 15 minutes from that timestamp & if so shows an exclamation mark. Finally, there's a small linked graphic that "refreshes" the page beside "homepage" and the "edit" link (essentially, it's just a link to the page itself) so a user can check the edit status before deciding to edit it themselves. For server load reasons I decided to not have an automatic check (once every 5 minutes for example) since most people read & don't edit much of the time so it made sense more to encourage people to check edit status themselves. Of course, it would also be possible to have edit.php check to see if the file was edited in last 15 minutes and if so, ask the user if they wanted to continue with their own edit. Hmmm...I'll have to think about that. As it sits it worked pretty well when tested (but remember, I'm into small group collaborative writing tasks....I'm not sure how it would work if the pages were "open" to everyone). It originally took me several hours to write the code myself, but I'm sure it would take JW or DarTar or Jason maybe 30 minutes....and the code would probably be more efficient (I'm not a real coder remember :-( ) -- GmBowen (aka Mike) (I've now provided my code & mods @ [GmBowenRecentEditCheck] for people to play with)


Searching (in) comments
Add the ability to 'search for all comments by user X'. How this might be useful: I want to find a comment by JavaWoman (really?), but I can't remember which page it was on -- she's quite prolific! -- (I admit I'm easily distracted. What am I doing here, now!? :)) so I use this new function to list all of her comments.
Yes. And related: an extension of this or the general search function to search by comments content (in addition to page name or page content) would, I think, be also useful. --JW
Agreed. -- JsnX
Nice idea :). For comments by user X (and, why not, mods by user X) we could imagine something similar to Google syntax for site-restricted queries. E.g.: I18n user:JavaWoman. The scope of the query (pages, mods, comments, anywhere) should be settable as a radio button (similar to Google's restrict search options). FYI, Comments by user X, Pages owned by user X and Changes done by user X were already partially addressed by the following action proposals: UserCommentsAction, UserPagesAction, UserChangesAction -- DarTar
In general....given the complexity (and utility) of some of the conversations now happening in the comments, I think that we should consider either (i) the current textsearch being expanded to include the comments, or (ii) a separate action be written directed at searching the comments table (possibly an easier route). The latter might mean we consider renaming the search pages to SearchText, SearchTextExtended & SearchComments. [I now realize that this "search comments" feature is a "lost" feature. I realize now that earlier versions of this wiki had the comments stored in the pages table and were therefore searched. When they were moved to a separate table, the ability to search comments was lost. (Update: See my GmBowen directory for a (temporary) solution for this....even separates results for comments & pages into two columns) A separate action to list all comments by a user would also be useful. In a related comment on the comments, and given my arguments about the complexity of conversations in some of the comment threads now, I suggest that we also consider developing code for threaded discussions in the comments....which I think will considerably enrich collaborative efforts (such as we engage in). -- GmBowen

It would be good if the text-search would be sorted in some way. If I search for example for "GmBowen", a page with the exact match (his userpage) should be on the top of the results. The next results perhaps in alphabetical order? --NilsLindenberg

Low priority:
- Add fields to the 'users' table [?] to track when RecentChanges and RecentlyCommented were last viewed. Then RecentChanges and RecentlyCommented can by modified to highlight new items since the user last viewed the page.
If it's only for highlighting, OK, but I'm not waiting for that. If it's for filtering, please no. I quite often trace back several days to re-review pages or comments --JW
OK. Point taken. I was considering doing some form of filtering, but will now only consider higlighting, as requested. -- JsnX
I totally agree with JW's point -- DarTar
Actually, I could imagine separate functionality with filtering being useful on a busy site, but then as, say, UnseenChanges and UnseenComments - in addition to the current "Recent" functionality; that way the semantics of "recent" would not be changed. But I agree it's low priority. --JavaWoman


Implemented


This was added to Wikka in version 1.1.6.0.
- New usernames should be checked against existing page names. This was prompted by a new user named 'HomePage'.

For wikka.php:
<?php
    /**
     * Check by name if a page exists.
     *
     * @author      {@link http://wikka.jsnx.com/JavaWoman JavaWoman}
     * @copyright   Copyright &copy; 2004, Marjolein Katsma
     * @license     http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
     * @version     1.0
     *
     * @access      public
     * @uses        Wakka::Query()
     *
     * @param       string  $page  page name to check
     * @return      boolean  TRUE if page exists, FALSE otherwise
     */

    function ExistsPage($page)
    {
        $count = 0;
        $query =    "SELECT COUNT(tag)
                    FROM "
.$this->config['table_prefix']."pages
                    WHERE tag='"
.mysql_real_escape_string($page)."'";
        if ($r = $this->Query($query))
        {
            $count = mysql_result($r,0);
            mysql_free_result($r);
        }
        return ($count > 0) ? TRUE : FALSE;
    }
?>

For actions/usersettings.php - insert after line 151:
<?php
        if ($this->ExistsPage($name))
            $error = 'Sorry, this ""WikiName"" is reserved for a page. Please choose a different name';
?>

and change if on the next line to elseif. That should do it, I think. -- JavaWoman






CategoryDevelopment
There are 8 comments on this page. [Show comments]
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki