Autoindustrie erwartet keine flächendeckenden Diesel-Fahrverbote

heise online Newsticker - 23. Mai 2018 - 8:00
Liest man das Urteil der obersten Verwaltungsrichter genau, sind die Hürden der Verbannung von Dieselautos aus Städten relativ hoch. Die Autolobby sieht sich bestätigt, verunsicherte Autobesitzer dürften erleichtert sein. Vom Tisch ist das Thema nicht.

No Man's Sky: Echter Multiplayer-Modus kommt mit Juli-Update

heise online Newsticker - 23. Mai 2018 - 7:00
Das Update No Man's Sky NEXT rüstet beim Weltraum-Erkundungsspiel den lange ersehnten Multiplayer-Modus nach. Am 24. Juli gibt es das Spiel dann auch erstmals für die Xbox One. Understanding Media Management with Drupal Core

Planet Drupal - 23. Mai 2018 - 7:00

But I just want to upload images to my site…

There is a clear difference between what a user expects from a CMS when they try to upload an image, and what they get out of the box. This is something that we hear all the time, and yet we, as a Drupal community, struggle to do it right.

There are not simple answers on why Drupal has issues regarding media management. As technology evolves, newer and simpler tools raise the bar on what users expects to see on their apps. Take Instagram for example. An entire team of people (not just devs) are focused on making the experience as simple as possible.

Therefore it’s normal to expect that everyone wants to have this type of simplicity everywhere. However, implementing this solutions is not always trivial, as you will see.

Continue reading…

Virtuoso Performance: Configuring migrations via a form

Planet Drupal - 23. Mai 2018 - 4:29
Configuring migrations via a form mikeryan Tuesday, May 22, 2018 - 09:29pm

Frequently, there may be parts of a migration configuration which shouldn’t be hard-coded into your YAML file - some configuration may need to be changed periodically, some may vary according to environment (for example, a dev environment may access a dev or test API endpoint, while prod needs to access a production endpoint), or you may need a password or other credentials to access a secure endpoint (or for a database source which you can’t put into settings.php). You may also need to upload a data file for input into your migration. If you are implementing your migrations as configuration entities (a feature provided by the migrate_plus module), all this is fairly straightforward - migration configuration entities may easily be loaded, modified, and saved based on form input, implemented in a standard form class.

Uploading data files

For this project, while other CSV source files were static enough to go into the migration module itself, we needed to periodically update the blog data during the development and launch process. A file upload field is set up in the normal way:

$form['acme_blog_file'] = [ '#type' => 'file', '#title' => $this->t('Blog data export file (CSV)'), '#description' => $this->t('Select an exported CSV file of blog data. Maximum file size is @size.', ['@size' => format_size(file_upload_max_size())]), ];

And saved to the public file directory in the normal way:

$all_files = $this->getRequest()->files->get('files', []); if (!empty($all_files['acme_blog_file'])) { $validators = ['file_validate_extensions' => ['csv']]; if ($file = file_save_upload('acme_blog_file', $validators, 'public://', 0)) {

So, once we’ve got the file in place, we need to point the migration at it. We load the blog migration, retrieve its source configuration, set the path to the uploaded file, and save it back to active configuration storage.

$blog_migration = Migration::load('blog'); $source = $blog_migration->get('source'); $source['path'] = $file->getFileUri(); $blog_migration->set('source', $source); $blog_migration->save(); drupal_set_message($this->t('File uploaded as @uri.', ['@uri' => $file->getFileUri()])); } else { drupal_set_message($this->t('File upload failed.')); } }

It’s important to understand that get() and set() only operate directly on top-level configuration keys - we can’t simply do something like $blog_migration->set(‘source.path’, $file->getFileUri()), so we need to retrieve the whole source configuration array, and set the whole array back on the entity.

Endpoints and credentials

The endpoint and credentials for our event service are configurable through the same webform. Note that we obtain the current values from the event migration configuration entity to prepopulate the form:

$event_migration = Migration::load('event'); $source = $event_migration->get('source'); if (!empty($source['urls'])) { if (is_array($source['urls'])) { $default_value = reset($source['urls']); } else { $default_value = $source['urls']; } } else { $default_value = ''; } $form['acme_event'] = [ '#type' => 'details', '#title' => $this->t('Event migration'), '#open' => TRUE, ]; $form['acme_event']['event_endpoint'] = [ '#type' => 'textfield', '#title' => $this->t('CF service endpoint for retrieving event data'), '#default_value' => $default_value, ]; $form['acme_event']['event_clientid'] = [ '#type' => 'textfield', '#title' => $this->t('Client ID for the CF service'), '#default_value' => @$source['parameters']['clientId'] ?: 1234, ]; $form['acme_event']['event_password'] = [ '#type' => 'password', '#title' => $this->t('Password for the CF service'), '#default_value' => @$source['parameters']['clientCredential']['Password'] ?: '', ];

In submitForm(), we again load the migration configuration, insert the form values, and save:

$event_migration = Migration::load('event'); $source = $event_migration->get('source'); $source['urls'] = $form_state->getValue('event_endpoint'); $source['parameters'] = [ 'clientId' => $form_state->getValue('event_clientid'), 'clientCredential' => [ 'ClientID' => $form_state->getValue('event_clientid'), 'Password' => $form_state->getValue('event_password'), ], 'startDate' => date('m-d-Y'), ]; $event_migration->set('source', $source); $event_migration->save(); drupal_set_message($this->t('Event migration configuration saved.'));

Note that we also reset the startDate value while we’re at it (see the previous SOAP blog post).

Tags Drupal Planet Drupal Migration Use the Twitter thread below to comment on this post:

Configuring migrations via a form

— Virtuoso Performance (@VirtPerformance) May 22, 2018


Kalamuna Blog: Drupalistas Spent Our Entire Swag Budget. Where did the Money Go?

Planet Drupal - 23. Mai 2018 - 0:09
Drupalistas Spent Our Entire Swag Budget. Where did the Money Go? Shannon O'Malley Tue, 05/22/2018 - 15:09

This April at DrupalCon Nashville, in addition to wanting to meet colleagues and soak up the great talks, we wanted to create a forum for the international Drupal community to do good. That’s why we used our sponsor booth wall as a space for attendees to promote nonprofits that work for causes that matter to them.

Categories Articles Community Drupal Nonprofits Author Shannon O'Malley

Dries Buytaert: My thoughts on Adobe buying Magento for $1.68 billion

Planet Drupal - 22. Mai 2018 - 21:20

Yesterday, Adobe announced that it agreed to buy Magento for $1.68 billion. When I woke up this morning, 14 different people had texted me asking for my thoughts on the acquisition.

Adobe acquiring Magento isn't a surprise. One of our industry's worst-kept secrets is that Adobe first tried to buy Hybris, but lost the deal to SAP; subsequently Adobe tried to buy DemandWare and lost out against Salesforce. It's evident that Adobe has been hungry to acquire a commerce platform for quite some time.

The product motivation behind the acquisition

Large platform companies like Salesforce, Oracle, SAP and Adobe are trying to own the digital customer experience market from top to bottom, which includes providing support for marketing, commerce, personalization, and data management, in addition to content and experience management and more.

Compared to the other platform companies, Adobe was missing commerce. With Magento under its belt, Adobe can better compete against Salesforce, Oracle and SAP.

While Salesforce, SAP and Oracle offer good commerce capability, they lack satisfactory content and experience management capabilities. I expect that Adobe closing the commerce gap will compel Salesforce, SAP and Oracle to act more aggressively on their own content and experience management gap.

While Magento has historically thrived in the SMB and mid-market, the company recently started to make inroads into the enterprise. Adobe will bring a lot of operational maturity; how to sell into the enterprise, how to provide enterprise grade support, etc. Magento stands to benefit from this expertise.

The potential financial outcome behind the acquisition

According to Adobe press statements, Magento has achieved "approximately $150 million in annual revenue". We also know that in early 2017, Magento raised $250 million in funding from Hillhouse Capital. Let's assume that $180 million of that is still in the bank. If we do a simple back-of-the-envelope calculation, we can subtract this $180 million from the $1.68 billion, and determine that Magento was valued at roughly $1.5 billion, or a 10x revenue multiple on Magento's trailing twelve months of revenue. That is an incredible multiple for Magento, which is primarily a licensing business today.

Compare that with Shopify, which is trading at a $15 billion dollar valuation and has $760 million of twelve month trailing revenue. This valuation is good for a 20x multiple. Shopify deserves the higher multiple, because it's the better business; all of its business is delivered in the cloud and at 65% year-over-year revenue growth, it is growing much faster than Magento.

Regardless, one could argue that Adobe got a great deal, especially if it can accelerate Magento's transformation from a licensing business into a cloud business.

Most organizations prefer best-of-breed

While both the product and financial motivations behind this acquisition are seemingly compelling, I'm not convinced organizations want an integrated approach.

Instead of being confined to proprietary vendors' prescriptive suites and roadmaps, global brands are looking for an open platform that allows organizations to easily integrate with their preferred technology. Organizations want to build content-rich shopping journeys that integrate their experience management solution of choice with their commerce platform of choice.

We see this first hand at Acquia. These integrations can span various commerce platforms, including IBM WebSphere Commerce, Salesforce Commerce Cloud/Demandware, Oracle/ATG, SAP/hybris, Magento and even custom transaction platforms. Check out Quicken (Magento), Weber (Demandware), Motorola (Broadleaf Commerce), Tesla (custom to order a car, and Shopify to order accessories) as great examples of Drupal and Acquia working with various commerce platforms. And of course, we've quite a few projects with Drupal's native commerce solution, Drupal Commerce.

Owning Magento gives Adobe a disadvantage, because commerce vendors will be less likely to integrate with Adobe Experience Manager moving forward.

It's all about innovation through integration

Today, there is an incredible amount of innovation taking place in the marketing technology landscape (full-size image), and it is impossible for a single vendor to have the most competitive product suite across all of these categories. The only way to keep up with this unfettered innovation is through integrations.

For reference, here are the 2011, 2012, 2014, 2015, 2016 and 2017 versions of the landscape. It shows how fast the landscape is growing.

Most customers want an open platform that allows for open innovation and unlimited integrations. It's why Drupal and Acquia are winning, why the work on Drupal's web services is so important, and why Acquia remains committed to a best-of-breed strategy for commerce. It's also why Acquia has strong conviction around Acquia Journey as a marketing integration platform. It's all about innovation through integration, making those integrations easy, and removing friction from adopting preferred technologies.

If you acquire a commerce platform, acquire a headless one

If I were Adobe, I would have looked to acquire a headless commerce platform such as Elastic Path, Commerce Tools, Moltin, Reaction Commerce or even Salsify.

Today, there is a lot of functional overlap between Magento and Adobe Experience Manager — from content editing, content workflows, page building, user management, search engine optimization, theming, and much more. The competing functionality between the two solutions makes for a poor developer experience and for a poor merchant experience.

In a headless approach, the front end and the back end are decoupled, which means the experience or presentation layer is separated from the commerce business layer. There is a lot less overlap of functionality in this approach, and it provides a better experience for merchants and developers.

Alternatively, you could go for a deeply integrated approach like Drupal Commerce. It has zero overlap between its commerce, content management and experience building capabilities.

For Open Source, it could be good or bad

How Adobe will embrace Magento's Open Source community is possibly the most intriguing part of this acquisition — at least for me.

For a long time, Magento operated as Open Source in name, but wasn't very Open Source in practice. Over the last couple of years, the Magento team worked hard to rekindle its Open Source community. I know this because I attended and keynoted one of its conferences on this topic. I have also spent a fair amount of time with Magento's leadership team discussing this. Like other projects, Magento has been taking inspiration from Drupal.

For example, the introduction of Magento 2 allowed the company to move to GitHub for the first time, which gave the community a better way to collaborate on code and other important issues. The latest release of Magento cited 194 contributions from the community. While that is great progress, it is small compared to Drupal.

My hope is that these Open Source efforts continue now that Magento is part of Adobe. If they do, that would be a tremendous win for Open Source.

On the other hand, if Adobe makes Magento cloud-only, radically changes their pricing model, limits integrations with Adobe competitors, or doesn't value the Open Source ethos, it could easily alienate the Magento community. In that case, Adobe bought Magento for its install base and the Magento brand, and not because it believes in the Open Source model.

This acquisition also signals a big win for PHP. Adobe now owns a $1.68 billion PHP product, and this helps validate PHP as an enterprise-grade technology.

Unfortunately, Adobe has a history of being "Open Source"-second and not "Open Source"-first. It acquired Day Software in July 2010. This technology was largely made using open source frameworks — Apache Sling, Apache Jackrabbit and more — and was positioned as an open, best-of-breed solution for developers and agile marketers. Most of that has been masked and buried over the years and Adobe's track record with developers has been mixed, at best.

Will the same happen to Magento? Time will tell.

Huawei Y7 im Test: edle Mittelklasse mit Schwächen

heise online Newsticker - 22. Mai 2018 - 18:30
Mit Android 8, Quad-Core-Prozessor, 6-Zoll-Display und 13-MP-Kamera kostet das Huawei Y7 knapp 200 Euro. Ob sich die Investition lohnt, verrät unser Test.

Amazon: Trump soll von US-Post höhere Zustellgebühren verlangt haben

heise online Newsticker - 22. Mai 2018 - 18:30
Der US-Präsident hat den Online-Händler schon mehrmals angegriffen und ihm unfaire Praktiken vorgeworfen. Jetzt soll Trump die US-Postbehörde angehalten haben, die Gebühren für die Paketzustellung zu verdoppeln – jedoch ohne Erfolg.

Fortnite: Android-Version und Anpassungen

heise online Newsticker - 22. Mai 2018 - 18:30
Epic Games plant für diesen Sommer die Veröffentlichung einer Android-Version des beliebten Battle-Royal-Spiels Fortnite. Für die mobile iOS-Version gibt es weitere Aktualisierungen.

Störung bei Sparda-Banken wegen Firewall-Wartung

heise online Newsticker - 22. Mai 2018 - 18:00
Am Donnerstag kämpften die Sparda-Banken mit einem landesweiten technischen Totalausfall, der erst am frühen Abend behoben wurde. Ursache sollen Wartungsarbeiten an der Netzwerkstruktur des IT-Dienstleisters gewesen sein.

Deutsche und Chinesen konferieren erstmals über Cyber-Themen

heise online Newsticker - 22. Mai 2018 - 17:30
Deutschland und China haben erstmals eine Cyber-Konsultation veranstaltet. Deutschland betonte die Notwendigkeit für Unternehmen, VPN-Verbindungen zu unterhalten.

Halbleitertechnik treibt Wachstum von Carl Zeiss

heise online Newsticker - 22. Mai 2018 - 17:30
Der Optikkonzern Carl Zeiss steigert seinen Umsatz mit der Zukunftstechnologie EUV-Lithographie, die eine Herstellung von immer kleineren, effizienten und schnelleren elektronischen Schaltkreisen ermöglicht. In Asien ist die Nachfrage besonders hoch.

Datenschützer dürfen Sicherheitslücke bei Obike nicht prüfen

heise online Newsticker - 22. Mai 2018 - 17:00
Seit einem halben Jahr bietet Obike Leihfahrräder in vier deutschen Großstädten an. Das Unternehmen gibt zu, dass es 2017 ein Leck bei den Nutzerdaten gab. Die Hintergründe könnten aber nicht weiter geprüft werden.

Wochenrückblick replay: Neue E-Schlitten, Cuxxxhaven, Efail

heise online Newsticker - 22. Mai 2018 - 16:30
Schicke Autos mit fetten Batterien, eine peinliche WLAN-Sperre im Urlaub und der mögliche Angriff auf die E-Mail-Verschlüsselung mit PGP und S/MIME: Das waren die meistgelesenen Meldungen der vergangenen Woche.

Ashday's Digital Ecosystem and Development Tips: Should You Hire In-House Programmers as Employees or Outsource to a Consulting Firm?

Planet Drupal - 22. Mai 2018 - 16:30

Well sure, ok, maybe we might be slightly biased on this. We are, as it turns out, a consulting firm in the business of selling outsourced programming. Ahem...

But, nonetheless, I’ll try to be reasonably fair and balanced here. As a consultancy I think we have, in fact, a unique vantage point on such matters, since we spend each day of our lives straddling both sides of this topic: That is, we sell outsourced programming to organizations for whom outsourcing is a good fit; whereas we ourselves hire in house staff programmers, i.e. we are an organization for whom outsourcing is not a good fit.

Web Wash: Create Individual Registration Forms using Multiple Registration in Drupal 8

Planet Drupal - 22. Mai 2018 - 15:30

If a user needs to create an account on a Drupal site, they go to the user registration page at "/user/register". This page is the registration form on a Drupal site. You can customize it by adding or removing fields. But what if you want to have multiple registration pages?

Let's say you have two different roles on your Drupal site and you need a separate form for each role. How would you build that?

You could handle all of this writing custom code but remember we're using Drupal so means there's a module that can handle this type of functionality and It's called Multiple Registration.

The Multiple Registration module allows you to create individual registration forms base off a user role in Drupal. When you register on one of the forms, you're automatically assigned the configured role.

In this tutorial, you'll learn how to use Multiple Registration to create individual registration forms.

c't uplink 22.3: Beamer und TVs für die WM, Raspi als Internet-Filter und DSGVO für Dummies

heise online Newsticker - 22. Mai 2018 - 15:00
In c't uplink gibt es diesmal wieder wie gewohnt drei Themen. Wir klären: Welche TVs und Beamer sind für die WM geeignet? Wie kann ich mit einem Raspi Schadcode und Werbung abwehren? Was muss man über die DSGVO wissen?

ZBox CI329 Nano: Der bessere NUC dank DisplayPort 1.2?

heise online Newsticker - 22. Mai 2018 - 15:00
In der ZBox CI329 Nano von Zotac steckt vergleichbare Hardware zu Intels aktuellen NUC7 mit Pentium- und Celeron-Prozessoren auf Basis der Gemini-Lake-Architektur. Das Barebone setzt sich hauptsächlich bei der Anschlussauswahl von den NUCs ab.

Smarte Lautsprecher: Apples HomePod deutlich hinter Amazon Alexa

heise online Newsticker - 22. Mai 2018 - 15:00
Laut einer Marktanalyse kam der Siri-Speaker in den ersten Wochen auf 600.000 verkaufte Einheiten. Deutsche Kunden warten weiterhin.

ThoughtWorks: Zunehmende Komplexität in der Cloud

heise online Newsticker - 22. Mai 2018 - 15:00
Ein rasant wachsendes IoT-Ökosystem sowie verschärfte regulatorische Anforderungen in der Cloud stellen Unternehmen vor größere Herausforderungen, wie ThoughtWorks in der 18. Auflage des zweimal jährlich erscheinenden Reports ausführt.