Netcerto RSS Feed

Netcerto Twitter

Onze referenties

Recent visitors



A visitor from Glendora, United States visited "OpenERP nieuws (rss) "  0 seconds ago

A visitor from Glendora, United States visited "OpenERP mogelijkheden"  28 seconds ago

A visitor from Glendora, United States visited "Home"  2 minutes ago

A visitor from Ontario, United States visited "Home"  28 minutes ago

A visitor from Germany visited "Home"  45 minutes ago

Open ERP News


  • OpenERP Awards - 2012 Edition

    This year's annual summit was a great success due to the quality of the presentations, shared vision and strategy and the ever increasing number of participants. But also, to the opportunity an event like this gives our community and partners to come together, collaborate and also have some fun.

    OpenERP is based on a unique ecosystem where the community, partners and editor work together to build a successful, relevant and affordable product. In order to express our gratitude and recognition towards our community and partners, this year's summit included an awards ceremony.
     

    Our winners with Fabien

                                                                    2012 OpenERP award winners with Fabien
     

    Among the categories selected this year were the Best Contributor Award, Best Partner Asia, Best Partner Europe and many others. It was often quite difficult to select the nominees and particularly to pick one winner among them.

    The final award winners are the following:

    Best Contributor: Camptocamp 

    They have been gold partners for more than 5 years now and have been contributing immensely ever since. A quick look on http://apps.openerp.com will show why they won the best OpenERP contributor award 2012. This award specifically rewards the author of the OpenERP modules and tools that are most used by the community. Camptocamp's webkit-based reporting engine and geoengine are great examples of such contributions.

    Most active contributor: Vauxoo

    The most active contributor awards goes to the contributor who has been producing the largest number of modules, patches, translations and localizations during the last year.

    Any member of the community will certainly know Vauxoo for their tireless dedication to the OpenERP community, and their uncompromising open source spirit (Have you seen Nhomar's talk this year? http://slidesha.re/K1eI1O

    This incredible company is not only the largest OpenERP Partner in Latin America, but they manage to create and maintain OpenERP localizations and translations for half of LATAM countries, all by themselves! Those yearly contributions represent a huge number of hours and resources, and clearly designates them as most active contributor for 2012.

    Best Partner Europe: Smile

    Smile has been selected as the best partner in Europe because of it's successes in their customer implementation projects. They helped putting OpenERP in production to some of the biggest companies using OpenERP and they implement an impressive number of projects on OpenERP every year. Some of the big projects that Smile worked on are: France24, Veolia, Nouvelles Frontieres and many others. 

    Best Partner America: NovaPoint

    There  are many reasons why Novapoint deserves this recognition. First of all,  for an excellent communication with the vendor, in terms of decision  making and collaboration. Secondly, for fully embracing OpenERP’s  business model and its OpenERP Enterprise. Last, but not least for  having published many contributions. They have also been an important player in the penetration of OpenERP in the US market from a product perspective with the adaptation of several specific business concepts like check writing, deposit tickets, credit card payment, and payroll systems integration.

    Best Partner Asia: Itara

    Itara succeeded to replace a well known ERP for his customer Trident. They have replaced Dynamics with OpenERP and implemented several modules, such as: Sales, Purchase, Manufacturing, Warehouse Management, etc. Later on, they migrated to version 5.0 to 6.0 and after 1 year they get managed to replace Tally, Accounting system with OpenERP. Now, Trident is a big success story in the Indian market with Indian localization. See here an interview with Rajesh Kanna, CEO of Itara: http://bit.ly/JMXljj

    Best Partner Africa: Kazacube

    From  the begining of the partnership, Kazacube has had a good and fruitful relationship with the vendor. In a very short time, it became the second best OpenERP CTP worldwide. Moreover, in terms of revenue and activity in Africa, there is no equal partner just yet. 

    Best CTP: Vauxoo

    It's official, Vauxoo has trained more than 140 people in just one year. They have managed  to cover a number of countries in Latin America, like Venezuela, Panama, Costa Rica, Mexico, etc. This winner was a no brainer for OpenERP, as their numbers and dedication speak for themselves. Moreover, Vauxoo forecasts that this year is to at least double this number. 

    Best Translation team: Arabic Launchpad Team

    This award goes to the translation team that has been producing the most impressive translation effort over the past year. Among the 42 teams assigned as of 2012, the Arabic team is clearly the winner. They started translating from scratch little more than a year ago, and have aleady completed 70% of the complete OpenERP translation (more than 18000 terms to translate in total). We do have many teams actively maintaining their translations above the 90% bar, but few of them have been able to get from 0 to 70% in such a short amount of time!

    Most active Community website: Openerp-italia

    Many countries have an active OpenERP Community, and most of them have a community website. Among them, the Italian Community's website ranks highest in terms of activity, as reported by various traffic analysis means. They have a large number of users and contributors, as well as a wiki and a very active forum, which could even start to overshadow the official OpenERP.com forum!

    Although we could only reward 9 winners, for many of them it was a close call, and it is likely that next year's awards will offer quite a different landscape! 

    We are of course deeply grateful to every single contributor, it is a great honor and pride to build the world's best ERP system together with so many enthusiastic people, from all over the planet!

     



  • Elico Corp as the first CTP Premium Partner for China

    We are happy to introduce Elico Corp as the first CTP Premium Partner for China.

    OpenERP has designed a Certified Training Partner Program to leverage OpenERP training capabilities worldwide. This program aims to enable OpenERP Partners to provide a consistent and high quality level of training.

    OpenERP Partners who wish to become Certified Training Partner must provide specialized functional and technical trainings. These trainings cover aspects such as Product lifecycle management, Supply chain management, Warehouse Management, Customer Relationship Management, Sales Order Processing, Online Sales, Financials, Human Resources and Decision Support System, etc. With Elico Corp, OpenERP is able to reach China and offer trainings locally.

    Elico Corp is a Sino-European OpenERP official partner. They are fully dedicated to OpenERP consulting solutions towards Chinese-based SMEs. European and Chinese consultants provide out-of-the-box and tailor-made OpenERP implementations completed by local technical team for hosting solutions, hotline assistance and OpenERP development services. Their area of expertise ranges from CRM and services, supply chain management, trading and manufacturing.

    More information: http://www.openerp.net.cn



  • OpenERP Customer, Community & Partners Summit 2012

    We have just concluded our three day annual summit in Brussels. It has been a great opportunity for the OpenERP team to share the new features of v7.0., our vision and strategy for 2012, tips and tricks on how to manage OpenERP projects and many more. Furthermore, it has also been a great chance for our community and partners to showcase what they have been working on, may they be developments or successful case studies. 

    Whether you have been part of our event or not, you can find the presentations held during the Open Days 2012 on our slideshare channel http://slidesha.re/9zuI5o. There were more than 40 presentations covering technical, functional and success stories. Feel free to browse through them, download and share. 

    We also invite you to look at the pictures of the event. Find yourself, tag and share http://on.fb.me/J3Sk9p Also, after you're done with Facebook, check out what the participants have tweeted during the event http://bit.ly/HQImsU.

    3 days, approximately 600 participants, more than 40 presentations!

    We want to thank all participants for joining us and sharing our vision. A special thanks goes to all our community members and partners who have presented a topic and contributed to this amazing OpenERP Customer, Community and Partner Summit. 

     

    P.S. If you participated to this event and want to give us your feedback, email events(at)openerp.com!



  • Improvements on the framework

    We are going to develop significant improvements in the framework for the version 7.0, expected in September 2012. These improvements will allow OpenERP to be even more modular, to be easier to learn for new developers, to develop module with less lines of code and to be more pythonic.

    Our first tests allowed us to reduce a simple module (the "idea" one) from 300 lines of code to 200 lines (33% less). We also significantly reduced the number of methods' signatures to learn by making all concepts more orthogonal and generic. This will lower the learning curve for new developers.

    Among all the improvements, the most important ones are:

     
    • a more "object oriented" ORM that also supports write/create on objects, with simplified method signatures "def method(self)" instead of "def method(self, cr, uid, ids, context)".
    • a completely new way to manage "on_change" events to simplify inheritance in different modules
    • a merge of 3 different concepts (`_defaults`, `on_change`, `fields.function`) into one single concept (`get` attribute) in order to reduce the code to develop, and allow more flexibility (a function field may also be updated by on_change event, in real time, without additional code)
    • a pythonic way to express domains. For instance "invoice.partner_id.customer == False or invoice.total > 100", instead of "['|', ('partner_id.customer','=',False), ('total','>',100)]"
    • every concept can be implemented in the view definition or in the object:
    • a constraint (required, default, ...) in the view impact the encoding, a constraint in the object becomes an integrity constraint for the record
    • on_change is just implemented by a "get" in the view, a fields.function is just implemented by a "get" on the object

    Of course, we will ensure that all those improvements will be backward compatible so that v7.0 will still support all community modules.

    All these improvements will be presented and discussed/challenged during the community meeting of the next week. If you want to read the presentation before or you can not join us next week, you can already find it at http://thu.openerp.com/open-days-2012/core-api-draft.html.



  • Serving OpenERP 6.1 on multicore systems with Gunicorn

    OpenERP  6.1 comes with a load of new features, and one of them provides a much  greater ability to scale up on modern hardware.  Until now, OpenERP  offered only one option: a multi-threaded HTTP layer, with a limited  ability to use available computing resources.  F or  the 6.1 release, one of the goal was to make it easy to run the OpenERP  server in multiple processes, harvesting big performance gains. Doing so introduces nice deployment choices and development opportunities.  

    By  running a Python application such as OpenERP 6.1 in multiple processes  instead of multiple threads, one can avoid Python's Global Interpreter  Lock (GIL[0]) and take advantage of the multiple cores of today's  machines.   

    This  (rather technical) post explains how the upcoming OpenERP version runs  more efficiently on multi-core systems by using the excellent  Gunicorn[1] HTTP server.  

    This subject will also be covered during the 2012 OpenDays. The slides for the talk are already available at http://bit.ly/IkOYyq

     Dance around the GIL 

    To create and manage processes, we first thought to use the  `multiprocessing`[3] module. When the time to finally implement a  multi-process solution arrived, we quickly thought it was better to  handle the added complexity in the Unix way: make a specific piece of  code to manage processes. As it happens, such specific piece of code  already exists and we didn't write anything (and thus didn't use  `multiprocessing`): we simply turned the server into a WSGI-compliant  application, leaving the responsibility to manage it to someone else.  That someone else is Gunicorn[1]. 


    Gunicorn  is a Python HTTP server with support for WSGI[2]. It uses the pre-fork  model to spawn a WSGI-compliant application into different processes.   In our case, the WSGI application is the OpenERP server. The server has  its WSGI entry point located in the `openerp.wsgi` module. It is simply  named `application`. In our repository, we also provide a sample  `gunicorn.conf.py` configuration file. Assembling the pieces together,  launching the server with multiple processes is a simple as: 

       > gunicorn openerp:wsgi.core.application -c /path/to/gunicorn.conf.py 

    You can modify the configuration to your liking. Gunicorn is well  documented and the comments in the sample configuration file should  prove enough to get you started. Just note that it is not possible to  pass arguments to OpenERP on the command line (i.e. the way you would do  it with `openerp-server`). Instead, you can directly set OpenERP's  configuration values from within the Gunicorn configuration file (as it  is done in the example file). 

    Awesomeness provided by the beast

     It is still possible to start the server with the regular  `openerp-server` script. Doing so uses a multi-threaded HTTP layer (this  is not the 6.0 HTTP layer: we also use the WSGI entry point, this time  serving it with `werkzeug`[4]). But serving OpenERP with Gunicorn is  great! When handling two concurrent CPU-bound requests with two workers  (on at least two cores), you can expect a nearly 2x speed-up[5]. Of  course, if the two requests lock the same rows in database and don't  spend much of their time running Python code, you might achieve no  speed-up at all.  

    Beside  taking advantage of a multi-core setup, Gunicorn provides a few hooks  that we use to limit the resources made available to each request. It is  also possible to automatically kill and restart processes after they  have served a few thousands of requests, to mitigate memory waste, if  any. We have added three new options -- although they are documented as  command-line options, they really are used only with Gunicorn:   

    *  `virtual-memory-limit` limits how much memory a process can allocate. When the limit is reached, a `MemoryError` is raised.  

    *  `virtual-memory-reset` is a similar limit: when the amount of memory used exceeds that limit, the process will gracefully die after the  current request and Gunicorn will re-spawn a new process. This is  again a safety net against memory leak.  

    * `cpu-time-limit` limits the amount of CPU time a request can use, also raising an exception when the limit is reached. 

     WSGI and statelessness

    To ensure we could run multiple OpenERP processes safely, we had to  modify the server to make it stateless, because any request can be  handled by any process. For this reason, we changed the implementation  (and the name) of the `osv_memory` class. Instead of being held in  memory, a `TransientModel` is stored in database, just like a regular  `Model` (the new name for `osv`). The difference with a `Model` is that `TransientModel` rows are automatically deleted after a while.  

    Server-side  caching is another issue. It's useful for improving performance in some  situations, but makes the server partially stateable and thus requires  synchronization. Fortunately, most of OpenERP caches are of minor  importance and read-only, so the relatively fast process recycling will  take care of refreshing The only cache that really required an update is  the login cache; because an authentication check is done for each  request, if you change your password (causing only one process cache to  be updated) you will immediately be locked out. The trivial way we fixed  it was to ignore the login cache whenever an authentication fails,  causing a refresh of the cache on that process. After a change of  password all caches will thus be refreshed transparently one by one.

    Still, for the situation that needs it (i.e. it is really necessary to  run multiple processes while still allowing configuration changes), we  implemented a signalling scheme using the PostgreSQL database. Whenever  caches are invalidated on a process, or a new module is installed, the  process signals the change to other processes (managed by the same  Gunicorn instance, or running on a different machine). The solution will  be part of a next 6.1 release.  

    As  mentioned above, the OpenERP server is now a library exposing a WSGI  entry point. It is also a kind of WSGI middleware as it can dispatch  requests to other, registered entry points. This is indeed the way we  have now embedded the web client in the server: the `openerp-web`  project provides its own addons directory, which is put in the server's  addons path. The server loads the web addons at startup because it is  the default value in the new `server_wide_modules`[6] option (exposed on  the command line as `--load`). When being loaded, the web addons  registers itself as a WSGI entry point: the server serves XML-RPC and  regular browser requests on the same port (8069 by default). Of course  you can use the same principle for your own modules. 

    Please note the web client is storing its sessions on disk. If you plan  to deploy multiple web clients, embedded in the server or not, you have  to make sure the sessions can be accessed by any of them. 

    Wrapping up  

    Embracing  existing (and great) tools allow us to be leaner and meaner. This is  true with WSGI and Gunicorn but we hope to continue in this direction.  One important question is left unanswered: how many processes must  Gunicorn spawn on a given machine to be as efficient as possible? We  don't know yet the answer but we should have it quite soon: we are  assembling benchmarks in the `openerp-command` repository.   

    [0] http://dabeaz.blogspot.com/2010/01/python-gil-visualized.html 

    [1] http://gunicorn.org/ 

    [2] http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface 

    [3] http://docs.python.org/library/multiprocessing.html 

    [4] http://werkzeug.pocoo.org/ 

    [5]  My use of the word 'speed-up' may not be completely appropriate:  speed-up is normally used for parallel computation. In this post a 2x  speed-up means you can run a second request with no impact on another  one. 

    [6]  Server-wide modules are not tied to a particular database. For  instance, the web client can serve a page to create a new database;  obviously the web client has to run even if a database is not yet  loaded.