{"id":2633,"date":"2020-08-03T11:01:20","date_gmt":"2020-08-03T09:01:20","guid":{"rendered":"https:\/\/bluemind.purpl-web.com\/?p=2633"},"modified":"2020-08-03T11:01:22","modified_gmt":"2020-08-03T09:01:22","slug":"inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1","status":"publish","type":"post","link":"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/","title":{"rendered":"Inside a software publisher\u2019s workshop: new in BlueMind and ongoing projects \u2013 part.1"},"content":{"rendered":"\n<p>The first half of 2020 has come with its share of surprises. Many of us have experienced remote work for the first time, changed work habits and everyday tools and altered the way we previously organised our activities to online collaboration. Email has more than ever risen as the oxygen of digital communications.<\/p>\n\n\n\n<p>From the point of view of a software publisher whose core activity is the constant improvement of its solution, <strong>work never stops<\/strong>. We\u2019ve not slackened for a second to carry out major projects and pursue and speed up our solution\u2019s consolidation. We would have loved to show you these evolutions at a BlueMind Summit in 2020, but the current context is encouraging us to move it to 2021.<\/p>\n\n\n\n<p>The evolution of technical and software architecture, staying at the state-of-the-art, optimising performance, resolving technical debt, adding new tools and interfaces, enriching existing tools and our ecosystem are all part of the BlueMind solution\u2019s consolidation efforts. Here are a few of the most recent or ongoing projects that account for 70% of our day-to-day.<\/p>\n\n\n\n<h2 class=\"has-vivid-cyan-blue-color has-text-color wp-block-heading\"><em>Thunderbird: anticipating evolutions<\/em><\/h2>\n\n\n\n<p>Thunderbird follows Firefox\u2019s development through a shared code base as well as broad extension changes. The change to the extensions\u2019 structure and how they interact with Thunderbird began with the earlier version 68, but it is now, with version 78, that the changes have become truly effective. Legacy extensions have been replaced by WebExtensions. For BlueMind, this means that we\u2019ve had to recode our extension almost entirely so that it meets Thunderbird\u2019s new requirements seamlessly.<\/p>\n\n\n\n<p>Thunderbird 78 has just been released although with no automatic update yet. This will come in due time to give developers time to adapt their extensions to all the changes. BlueMind has been working on this already and will very soon offer the connector for Thunderbird\u2019s new version.<\/p>\n\n\n\n<p class=\"has-text-color has-very-light-gray-color\">.<\/p>\n\n\n\n<h2 class=\"has-vivid-cyan-blue-color has-text-color wp-block-heading\"><strong>Object storage <\/strong><em>and optimisation<\/em><\/h2>\n\n\n\n<p>In environments with large storage requirements, using object storage has many advantages.<\/p>\n\n\n\n<p><a href=\"https:\/\/bluemind.purpl-web.com\/fr\/la-gestion-du-stockage-objet-dans-bluemind\/\">Read our article about object storage here.<\/a><\/p>\n\n\n\n<p>Many people believe that adding an S3 interface (or Swift, or other) is all you need to implement an object storage solution on your cloud. It\u2019s not! Object storage involves:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Redesigning how the data is managed and handled, otherwise the solution may be completely useless. This has been one of the major projects in the development of the BlueMind\/Cyrus IMAP object storage.<\/li><li>An object storage solution that meets the email system\u2019s performance requirements.<\/li><li>Developing usage and stress simulation tools to validate different usage and operating scenarios.<\/li><\/ul>\n\n\n\n<p>Thanks to these tools, we\u2019ve observed that S3 server access latency under operating conditions isn\u2019t always optimal. The main factor that visibly impacts performance for users is object access latency. Latency is the time between the moment access to an object is requested and the moment the full message is received. Latency depends on network access speed as well as the object storage system\u2019s inherent latency.<\/p>\n\n\n\n<p>Below is a functional diagram of object storage bricks:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/bluemind.purpl-web.com\/wp-content\/uploads\/2020\/07\/stockage-objet-cyrus-bluemind.png\" alt=\"sch\u00e9ma fonctionnel des briques entrant en jeu avec le stockage objet\"\/><\/figure>\n\n\n\n<p>When a thick client makes an email synchronisation query to the BlueMind server, the Cyrus IMAP server retrieves the messages sequentially (i.e. one after the other). With a 100ms message access latency, retrieving 30 messages will take at least 100 * 30 = 3000ms, i.e. 3 seconds.<\/p>\n\n\n\n<p>To reduce the effects of access latency on large objects, we\u2019ve developed a system that downloads messages in parallel. With this system and the same 100ms network latency, a user\u2019s access to 30 messages will no longer take 3000ms but 100ms. Up to 300 messages can be downloaded simultaneously.<\/p>\n\n\n\n<p>To help keep an eye on latencies perceived by BlueMind, we\u2019ve added a series of metrics and a dashboard to the TICK monitoring suite.<\/p>\n\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Le Monitoring (c\u00f4t\u00e9 admin)\" width=\"800\" height=\"450\" src=\"https:\/\/www.youtube.com\/embed\/yK-K92h6e7I?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>We\u2019ve also added a functionality for administrators to find out what an imap backend is doing. This helps quickly see whether a user is using too many connections or understand why a process is consuming many inputs or outputs. The name of the imap process changes automatically depending on what the process does.<br><br>Example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>```<\/code>\n<code>cyrus     3476  0.3  0.2  63776 16480 ?        S    14:44   0:01 imap: [192.168.132.240] laurent.coustet@s3.loc s3.loc!user.laurent^coustet.INBOX.Test move Idle<\/code>\n<code>```<\/code><\/pre>\n\n\n\n<p class=\"has-text-color has-very-light-gray-color\">.<\/p>\n\n\n\n<h2 class=\"has-vivid-cyan-blue-color has-text-color wp-block-heading\"><em>Email\/S3 Benchmarking Tool<\/em><\/h2>\n\n\n\n<p>To step things up and validate object storage infrastructure, we\u2019ve developed a tool that simulates email server load on the object storage to measure its performance. This open-source tool is available on<a href=\"https:\/\/github.com\/bluemind-net\/s3-mailbench\"> github<\/a>.<\/p>\n\n\n\n<p>Unlike other benchmarking tools, we\u2019ve tried to simulate an overall email server load, not just raw transfer speed. We measure access latency as well as available bandwidth with real emails from an open distribution list such as Linux Kernel Mailing List (LKML).<br><br>Below is an example of performance measurement, with a network access latency of 5 milliseconds. (Toulouse -&gt; Roubaix &#8212; 900km).<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>```<\/code>\n<code>+--------+--------------+-----+-----+-----+-----+-----+------+------+<\/code>\n<code>|  TEST  |  THROUGHPUT  | AVG | P25 | P50 | P75 | P90 | P99  | MAX  |<\/code>\n<code>+--------+--------------+-----+-----+-----+-----+-----+------+------+<\/code>\n<code>| PUT 1  | 27.73 KiB\/s  | 290 | 167 | 222 | 333 | 562 | 1030 | 5408 |<\/code>\n<code>| GET 1  | 164.48 KiB\/s |  49 |  32 |  38 |  47 |  72 |  252 | 2260 |<\/code>\n<code>| PUT 4  | 122.93 KiB\/s | 261 | 154 | 205 | 300 | 505 |  829 | 2597 |<\/code>\n<code>| GET 4  | 692.30 KiB\/s |  46 |  30 |  36 |  45 |  65 |  247 | 1574 |<\/code>\n<code>| PUT 8  | 243.18 KiB\/s | 264 | 159 | 211 | 305 | 493 |  777 | 2485 |<\/code>\n<code>| GET 8  | 1.34 MiB\/s   |  43 |  28 |  35 |  44 |  66 |  199 | 1319 |<\/code>\n<code>| PUT 16 | 423.21 KiB\/s | 302 | 176 | 241 | 373 | 598 |  819 | 2668 |<\/code>\n<code>| GET 16 | 2.44 MiB\/s   |  50 |  29 |  37 |  50 |  76 |  259 | 1894 |<\/code>\n<code>| PUT 32 | 841.70 KiB\/s | 304 | 169 | 232 | 372 | 612 |  992 | 2119 |<\/code>\n<code>| GET 32 | 4.28 MiB\/s   |  45 |  26 |  34 |  45 |  74 |  197 | 2267 |<\/code>\n<code>| DEL 8  | 0.03 KiB\/s   | 305 | 170 | 243 | 391 | 600 |  791 | 1861 |<\/code>\n<code>+--------+--------------+-----+-----+-----+-----+-----+------+------+<\/code>\n<code>```<\/code><\/pre>\n\n\n\n<p>You can see that the best throughputs are achieved with 32 simultaneous connections to the storage server and download latency remains constant, regardless of transfer throughput.<\/p>\n\n\n\n<p><br>You should note, however, that message access latency is 45 milliseconds on average, despite a network latency of only 5 milliseconds. This is why it\u2019s important to use measuring tools to make sure that object storage is configured properly when used as email storage.<\/p>\n\n\n\n<p class=\"has-text-color has-very-light-gray-color\">.<\/p>\n\n\n\n<h2 class=\"has-vivid-cyan-blue-color has-text-color wp-block-heading\"><em>MAPI: Natively Outlook Compatible<\/em><\/h2>\n\n\n\n<p>Being Outlook compatible means:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong><a href=\"https:\/\/youtu.be\/f2F4GwT1yKE\">Integrating the MAPI<\/a> protocol<\/strong>, the protocol \u2013 or rather series of protocols \u2013 developed by Microsoft for Exchange.<\/li><li><strong>Handling Microsoft\u2019s highly complex data model \u2013 which is <\/strong>based on a property\/value principle. Just the list of known Exchange properties has 376 pages of specifications\u2026 and this list is only one document out of 130 publicly available specifications. Lovers of metaobjects and binary formats that fluctuate depending on versions and contexts, welcome!<\/li><li><strong>Adapting our solution to respond effectively to Outlook queries <\/strong>through a REST API. This has entailed far-reaching changes to the BlueMind architecture, including for email information management and storage to be able to respond to Outlook queries, which are database\/property queries, with no relation to message transactions or IMAP standards.<\/li><\/ul>\n\n\n\n<p>This herculean task, which only BlueMind has been able to complete, resulted in the release of the fully Outlook-compatible <em>BlueMind v4<\/em> in 2019.<\/p>\n\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"3. La r\u00e9volution Outlook - BlueMind Summit\" width=\"800\" height=\"450\" src=\"https:\/\/www.youtube.com\/embed\/f2F4GwT1yKE?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>Like with every new version release, this has been a reality check! What works well \u201cin vitro\u201d sometimes has its \u201cin vivo\u201d surprises &#8212; and new scenarios. 2020 has been \u2013 and still is \u2013 a year of finishing touches and adaptation to \u201creal-life production situations\u201d.<\/p>\n\n\n\n<p>Our MAPI implementation has led to improved Outlook functional coverage and more diagnostic, monitoring and operating tools. Our teams continue to be hard at work to consolidate and fine-tune BlueMind v4.<\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/bluemind.purpl-web.com\/wp-content\/uploads\/2020\/07\/blog.png\"> Data compliance<\/p>\n\n\n\n<p class=\"has-text-color has-very-light-gray-color\">.<\/p>\n\n\n\n<h2 class=\"has-vivid-cyan-blue-color has-text-color wp-block-heading\"><em>Update Tool<\/em><\/h2>\n\n\n\n<p>For better server load management and reduced service downtime, BlueMind has had to undergo significant architecture changes to enable more email information to be stored and exposed.<\/p>\n\n\n\n<p>To upgrade a BlueMind install to version 4, the update tool has to go through every message for BlueMind to ingest their contents. Reading all the messages of an install is a time-consuming and costly operation.<\/p>\n\n\n\n<p>Additionally, upgrading to version 4 requires messages to be re-indexed. This also is extremely time consuming. For an update to be performed within a timeframe that\u2019s compatible with production demands and to avoid excessive service downtime, we\u2019ve upgraded our update tools so that they are capable of pre-processing these time-consuming operations ahead of the changeover without interrupting production service.<\/p>\n\n\n\n<p>As a result, when an update process detects pre-processed data, it no longer needs to go over this data again. Service downtime is reduced to a minimum and the version upgrade doesn\u2019t take any longer than any other major update.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/bluemind.purpl-web.com\/wp-content\/uploads\/2020\/07\/bm35_to_4_migration_before_preindex.png\" alt=\"BM35_to_4_migration_before_preindex\"\/><\/figure>\n\n\n\n<p><span style=\"color:#eeeeee\" class=\"tadv-color\">.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><em><span style=\"color:#0693e3\" class=\"tadv-color\">Zimbra to BlueMind Migration Tool<\/span><\/em><\/h2>\n\n\n\n<p>We\u2019ve developed a tool to facilitate the migration from a Zimbra infrastructure to a BlueMind install. This tool is written in Python using exclusively open APIs (programming interfaces) available in BlueMind and Zimbra.<\/p>\n\n\n\n<p><br>Our migration tool doesn\u2019t just synchronise emails, it also integrates all essential functionalities needed for a successful migration. For instance, it migrates <strong>Zimbra users<\/strong> to BlueMind while <strong>keeping<\/strong> <strong>their contact information<\/strong>, \u201cOut of Office\u201d settings and forwarding to external email addresses.<\/p>\n\n\n\n<p>Passwords can be an issue. This is why we\u2019ve incorporated into BlueMind the management of <strong>all the types of passwords<\/strong> managed by Zimbra so that no passwords need to be reset when changing over from Zimbra to BlueMind.<br><br>The tool also migrates <strong>users\u2019 calendars and address books<\/strong> with their <strong>associated<\/strong> <strong>privileges and shares<\/strong>. Calendar settings are directly synchronised on the user\u2019s calendar and no manual subscription is required. We\u2019ve also incorporated <strong>the management of shares for calendars<\/strong> and <strong>address books<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Migrer vers BlueMind depuis Zimbra\" width=\"800\" height=\"450\" src=\"https:\/\/www.youtube.com\/embed\/TlOEALT1fgQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>Video from our webinar &#8220;Migrating from Zimbra to BlueMind&#8221;<\/p>\n\n\n\n<p>Migrating from a Zimbra to a BlueMind server can be done in several stages over time. To do this we\u2019ve integrated the admin tools required to synchronise data in increments. That way you can start a synchronisation and check that it works properly for a few users and later take up the synchronisation to keep the Zimbra and BlueMind data on par. The increment speeds up processing time and reduces the number of logs the tool produces which limits checking time to a minimum.<\/p>\n\n\n\n<p><br>Because the bm-migrator tool uses public APIs, it can be run on any machine with access to the Zimbra and BlueMind servers.<br><br>We\u2019ve made every effort to keep the tool\u2019s installation straightforward. A simple executable file contains the entire tool (except for imap-sync which has to be installed manually before messages are synchronised).<\/p>\n\n\n\n<p>For our developer friends, we\u2019ve incorporated a shell to facilitate extra script writing for specific needs \u2013 that way they can use all BlueMind and Zimbra directives and data. For example, if a migration is interrupted because of invalid or incoherent data, the data can be edited live and they can tell the migration tool to resume the migration from that point.<\/p>\n\n\n\n<p><span style=\"color:#eeeeee\" class=\"tadv-color\">.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><em><span style=\"color:#0693e3\" class=\"tadv-color\">BM-Cli: BlueMind administration in command line<\/span><\/em><\/h2>\n\n\n\n<p>BM-Cli is BlueMind\u2019s command line interface. It lets you automate admin operations and makes day-to-day management easier.<\/p>\n\n\n\n<p>Why a CLI you ask? We\u2019d be tempted to reply that the people who can\u2019t see the point of a command line interface probably don\u2019t read much about administration issues. Today, most BlueMind operations are carried out through a web-based admin console.<\/p>\n\n\n\n<p>But an admin console has a limited number of actions and capabilities. A CLI helps complement the admin console as it lets you script operations, extract data for specific listing and processing, automate action sequences, perform operations from external programs\u2026<\/p>\n\n\n\n<p>BM-Cli is an integrated tool that uses APIs to automate a wide range of actions, perform multiple repairs (multithread), with no need to code.<\/p>\n\n\n\n<p>We are constantly adding to the BlueMind CLI to make it more comprehensive, allow operations on all types of data generated by BlueMind and automate more tasks.<\/p>\n\n\n\n<p>Watch our video about BM-Cli and how to install it.<\/p>\n\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"BM-Cli, l&#039;administration BlueMind en ligne de commande\" width=\"800\" height=\"450\" src=\"https:\/\/www.youtube.com\/embed\/8AxAXA3TlXs?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p><span style=\"color:#eeeeee\" class=\"tadv-color\">.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><em><span style=\"color:#0693e3\" class=\"tadv-color\">To be continued\u2026<\/span><\/em><\/h2>\n\n\n\n<p>End of part one! Part two will be ready in August to bring you an update about the following tasks:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Improvements to the calendar<\/li><li>Progress on the new webmail solution<\/li><li>Baseware maintenance and update<\/li><li>Overall performance improvements<\/li><li>Maturity of TICK diagnostic tool<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>The first half of 2020 has come with its share of surprises. Many of us have experienced remote work for the first time, changed work habits and everyday tools and altered the way we previously organised our activities to online collaboration. Email has more than ever risen as the oxygen of digital communications. From the [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":2600,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[179,7,1,183],"tags":[192],"class_list":["post-2633","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-solution-en","category-integration-si-en","category-non-categorise","category-technical","tag-featured"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Inside a software publisher\u2019s workshop: new in BlueMind and ongoing projects \u2013 part.1 - Bluemind<\/title>\n<meta name=\"description\" content=\"Plong\u00e9e dans l&#039;atelier d&#039;un \u00e9diteur de logiciel : un \u00e9tat des lieux en 2 parties des derni\u00e8res nouveaut\u00e9s et travaux en cours chez BlueMind\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Inside a software publisher\u2019s workshop: new in BlueMind and ongoing projects \u2013 part.1 - Bluemind\" \/>\n<meta property=\"og:description\" content=\"Plong\u00e9e dans l&#039;atelier d&#039;un \u00e9diteur de logiciel : un \u00e9tat des lieux en 2 parties des derni\u00e8res nouveaut\u00e9s et travaux en cours chez BlueMind\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Bluemind\" \/>\n<meta property=\"article:published_time\" content=\"2020-08-03T09:01:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-08-03T09:01:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bluemind.purpl-web.com\/wp-content\/uploads\/2020\/07\/set-of-tool-wrench-162553.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"1333\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Inside a software publisher\u2019s workshop: new in BlueMind and ongoing projects \u2013 part.1\",\"datePublished\":\"2020-08-03T09:01:20+00:00\",\"dateModified\":\"2020-08-03T09:01:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/\"},\"wordCount\":1849,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/bluemind.purpl-web.com\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/bluemind.purpl-web.com\/wp-content\/uploads\/2020\/07\/set-of-tool-wrench-162553.jpg\",\"keywords\":[\"Featured\"],\"articleSection\":[\"BlueMind's Solution\",\"Integration\",\"Non cat\u00e9goris\u00e9\",\"Technical\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/\",\"url\":\"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/\",\"name\":\"Inside a software publisher\u2019s workshop: new in BlueMind and ongoing projects \u2013 part.1 - Bluemind\",\"isPartOf\":{\"@id\":\"https:\/\/bluemind.purpl-web.com\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/bluemind.purpl-web.com\/wp-content\/uploads\/2020\/07\/set-of-tool-wrench-162553.jpg\",\"datePublished\":\"2020-08-03T09:01:20+00:00\",\"dateModified\":\"2020-08-03T09:01:22+00:00\",\"description\":\"Plong\u00e9e dans l'atelier d'un \u00e9diteur de logiciel : un \u00e9tat des lieux en 2 parties des derni\u00e8res nouveaut\u00e9s et travaux en cours chez BlueMind\",\"breadcrumb\":{\"@id\":\"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/#primaryimage\",\"url\":\"https:\/\/bluemind.purpl-web.com\/wp-content\/uploads\/2020\/07\/set-of-tool-wrench-162553.jpg\",\"contentUrl\":\"https:\/\/bluemind.purpl-web.com\/wp-content\/uploads\/2020\/07\/set-of-tool-wrench-162553.jpg\",\"width\":2000,\"height\":1333},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/bluemind.purpl-web.com\/en\/homepage\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Inside a software publisher\u2019s workshop: new in BlueMind and ongoing projects \u2013 part.1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/bluemind.purpl-web.com\/en\/#website\",\"url\":\"https:\/\/bluemind.purpl-web.com\/en\/\",\"name\":\"Bluemind\",\"description\":\"Collaborative messaging\",\"publisher\":{\"@id\":\"https:\/\/bluemind.purpl-web.com\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/bluemind.purpl-web.com\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/bluemind.purpl-web.com\/en\/#organization\",\"name\":\"BlueMind\",\"url\":\"https:\/\/bluemind.purpl-web.com\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/bluemind.purpl-web.com\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/bluemind.purpl-web.com\/wp-content\/uploads\/2017\/06\/logobm_300.png\",\"contentUrl\":\"https:\/\/bluemind.purpl-web.com\/wp-content\/uploads\/2017\/06\/logobm_300.png\",\"width\":300,\"height\":100,\"caption\":\"BlueMind\"},\"image\":{\"@id\":\"https:\/\/bluemind.purpl-web.com\/en\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Inside a software publisher\u2019s workshop: new in BlueMind and ongoing projects \u2013 part.1 - Bluemind","description":"Plong\u00e9e dans l'atelier d'un \u00e9diteur de logiciel : un \u00e9tat des lieux en 2 parties des derni\u00e8res nouveaut\u00e9s et travaux en cours chez BlueMind","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/","og_locale":"en_US","og_type":"article","og_title":"Inside a software publisher\u2019s workshop: new in BlueMind and ongoing projects \u2013 part.1 - Bluemind","og_description":"Plong\u00e9e dans l'atelier d'un \u00e9diteur de logiciel : un \u00e9tat des lieux en 2 parties des derni\u00e8res nouveaut\u00e9s et travaux en cours chez BlueMind","og_url":"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/","og_site_name":"Bluemind","article_published_time":"2020-08-03T09:01:20+00:00","article_modified_time":"2020-08-03T09:01:22+00:00","og_image":[{"width":2000,"height":1333,"url":"https:\/\/bluemind.purpl-web.com\/wp-content\/uploads\/2020\/07\/set-of-tool-wrench-162553.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Written by":"","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/#article","isPartOf":{"@id":"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/"},"author":{"name":"","@id":""},"headline":"Inside a software publisher\u2019s workshop: new in BlueMind and ongoing projects \u2013 part.1","datePublished":"2020-08-03T09:01:20+00:00","dateModified":"2020-08-03T09:01:22+00:00","mainEntityOfPage":{"@id":"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/"},"wordCount":1849,"commentCount":0,"publisher":{"@id":"https:\/\/bluemind.purpl-web.com\/en\/#organization"},"image":{"@id":"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/bluemind.purpl-web.com\/wp-content\/uploads\/2020\/07\/set-of-tool-wrench-162553.jpg","keywords":["Featured"],"articleSection":["BlueMind's Solution","Integration","Non cat\u00e9goris\u00e9","Technical"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/","url":"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/","name":"Inside a software publisher\u2019s workshop: new in BlueMind and ongoing projects \u2013 part.1 - Bluemind","isPartOf":{"@id":"https:\/\/bluemind.purpl-web.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/#primaryimage"},"image":{"@id":"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/bluemind.purpl-web.com\/wp-content\/uploads\/2020\/07\/set-of-tool-wrench-162553.jpg","datePublished":"2020-08-03T09:01:20+00:00","dateModified":"2020-08-03T09:01:22+00:00","description":"Plong\u00e9e dans l'atelier d'un \u00e9diteur de logiciel : un \u00e9tat des lieux en 2 parties des derni\u00e8res nouveaut\u00e9s et travaux en cours chez BlueMind","breadcrumb":{"@id":"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/#primaryimage","url":"https:\/\/bluemind.purpl-web.com\/wp-content\/uploads\/2020\/07\/set-of-tool-wrench-162553.jpg","contentUrl":"https:\/\/bluemind.purpl-web.com\/wp-content\/uploads\/2020\/07\/set-of-tool-wrench-162553.jpg","width":2000,"height":1333},{"@type":"BreadcrumbList","@id":"https:\/\/bluemind.purpl-web.com\/en\/inside-a-software-publishers-workshop-new-in-bluemind-and-ongoing-projects-part-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bluemind.purpl-web.com\/en\/homepage\/"},{"@type":"ListItem","position":2,"name":"Inside a software publisher\u2019s workshop: new in BlueMind and ongoing projects \u2013 part.1"}]},{"@type":"WebSite","@id":"https:\/\/bluemind.purpl-web.com\/en\/#website","url":"https:\/\/bluemind.purpl-web.com\/en\/","name":"Bluemind","description":"Collaborative messaging","publisher":{"@id":"https:\/\/bluemind.purpl-web.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bluemind.purpl-web.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/bluemind.purpl-web.com\/en\/#organization","name":"BlueMind","url":"https:\/\/bluemind.purpl-web.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bluemind.purpl-web.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/bluemind.purpl-web.com\/wp-content\/uploads\/2017\/06\/logobm_300.png","contentUrl":"https:\/\/bluemind.purpl-web.com\/wp-content\/uploads\/2017\/06\/logobm_300.png","width":300,"height":100,"caption":"BlueMind"},"image":{"@id":"https:\/\/bluemind.purpl-web.com\/en\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":""}]}},"_links":{"self":[{"href":"https:\/\/bluemind.purpl-web.com\/en\/wp-json\/wp\/v2\/posts\/2633","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bluemind.purpl-web.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bluemind.purpl-web.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bluemind.purpl-web.com\/en\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/bluemind.purpl-web.com\/en\/wp-json\/wp\/v2\/comments?post=2633"}],"version-history":[{"count":1,"href":"https:\/\/bluemind.purpl-web.com\/en\/wp-json\/wp\/v2\/posts\/2633\/revisions"}],"predecessor-version":[{"id":2634,"href":"https:\/\/bluemind.purpl-web.com\/en\/wp-json\/wp\/v2\/posts\/2633\/revisions\/2634"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bluemind.purpl-web.com\/en\/wp-json\/wp\/v2\/media\/2600"}],"wp:attachment":[{"href":"https:\/\/bluemind.purpl-web.com\/en\/wp-json\/wp\/v2\/media?parent=2633"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bluemind.purpl-web.com\/en\/wp-json\/wp\/v2\/categories?post=2633"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bluemind.purpl-web.com\/en\/wp-json\/wp\/v2\/tags?post=2633"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}