CubicWeb semantic web framework
===============================

CubicWeb is a entities / relations based knowledge management system
developped at Logilab.

This package contains:

- a repository server
- a RQL command line client to the repository
- an adaptative modpython interface to the server
- a bunch of other management tools

Install
-------

More details at https://cubicweb.readthedocs.io/en/3.26/book/admin/setup

Getting started
---------------

Execute::

 python3 -m venv venv
 source venv/bin/activate
 pip install 'cubicweb[pyramid]' cubicweb-blog
 cubicweb-ctl create blog myblog
 # read how to create your ~/etc/cubicweb.d/myblog/pyramid.ini file here:
 # https://cubicweb.readthedocs.io/en/latest/book/pyramid/settings/#pyramid-settings-file
 # then start your instance:
 cubicweb-ctl pyramid -D myblog
 sensible-browser http://localhost:8080/

Details at https://cubicweb.readthedocs.io/en/3.26/tutorials/base/blog-in-five-minutes

You can also look at the latest builds on Logilab's jenkins:
https://jenkins.logilab.org/

Test
----

Simply run the `tox` command in the root folder of this repository:

    tox

How to install tox: https://tox.readthedocs.io/en/latest/install.html

Documentation
-------------

Look in the doc/ subdirectory or read https://cubicweb.readthedocs.io/en/3.26/


CubicWeb includes the Entypo pictograms by Daniel Bruce — http://www.entypo.com

Contributing
------------

Patches should be submitted by email at the cubicweb-devel@lists.cubicweb.org
mailing list in order to get reviewed by project integrators or any community
member.
The simplest way of send patches is to use the ``hg email`` command available
through the *patchbomb* extension of Mercurial. Preferably, patches should be
*in the message body* of emails. When submitting a revised version of a patch
series, a prefix indicating the iteration number ``<n>`` of the series should
be added to email subject prefixes; this can be achieved by specifying a
``--flag v<n>`` option to ``hg email`` command. If needed you can also use the
--in-reply-to option.

Examples:

    hg email --to cubicweb-devel@lists.cubicweb.org --intro -r <start>::<end>
    hg email --flag V2 --to cubicweb-devel@lists.cubicweb.org -r <start>::<end>

If you have any questions you can also come on Logilab's public XMPP room using
a XMPP client: public@conference.jabber.logilab.org

Mailing list: https://lists.cubicweb.org/mailman/listinfo/cubicweb-devel
Patchbomb extension: https://www.mercurial-scm.org/wiki/PatchbombExtension
Good practice on sending email patches: https://www.mercurial-scm.org/wiki/ContributingChanges#Emailing_patches

Full .hg/hgrc example for contributors having ssh access to ``hg.logilab.org`` :

    [paths]
    default = https://hg.logilab.org/master/cubicweb
    default-push = ssh://hg@hg.logilab.org/review/cubicweb

    [email]
    to = cubicweb-devel@lists.cubicweb.org

    [patchbomb]
    publicurl = https://hg.logilab.org/review/cubicweb
    flagtemplate = "{separate(' ', 'cubicweb', flags)}"

    [jenkins]
    url = https://jenkins.logilab.org/
    job = cubicweb-default

If you don't have ssh access to ``hg.logilab.org``, you can use your own Mercurial server and
change ``default-push`` and ``publicurl`` accordingly.
A list of services that provides hosting of Mercurial repositories is available
on https://www.mercurial-scm.org/wiki/MercurialHosting.

* ``hg pull`` will pull on master repo (public changesets).
* ``hg push`` will push on review repo using ssh.
* When sending an email to the list, it will add a "Available at" with command
  to pull the draft series on the public repo.
* Using https://hg.logilab.org/master/logilab/devtools/file/tip/hgext/jenkins.py
  mercurial extension, ``hg show jenkins`` display jenkins build status for
  each changeset. Read https://www.mercurial-scm.org/wiki/UsingExtensions to learn how
  to enable a new extension in mercurial.
