Fri 05 February 2016

[CubicWeb] Status of the CubicWeb python3 porting effort, February 2016

An effort to port CubicWeb to a dual python 2.6/2.7 and 3.3+ code base was started by Rémi Cardona in summer of 2014. The first task was to port all of CubicWeb's dependencies:

  • logilab-common 0.63
  • logilab-database 1.14
  • logilab-mtconverter 0.9
  • logilab-constraint 0.6
  • yams 0.40
  • rql 0.34

Once that was out of the way, we could start looking at CubicWeb itself. We first set out to make sure we used python3-compatible syntax in all source files, then started to go and make as much of the test suite as possible pass under both python2.7 and python3.4. As of the 3.22 release, we are almost there. The remaining pain points are:

  • cubicweb's hadn't been converted. This is fixed in the 3.23 branch as of (don't follow that link, the commit is huge)
  • the CubicWebServerTC test class uses twisted to start an http server thread, and twisted itself is not available for python3
  • the current method to serialize schema constraints into CWConstraint objects gives different results on python2 and python3, so it needs to be fixed (
  • various questions around packaging and deployment: what happens to e.g. the cubicweb-common package installing into python2's site-packages directory? What does the ${prefix}/share/cubicweb directory become? How do cubes express their dependencies? Do we need a flag day? What does that mean for applications?

[OVH] CES 2016 : OVH accélère sur le front de l’IoT et du soutien à l’innovation

Toujours plus riche en objets connectés, qui semblent entrer dans une phase de maturité, le dernier Consumer Electronics Show (CES) a permis à OVH de tester grandeur nature le potentiel de sa nouvelle plateforme dédiée à l’Internet des Objets (IoT). L’occasion aussi de naviguer au cœur d’un écosystème bouillonnant, où le poids grandissant des startups s’imbrique idéalement dans le programme de soutien à l’innovation lancé par OVH.

Thu 04 February 2016

[Nuxeo Blogs] Nuxeo Studio Rocks and So Does JavaScript Automation!

Nuxeo Studio is an amazing configuration tool and every time I use it, I am blown away by what it can do. Today I will show one such interesting application of Studio. 

Nuxeo Studio makes it very easy to add business logic using Nuxeo Automation to any Nuxeo application. For example, a validation workflow can start automatically when a new picture is created, a version can be automatically created when a lifecycle state becomes “Approved”, etc.

An Automation Chain is a set of ordered operations and, of course, it is called a chain because each operation runs one after the other – the output of one operation being the input of the next one. Nuxeo Studio exposes more than 170 operations grouped by themes and you can build your Automation Chains by just dragging and dropping the operations:


Nuxeo Studio does not expose each and every operation available. You can add more operations if needed. For example, you can add some operations handling Nuxeo Drive in the Operation Registry of your project, which will allow you to automatically synchronize a folder when a workflow starts.

Use a Single JavaScript Operation Instead of a Complex Set of Automation Chains

Even if you can do almost anything you want using Automation Chains, there are two areas where it gets a little complicated to handle a complex chain: loops and conditions. A typical example is when you want to run a loop on every document in a list, and for each document you want to update a field depending on the value of another field, or want to add some documents to a list that will be handled later.

In this context, you will have to write a complex set of chains calling sub-chains, which in turn will call more sub-chains, using the ternary operator inside a MVEL expression, maybe filling Context Variables used in different sub-chains, etc..

This is where JavaScript Automation can come to the rescue:

  • It is plain JavaScript (via Nashorn) with all it’s core features:
    • Includes String, Date, Array, etc.
    • Makes it very easy to handle control flow (loop, if, etc.)
  • Access each and every Operation directly from your JavaScript
  • Access your documents and everything you already have in Automation (the quite useful Fn object for example),
  • It can be used:
    • Like any Automation Chain: Called from a User Action, an Event Handler, a workflow transition, REST, etc.
    • Inside an Automation Chain

Thanks to this, you can write a single JavaScript operation instead of a complex set of chains. This is also where Nuxeo Studio rocks again! – the JavaScript editor has all you need in terms of type ahead, auto completion and syntax checking.

Let’s take a concrete example. Say you want to let the user update a list of selected documents in the UI, such that the ac:internal_ref field is filled with a sequence number depending on the value of the ac:department field:

  • The main chain gets the selected document
  • A sub-chain is applied to each of them
  • And a sub-sub chain is applied, depending on whether ac:department is empty or not. It requires two chains, one that updates ac:internal_ref, and one that does nothing at all.
  • Then an InfoMessage is displayed to the user once it is done.

This is how it looks:


Here’s the detailed flow:

  1. Get the list of selected documents in the UI
  2. Store the number of documents to be handled, and initialize a numeric variable that will hold the number of documents that were updated
  3. Run the UpdateSelected_One sub chain for each document in the list
  4. UpdateSelected_One gets the document
  5. And it runs a sub chain, either EmptyChain if the department field is empty (“” or null), or the UpdateInternalRef.
  6. Here, the department was empty. EmptyChain just does nothing at all (which is fine. I would love to be an EmptyChain sometime)
  7. Here, the department was not empty, so we are in UpdateInternalRefv, and start by getting the context document
  8. We increment the context variable initialized at step #2
  9. We update the ac:internal_ref using the current year and a sequence number based on the value of the department. The full expression is: @{CurrentDate.format("yyyy")}-@{Fn.getNextId( Document["ac:department"] )}
  10. We are done and can display the information to the user.

Even if this flow is not that complicated, we still needed to build 4 chains. We would love to simplify this process and make it easier to maintain.

Now, let’s check out the JavaScript that does exactly the same. The call to operations is shown in bold, and the most interesting JavaScript part (control flow and native functions) is highlighted in bold-blue:

function run(input, params) {
  var docs, nbToUpdate = 0, nbUpdated = 0;
  // Get the selected docs, update the variable
  docs = Seam.GetSelectedDocuments(input, {});
  nbToUpdate = docs.length;
  // Run a loop
  docs.forEach(function(oneDoc) {
    // If the Department is not empty, update the reference
    if(oneDoc["ac:department"] !== null
       && oneDoc["ac:department"] !== "") {
      nbUpdated += 1;
      oneDoc = Document.SetProperty(oneDoc, {
        'xpath': "ac:internal_ref",
        'save': true,
        'value': "" + new Date().getFullYear() + "-"
		    + Fn.getNextId(oneDoc["ac:department"])
  // Inform the user
  WebUI.AddInfoMessage(null, {
    'message': "Updated: " + nbUpdated + "/" + nbToUpdate});

  // Return the container (in case this script is called inside a chain)
  return input;

If we don’t take the formatting into account, we have roughly 10 lines of code and it’s very easy to read, understand, and maintain. So, thanks to Nuxeo Scripting Automation and Nuxeo Studio, we could KISS and it’s great 😉 

The post Nuxeo Studio Rocks and So Does JavaScript Automation! appeared first on Nuxeo.

[Smile] Nouvelle croissance pour Smile en 2015

Smile confirme la finalisation des discussions exclusives avec la société Open Wide et annonce une très forte croissance de son chiffre d’affaires en 2015.

Tue 02 February 2016

[Nuxeo Blogs] Making The Most of Toggleable Forms

The Nuxeo Application contains many layouts that are designed to be a single “column”. The creation form for a Note document is one such example. In the screenshot below you can see that the form has a limited width despite the space available in the browser.

The form has a limited width

​If the above form used the full width available it might look a bit strange. For example, the Title field would be excessively wide. This single-column layout exists because, by default, the ‘dataInput’ CSS class has a ‘max-width’ property defined.  This keeps simple forms readable​ despite different browser window sizes.

However, a more complex form layout may be too constrained by this design. In the example below, you can see that we are trying to achieve a two-column layout and, more importantly, the two text editing areas should be wider:

Two column layout

Here is the solution to make the forms use all of the space available when designing a Layout or Tab:

Add a class to the Container, for example ‘wideDataInput’:

Adding a class to the container

In the CSS Tab for the Branding add the following rule:

/* Make dataInput wide => no max-size, used in FullPage tab */
.wideDataInput .dataInput {
    max-width: none;

Use this ‘wideDataInput’ class on other containers and the style will be applied:

New style applied on the containers

Note that this behavior was enabled by default starting with Nuxeo LTS 2015 HF3. So, you may want to do the opposite and constrain the width of the form. The same technique can be used but set the max-width to a specific amount instead of “none”. Explore these options and make your forms look the way you want. 

The post Making The Most of Toggleable Forms appeared first on Nuxeo.

[Adacore] Safety-Critical Systems Symposium

Feb 2-4, 2016 – Brighton, UK

AdaCore is a major sponsor of this event and will be exhibiting.

[OVH] [Avis d'expert] Les tendances SEO 2016 vues par OVH

La recherche d’information sur le web évolue jour après jour. Devant notre ordinateur, depuis notre smartphone voire notre montre connectée, cette recherche est façonnée par de nouveaux usages et une nouvelle relation aux écrans. Face à ces évolutions, le référencement doit s’adapter et élargir son champ d’action en anticipant ces nouveaux usages de la recherche, tout en s’appuyant sur de solides fondamentaux. Que nous réserve donc cette nouvelle année ? David Looses, SEO Digital chez OVH, fait le point sur les tendances de 2016.

[OVH] [Avis d'expert] Les tendances SEO 2016 vues par OVH

La recherche d’information sur le web évolue jour après jour. Devant notre ordinateur, depuis notre smartphone voire notre montre connectée, cette recherche est façonnée par de nouveaux usages et une nouvelle relation aux écrans. Face à ces évolutions, le référencement doit s’adapter et élargir son champ d’action en anticipant ces nouveaux usages de la recherche, tout en s’appuyant sur de solides fondamentaux. Que nous réserve donc cette nouvelle année ? David Looses, SEO Digital chez OVH, fait le point sur les tendances de 2016.

Sat 30 January 2016

[Oslandia Corp] Tempus V2.0: routing faster, better, stronger !

We are pleased to announce the release of a new version of our route planning framework: Tempus

Tempus is an Open Source C++/Python framework that allows to use, develop and test route planning algorithms with a particular focus on multimodal routing where every possible transport modes are taken into consideration for a trip: private cars, public transports, shared vehicules, bikes, etc.

This new 2.0 version results from a partnership with Mappy and focuses on performance improvements and scalability. It brings the following major changes :

  • use of modern C++11 constructs for a better code
  • a new plugin that implements the Contraction Hierarchies algorithm on road newtorks.
  • more flexibility on graph data structures: specialized graph types can exist, in addition to the multimodal graph
  • a smaller memory footprint of in-memory structures thanks to optimisations and use of serialization to avoid memory fragmentation
  • continuous integration with Travis CI and Appveyor for a stronger code

The contraction hierarchies algorithm allows to answer road itinerary requests very fast, thanks to an efficient preprocessing phase where shortcuts are added to the graph. In conjunction with the newly improved data structures, it is now possible to process requests on country or continental-sized networks.

Tempus is on GitHub, get it, fork it, PR it !

Developments are still going on to improve state-of-the-art algorithms. Please let us know if you are interested in development, training or consulting around these pieces of technology. Do not hesitate to contact us at .

Fri 29 January 2016

[Smile] Open Source School : lancement de la première école spécialisée dans l’informatique open source

Smile, leader européen de l’intégration et de l’infogérance open source et l’EPSI, établissement privé pionnier de l’enseignement supérieur en informatique lancent OSS - Open Source School, la première école d’enseignement supérieur et de formation continue dans l’open source.

[Adacore] Comparing Ada and C

Electronic Design | Comparing Ada and C | Jan 29, 2016

[CNLL] Les membres du collectif édunathon demandent l’annulation de l’accord entre microsoft et l’éducation nationale

Paris, le jeudi 28 janvier 2016

Le 30 novembre 2015, Madame Najat Vallaud Belkacem, Ministre de l’Éducation Nationale a signé un accord avec Microsoft France d’un montant de 13 millions d’euros pour fournir gratuitement ses logiciels et ses services, notamment en ce qui concerne : l’accompagnement et la formation des élèves et des enseignants ; la mise à disposition de solutions pour une utilisation intelligente, facile et optimale des équipements mobiles – des solutions de « cloud », une expérimentation pour l’apprentissage du code, une aide aux acteurs français de l’e-éducation.

La contrepartie informelle de cette offre apparemment généreuse est que la majorité des acteurs de l’éducation va désormais commencer à devoir s’équiper en technologies Microsoft, soit parce qu’ils y auront été formés, soit parce qu’ils auront été incités à utiliser le cloud et les autres services de Microsoft. Autrement dit, Microsoft est prêt à vendre à perte – voire à fournir ses services gratuitement – pour expulser les nombreuses entreprises françaises et européennes du secteur et acquérir une position la plus monopolistique possible sur le marché français de l’éducation. À l’heure où le gouvernement se bat péniblement pour imposer le principe « d’autonomie informationnelle » dans la loi numérique portée par Madame Axelle Lemaire, Secrétaire d'État chargée du Numérique, la situation est pour le moins étonnante.

Ainsi, les nombreuses entreprises françaises qui proposent des services concurrents dans le domaine de la formation, du cloud, des logiciels bureautiques, etc. se retrouvent brutalement exclues de ces marchés en raison du dumping mis en place par le Ministère. C’est d’ailleurs ce qui est en train de se produire au sein de nombreuses directions d’achat du Ministère de l’Éducation qui revoient leurs catalogues pour privilégier désormais les produits Microsoft. Même économiquement, l’équation est négative puisque de nombreux budgets de l’éducation dépendent des collectivités territoriales et non du Ministère lui-même. La gratuité revendiquée par la Ministre n’est qu’une illusion.

Unanimement dénoncé par le secteur, le choix du Ministère de ne pas suivre les procédures des marchés publics est incompréhensible – et ce d’autant plus que Microsoft France est une société coutumière des redressements fiscaux – 52,5 millions en 2014 et déjà 16,4 millions en 2015. En acceptant qu’un géant international du numérique fournisse gratuitement les mêmes services que ses compétiteurs locaux, en refusant de considérer qu’il s’agit de marchés ayant une valeur, le Ministère dévalorise d’un coup les années de travail de nombreux entrepreneurs et met en danger l’emploi de l’intégralité de ce secteur stratégique pour le futur. Qu’il s’agisse des prestations de formation, des cours de code, du cloud ou des logiciels de bureautique, ces services et ces produits auraient dû faire l’objet d’une mise en concurrence par le Ministère.

En refusant de la faire, en acceptant d’honorer une pratique déloyale et en signant un accord industriellement dangereux avec Microsoft France, la Ministre, Madame Najat Vallaud Belkacem s’est placée dans l’illégalité au regard du Code des marchés publics. À défaut d’annuler cet accord, elle risque là une condamnation pour atteinte à la liberté d’accès et à l’égalité des candidats dans les marchés publics (article 432-14 du Code Pénal), voire pour favoritisme (article 432-10 du Code Pénal).

C’est pour cette raison que les membres du collectif EduNathon ont choisi de porter l'affaire en justice. Cette action est engagée pour défendre le service public, pour préserver le droit des élèves et des enseignants à disposer de leurs données et de leur autonomie informationnelle, pour soutenir l’équité des entreprises et acteurs économiques du numérique, et notamment les jeunes entreprises émergentes françaises et européennes sur les grands chantiers portés par l’État français et les institutions publiques.

Quelques membres du collectif EduNathon :

  • Le CNLL (Conseil National du Logiciel Libre) regroupe 13 associations régionales d’Entreprises du Numérique Libre (ENL) et clusters dédiés aux logiciels libres et à l’open source. Le CNLL représente plus de 400 entreprises dont leurs cœurs de métiers sont les Logiciels Libres et/ou l’Open Source.

  • La Mouette est une association défendant l’économie sociale et solidaire par le biais notamment de l’utilisation des formats ouverts et de solutions bureautiques libres pour le poste de travail dans le monde professionnel, le monde éducatif, comme le monde privé à la maison. Elle regroupe des adhérents dans toute la France et le monde francophone, de type collectivités, prestataires engagés et particuliers.

  • Le Ploss-RA est l’association des professionnels du Numérique Libre de la région Auvergne Rhône-Alpes et membre fondateur du CNLL. L’association regroupe 40 entreprises. Elle a pour objectif de favoriser la coopétition entre ses membres afin de promouvoir et renforcer l’industrie du numérique Libre et Ouvert.