Pliant talk forum

Pliant talk forum

Discussion: Fullpliant utltimate roadmap

Here I will try to describe the steps to the Fullpliant
final system.
Message posted by hubert.tonneau on 2005/02/15 11:32:41
In a fiew days, I will post a new Pliant release with the first shot of the
Pliant browser (not usable for anything but discuss).

One problem with the Pliant browser is that the application interface is more
different from .page than what I expected, and the main reason is that
more informations need to be provided by the server to help the browser
behave efficiently.

On the other hand, it seems that the Pliant will have 5 frontends (Linux
frame buffer, VNC, X11, Windows and HTTP).
The HTTP frontend will be a new Pliant HTTP server, sharing no code with the
existing one, that will translate Pliant browser sessions to HTML as far
as possible.

So, most Pliant applications, except the ones that clearly target the web,
will have to switch to the new interface (Pliant existing HTTP server will
be kept unchanged), and the result is that access from a standard web browser
will be even more rough (no nice looking and no possibility to access some
features), but on the other hand, access through Pliant browser will be much
more convienient than any existing web interface, and even VNC access will be
very nice if bandwidth and latency is good enough.

Now, on the storage side, I will soon introduce the final Fullpliant
storage system, which is a kind of generalisation of the Pliant database
From the application point of view, no serious change will be required.
The main difference is that a Pliant database is currently entered through
the global variable handling it, and will then be entered through it's URL.

The Pliant storage system will be abble to store more kind of objects, not
only databases, with the same principles (a crash is not a problem),
but it will introduce efficient cross server datas sharing and replication.

On the down side the current 'split_field' feature will probably not be
supported anymore.
Message posted by marcus on 2005/02/15 21:21:28
> One problem with the Pliant browser is that the application interface is more
> different from .page than what I expected, and the main reason is that
> more informations need to be provided by the server to help the browser
> behave efficiently.

Do you mean current .page instructions will be phased out and replaced with 
something different for relase 94?
Message posted by hubert.tonneau on 2005/02/15 21:40:15
I mean that .page is no good to drive Pliant browser.

Please find below a trivial sample of a Pliant database using the current
Pliant databas eengine, but accessed through Pliant browser as the user
interface: it's not completely different, but there are still significant
differences so that automatic translation would be impossible.

.page will remain the interface for the Pliant HTTP server, but HTTP will
not be any more the recommended user interface for Pliant applications.

So, you are probably the first concerned because the courses for Pliant
beginners will have to be upgraded.

module "/pliant/appli/database.pli"
module "/pliant/language/unsafe.pli"
module "/pliant/admin/file.pli"
module "/pliant/graphic/browser/server.pli"
module "/pliant/graphic/browser/lib/all.pli"

type SampleRecord
  field Str an_str
  field Int an_int

type SampleDatabase
  field Str a_field
  field Str a_select
  field Set:SampleRecord records
file_tree_create "data:/pliant/sample/"
(gvar Database:SampleDatabase sample_database) load "data:/pliant/sample/database.pdb" mount "/pliant/sample"

browser_page "pliant://localhost/db_sample/"
  section "all" dynamic
    window left
      input "Key: " (ovar Str k)
      button "create record" key "alt c"
        sample_database:data:records create k
        section_refresh "all"
      button "delete record" key "alt d"
        sample_database:data:records delete k
        section_refresh "all"
      button "exit" key "alt x"
    window main
          font size 16*25.4/72
              text "Database sample form"
        input "Sample field: " sample_database:data:a_field
        select "Sample select: " sample_database:data:a_select
          option "value 1" "v1"
          option "value 2" "v2"
          option "value 3" "v3"
        table border 0.3 padding 0.5
            cell text:"key"
            cell text:"string"
            cell text:"value"
          each r sample_database:data:records
              cell (text keyof:r)
              cell (input "" r:an_str)
              cell (input "" r:an_int)
Message posted by hubert.tonneau on 2005/02/15 22:05:19
If you want to give it a spin, I've uploaded

You can start the server with:
pliant 'precompile /binary/browser.dump module /pliant/install/minimal.pli module /pliant/graphic/image/rip.pli' module /pliant/graphic/browser/sample/fullpliant.pli command browser_server

Then the browser with:
pliant 'precompile /binary/browser.dump module /pliant/install/minimal.pli module /pliant/graphic/image/rip.pli' module /pliant/graphic/browser/client.pli command 'browser "antialiasing 1 dpi 100"'

If you have fonts trouble, try to untar:
be carefull, it will overwrite your font.pdb

The samples are in directory:

I'll publish a plain Pliant release when a more decent set of basic features
is in, and I need to upgrade the client/server set of instructions in order
to be more sync with the futur general storage system.

Now, keep in mind that there is no security at all, so the best at the moment
it to unplug the network connection while you are running the server.
Message posted by marcus on 2005/02/16 01:30:55
I got an error message when trying to start the server. The error message is:

Failed to load ELF DLL /pliant/pliant/graphic/misc/
compile /pliant/graphic/misc/vector.pli (internals) 13 5

Message posted by hubert.tonneau on 2005/02/16 08:19:09
> Failed to load ELF DLL /pliant/pliant/graphic/misc/

This is a DLL used to speed up some very computing intensive parts on large
production server that Pliant current code generator optimises too poorly
(Pliant uses the old i386 stack based floatting point instructions with no
optimisation whereas I should switch to SEE2 which is registers based
for modern processor)

Just remove the /pliant/graphic/misc/ DLL and Pliant will switch back
to only native Pliant code.
Message posted by marcus on 2005/02/16 11:00:00
I am a bit confused on how to test the thing.

Usually, when I run the HTTP server, the process stays in the background.

I have run those two commands, which start the server and browser. But after I 
run each of them, I get the OS command line prompt back.

What should I do next?

Message posted by hubert.tonneau on 2005/02/16 11:14:10
The server fails to get TCP port 4 (you are not root, and you don't run
FullPliant Linux kernel that let any user open any TCP port), so it shuts down.
Then the client fails to connect to the server, so it shuts down.

In /pliant/graphic/browser/server.pli, near line 250, change
  tcp_server_fields "Browser" 4
  tcp_server_fields "Browser" 8888

Then in /pliant/graphic/browser/context2.pli, near line 837, change
    host := host_and_port ; port := 4
    host := host_and_port ; port := 8888

and near line 119, change
      (var Stream s) open "tcp://"+ip+"/client/4" in+out+safe
      (var Stream s) open "tcp://"+ip+"/client/8888" in+out+safe

and once again near line 141.

Message posted by hubert.tonneau on 2005/02/16 12:14:26
Here is a deaper explaination requested by Patrice about the futur of Pliant:

The HTTP server and .page interface will be maintained for several years,
so any existing application will continue to run smoothly, without any

On the other hand, through upgrading the source code of the application,
it will be possible to switch to the Pliant browser that provides much better
user interface. At the moment, it is not possible to provide a web based
application with an as nice look and feel as application using native
plateform tookits (KDE, Gnome, Windows, etc), what the Pliant browser will

Now, when the Pliant browser gets production quality (let's say in a year or so),
it will be recommender to start any new application directly using the
Pliant browser interface. Recommanded, not mandatory since the existing
HTTP server code will not be removed.

Lastly about documentation, it will be upgraded to explain first how to write
an application using the Pliant browser interface, then one or several extra
chapters should explain what is different when using .page HTTP interface.

What is not clear even to me at the moment is how nice from the user feeling
point of view will a Pliant application be that use Pliant browser interface
with Pliant browser HTTP bridge (translating Pliant browser interface to
HTTP/HTML javascript) compared to an application using Pliant HTTP server
and .page interface. If the final quality is similar, then everybody will
switch to the Pliant browser interface one day or another, if it's lower
then applications targetting the web principaly will continue to use the
existing .page HTML/HTTP interface.
Message posted by maybe Marcus on 2005/02/16 12:50:56
I could now start up the server fine.

But when I try to start the browser, I got an exception 11 error:

exception 11
actions stack is:
execute <command line> 1 1
parse <command line> 2 1
module <command line>
processor stack content is:
. first  /pliant/language/type/set/dictionary.pli (internals) 154 5 /pliant/language/type/set/dictionary.pli (internals) 156 10
. font  /pliant/graphic/browser/context2.pli (internals) 106 1 /pliant/graphic/browser/context2.pli (internals) 136 31

The server says:

executing pliant://localhost/supervisor/

Message posted by hubert.tonneau on 2005/02/16 12:54:28
> . first  /pliant/language/type/set/dictionary.pli (internals) 154 5 /pliant/language/type/set/dictionary.pli (internals) 156 10
> . font  /pliant/graphic/browser/context2.pli (internals) 106 1 /pliant/graphic/browser/context2.pli (internals) 136 31

You probably have not unpack font.tgz at the right place (the same place you did
unpack pliant-xxx.tgz)
Message posted by marcus on 2005/02/16 15:50:20
You are correct. Now it worked.

Very very interesting!

> What is not clear even to me at the moment is how nice from the user feeling
> point of view will a Pliant application be that use Pliant browser interface
> with Pliant browser HTTP bridge (translating Pliant browser interface to
> HTTP/HTML javascript) compared to an application using Pliant HTTP server
> and .page interface. If the final quality is similar, then everybody will
> switch to the Pliant browser interface one day or another, if it's lower
> then applications targetting the web principaly will continue to use the
> existing .page HTML/HTTP interface.

In my humble opinion, I would say I *really* liked the Xpage (extented .page) 
thing and its look-and-feel. 

The fact that human-friendly Web application interfaces use the idea of 
frames heavily, is already a strong reason for me to switch quickly to Xpage.
Because, .page does not support it, but Xpage does. 

I know it is a bit early to have a strongly grounded opinion, but based on the sample
provided by Hubert, if I were to weight out the current quality of .page and the
flexibility of Xpage, I would stick with the latter.

Message posted by hubert.tonneau on 2005/02/23 10:51:25
New a bit less buggy version of the Pliant browser available at:

The filemanager and text editor sample are now basically correct.

Also, I still have two serious issues.
. need more agressive skipping of out of the viewed area parts of the drawing
  (the mark set_attribute rewind fonctions implemented in context.pli to
  propagate attributes properies are two expensive)
. need better way to specify partial repositionning

On the todo, I have:
. make the word processor sample usable
. add security
. finish database related optimisations and implement multi line text input
  (probably as a server side library)
. add various missing tags (vector drawing)
. make tags look more flexible
. deal with all positioning details
. implement server side unknown tags resolution
. speedup loading through trying to pick next line from the cache
. write Linux framebuffer and VNC front end
. switch all Pliant configuration .page to the Pliant browser interface

Some of you failed to notice that when using the Pliant browser, the mouse
right button is dedicated to scrolling.

Please remind that the Pliant browser currently has no security capabilities,
so unplugging the network cable is recommended while playing with it.
Message posted by maybe Marcus on 2005/02/23 13:28:45
When I try to start up the browser I get the error

Failed to compile f   ('id')
  compile /pliant/graphic/browser/context2.pli (internals) 118 9
Message posted by hubert.tonneau on 2005/02/23 13:31:15
You need to rebuild the .dump because some tiny changes have been applied to
Pliant core.
Message posted by michel on 2005/02/24 13:50:36
First contact with the new browser.
I've installed pliant_93c + font.tgz,
killed the .dump,
launched fullpliant, the browser server and the browser.
All runs perfectly (Linux Mandrake 10.1)

It's a begining but a good one.

Some reemarks or questions :

How do you go out of help section and go back main section ?
The software doesn't take into account of the numerical pad, only the shift+Nb keys.
The commant Ctrl+Escape call a Process table (standard shortkey of th distribution)

But congratulations for this begining

P.S. very happy with the "deaper explaination.
Message posted by cyril.checroun on 2005/02/24 13:58:06
> How do you go out of help section and go back main section ?

Try ctrl F1 to go back to first session (see help section)
Message posted by michel on 2005/02/24 14:17:33
I've tried, it doesn't work
Message posted by hubert.tonneau on 2005/02/27 01:56:47
A release with first shot security model is available as:

To use clear password, try something like:
pliant 'precompile /binary/browser.dump module /pliant/install/minimal.pli module /pliant/graphic/image/rip.pli' module /pliant/graphic/browser/client.pli command 'browser "user [dq]your_user_id[dq]"
To use strong crypto, try:
pliant 'precompile /binary/browser.dump module /pliant/install/minimal.pli module /pliant/graphic/image/rip.pli' module /pliant/graphic/browser/client.pli command 'browser "user [dq]your_user_id[dq] secured"
Message posted by hubert.tonneau on 2005/02/28 09:46:57

you get the ability to run the server and the browser in a single process through:
pliant module /pliant/graphic/browser/sample/run.pli
pliant 'precompile /binary/browser.dump module /pliant/install/minimal.pli module /pliant/graphic/image/rip.pli' module /pliant/graphic/browser/sample/run.pli
or even:
pliant 'precompile /binary/browser2.dump module /pliant/install/minimal.pli module /pliant/graphic/browser/sample/fullpliant.pli module /pliant/graphic/browser/client.pli' module /pliant/graphic/browser/sample/run.pli

The three different preposed commands do the same, but the second will precompile
more, and the third will precompile nearly everything, leading to much faster

The key advantage of running Pliant as a single process is security since you
get administration right without any login issue since nobody else can access the
At some point, I will change 'fullpliant' executable to do exactly that,
so that newby users see Pliant as a classical application.
Message posted by maybe Marcus on 2005/02/28 19:08:34
When I try to run first one I get:

Failed to compile new   ('Str'  ?)
  compile /pliant/language/type/set/list.pli (internals) 245 72

The second and third ones give me:

Browser server is running.
exception 11
actions stack is:
execute /pliant/graphic/browser/sample/run.pli (internals) 15 1
parse /pliant/graphic/browser/sample/run.pli (internals) 16 1
module /pliant/graphic/browser/sample/run.pli
processor stack content is:
. first  /pliant/language/type/set/dictionary.pli (internals) 175 5 /pliant/language/type/set/dictionary.pli (internals) 177 10

Message posted by hubert.tonneau on 2005/02/28 19:41:09
You have .dump out of sync with Pliant tree troubles.

  rm /pliant/binary/*.dump
wait for the 'WELCOME TO FULLPLIANT' (Pliant precompiles), then hit Ctrl+C

Message posted by maybe Marcus on 2005/02/28 21:20:53
Still getting 

Browser server is running.
exception 11
actions stack is:
execute /pliant/graphic/browser/sample/run.pli (internals) 15 1
parse /pliant/graphic/browser/sample/run.pli (internals) 16 1
module /pliant/graphic/browser/sample/run.pli
processor stack content is:
. first  /pliant/language/type/set/dictionary.pli (internals) 175 5 /pliant/language/type/set/dictionary.pli (internals) 177 10
. font  /pliant/graphic/browser/context2.pli (internals) 114 1 /pliant/graphic/browser/context2.pli (internals) 144 31
. pliant tag position function  /pliant/graphic/browser/tag/text.pli (internals) 18 1 /pliant/graphic/browser/tag/text.pli (internals) 20 3
. position  /pliant/graphic/browser/tag/prototype.pli (internals) 133 1 /pliant/graphic/browser/tag/prototype.pli (internals) 140 5
. position  /pliant/graphic/browser/tag/prototype.pli (internals) 133 1 /pliant/graphic/browser/tag/prototype.pli (internals) 143 7
Message posted by maybe Marcus on 2005/02/28 21:27:21
My mistake. I forgot to download the fonts.

It now works.
Message posted by maybe Marcus on 2005/02/28 21:47:36
Some things I have observed:

- When editing a text, if I click past the end of a sentence, the cursor refuses
to be positioned there.
- going up and down with the arrow keys do not work in the situation in which 
the text being edited is


where \nl denotes a newline character
Message posted by hubert.tonneau on 2005/07/29 05:12:01
Just a small message to say that Pliant is not at all a dead project.
I'm currently working fulltime on the browser, but my current point of view
about it is:
some very good ideas, but the overall layout is still not satisfying :-(
Message posted by djyassine on 2005/12/09 15:32:36
Hello I am student in data processing! I have a subject of research on Pliant. I must conceive an application of style VLE "Virtual LEarning Environment". I have difficulties to create data bases to store informations about users as well as requests of interrogation and update! Please help me and if possible provide me link towards the electronic documents which can help me. PS: I already traversed the official site of Pliant and documentation being there. Thank you In advance. Help me it is urgent. Cordially
Message posted by hubert.tonneau on 2005/12/09 16:09:56
This is the Pliant 'talk forum', not the Pliant 'newbie questions forum'.
You should open a new debate on 'newbie questions forum' and post more details
about your problem, I mean some tiny source code that demonstrates what you did,
and the exact problem you get.
Be precise if you expect an answer.