* Description =========== The goal of the Democratic Experience project is to develop a set of tools enabling the practice of direct democracy. This set of tools can be used on a local basis (within an group of people, a club, an association) or on a larger scale, to help a large group of people making decisions. In the Democratic Experience, thanks to a client-server architecture, any participant can submit a question in the form of a vote. All participants can then add « candidate answer » to this vote. Finally, the participants can vote using the Condorcet method. The wining answer is stored in a database which is structured into themes. This database becomes the « reference » that can be used to drive the decisions within the group. In order to avoid a possible overflow of votes to answer, each participant can choose to delegate his/her vote on a specific theme to another particpant. The demexp project implements such a scheme. This code contains a server software (including vote handling, database management software, delegation management) and a client software. The ultimate goal of the project is to apply this concept at different levels of the society in order to validate the concept of direct democracy. * Links ===== Development: http://savannah.nongnu.org/projects/demexp http://www.demexp.org/en/doku.php?id=#articles_and_discussions_on_software_development Democratic Experience project: http://www.demexp.org * License ======= Main code is under GNU General Public License (GPL). It relies on external libraries and code of which licenses are GPL compatible (see source code for details). * Needed software =============== To compile this software, you need: For both client, server and web interface: - noweb [http://www.eecs.harvard.edu/~nr/noweb/] - OCaml 3 (with native compilers) [http://caml.inria.fr/ocaml/distrib.html] - findlib [http://www.ocaml-programming.de/programming/findlib.html] - equeue [http://www.ocaml-programming.de/programming/equeue.html] - RPC [http://www.ocaml-programming.de/programming/rpc.html] Note: you need RPC 0.4.1 for OCaml 3.08 and above. - Gz [http://ocamlplot.sourceforge.net/#gz] - ocaml-gettext [http://sylvain.le-gall.net/ocaml-gettext.html] and its dependencies: - ocaml-fileutils >= v0.3.0 [http://sylvain.le-gall.net/ocaml-fileutils.html] - ocaml-ast-analyze >= v0.1.0 [http://sylvain.le-gall.net/ocaml-ast-analyze.html] - camomile >= v0.6.0 [http://camomile.sourceforge.net/] - gettext >= v0.14.3 [http://www.gnu.org/software/gettext/gettext.html#TOCdownloading] - Config_file [http://download.gna.org/cameleon/] For client only: - lablgtk2 [http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/lablgtk.html] For web interface only: - WDialog [http://wdialog.sourceforge.net/] For server only: - OcamlExpat [http://www.xs4all.nl/~mmzeeman/ocaml/] - OcamlCurl [http://sourceforge.net/projects/ocurl/] - PCRE [http://www.ai.univie.ac.at/~markus/home/ocaml_sources.html] - OcamlNet [http://ocamlnet.sourceforge.net/] - ulex [http://www.cduce.org/download.html] - CDuce [http://www.cduce.org/] (and its dependencies) WARNING: CDuce should be compiled with --mliface option, to build the CDuce/OCaml interface. For documentation only: - latex (with pdflatex and palatino font) And usual compilation tools: - make - gcc - sed To compile on Windows platform, you probably need the Cygwin environment (more on that later. You'll find some start documentation at http://christophe.gisquet.free.fr/demexp/). On a Debian GNU/Linux Sarge, you must do: apt-get install nowebm tetex-bin tetex-extra ocaml ocaml-native-compilers \ liblablgtk2-ocaml-dev ocaml-findlib \ cduce librpc-ocaml-dev \ libfileutils-ocaml-dev gettext \ make gcc For other platforms, we don't know. Let us know. Right now, the main demexp developer is using OCaml 3.08.3 and Camomile 0.6.2. * Software compilation ==================== 1. You must compile separately the RPC package. RPC relies itself on findlib and equeue (they are available as debian packages, see above). 1.1 RPC compilation: ./configure -bindir /usr/local/bin make all && make opt make install # You should have proper rights on # /usr/local/lib/ocaml/n.nn directory 1.2 Gz compilation ## we suppose you have findlib installed ./configure --with-findlib make make install # you should have write access to # /usr/local/lib/ocaml/3.08.3/ 1.3 ocaml-ast-analyze compilation $ tar zxvf ocaml-ast-analyze-0.1.1.tar.gz $ ocaml-ast-analyze-0.1.1/ $ ./configure --libdir=/usr/local/lib/ocaml/3.08.3 At configure step, choose the correct directory where external ocaml packages can be installed $ make $ make install 1.4 camomile compilation $ tar jxvf ~/pub/expdem/external-sources/camomile-0.6.2.tar.bz2 $ cd camomile-0.6.2/ $ ./configure $ make $ make install 1.5 ocaml-gettext compilation $ ./configure --disable-doc --disable-bench \ --libdir=/usr/local/lib/ocaml/3.08.3 At configure step, choose the correct directory where external ocaml packages can be installed $ make $ make install 1.6 config_file $ ./configure $ chmod 644 master.Makefile Edit master.Makefile and modify INSTALLDIR to install config_file where you want (configure script is buggy). In my case: INSTALLDIR=/usr/local/lib/ocaml/3.08.3/config_file $ make all $ make install 2. demexp compilation: ./configure make make install * Possible ./configure options: --prefix path prefix for installation (default: /usr/local) --bindir path where to install binaries (default: /usr/local/bin) --sharedir path where to install documentation (default: /usr/local/share/demexp) --mandir path where to install man pages (default: /usr/local/man/man1) --no-client do not compile the client (default: compile client) --no-server do not compile the server (default: compile server) --no-web do not compile the web interface (default: compile web) --no-dvi do not produce .dvi and .pdf files (default: dvi & pdf) --no-pdf do not produce .pdf files (default: dvi & pdf) --for-developer developer features: include autotests and do 'make test' by default (default: no) --help display this list * Possible make targets: install install binaries and documentation clean erase all binaries and generated files test execute auto-tests test.bc execute auto-tests using bytecode binaries all all binaries (including bytecode version) and generated files doc all documentation, in all possible formats dvi code books in DVI format pdf code books in PDF format bin native code binaries bin.bc bytecode binaries server all server binaries (both native code and bytecode) client all client binaries (both native code and bytecode) static native code binaries statically linked (currently only the server) web web interface depend compute source depencies (automatically called by binaries targets) xml produce DTD and example XML files install-buildpo construct .po files for translation * Remark about documentation ========================== This software is using literate programming: code is embedded with its internal programmer documentation. The make process will produce both the software and the documentation. To read documentation, just have a look to: doc/demexp-book.dvi or doc/demexp-book.pdf Have fun! The demexp dev team. http://savannah.nongnu.org/projects/demexp