Last weekend, Firegento e.V. organized a Magento hackathon in Leipzig, Germany. It’s become quite a tradition to have a hackathon on the weekend before the Meet Magento DE. This year, the hackathon was fully booked. After a pizza pre-party in a park, we started on Saturday morning.
— firegento (@firegento) 2. Juli 2016
Taking place at sublab, a cabinet of curiosities, we were in a surrounding that called for hacks and creative solutions: there was a picture of Jesus with LED eyes (stuff for serious nightmares) and a drawer filled with “tools of high topographic complexity” (you know, egg whisks, etc.) and a lot of other details to discover. 40 people voted to work on the following topics:
- Magento 2 Import/Export (alternative link)
- Porting MageSetup to Magento 2
- magento-stammtisch.de Website Improvements
- Magento 2 CI/Deployment Workflow
- Magento 2 German Locale Package
- mage-hackathon.de replatform to Magento 2
- Extend MageSetup for Magento 1 with a Checkbox for the Contact Form
So the first step was to check on the current status of all available translations. Does the translation package come with a licence that allows usage in our projects? Does it work? Are the translations complete? There was still enough to do so our team (Nicolas, Albert, Julian, Tobias, Kyryl, Gerhard, and me) got to work.
— therouv (@therouv) 2. Juli 2016
Third Party Translation Package for Magento 2.x
The package created at Magento Hackathon in Paderborn and managed by Splendid Internet is published under the OSL 3.0, which allows usage in projects if you add an attribution to the author. It works both in Magento 2.0’s frontend and backend and even in Magento 2.1.
Integrated Translations in Magento 2.x
From the perspective of a non-German merchant, it would certainly be better to have a decent complete German translation integrated in Magento. Though Magento’s approach – a Crowdin project – is good, there are still a few flaws in Magento’s translation management that need to be addressed. For example, in Magento 2 translations are not added per module but for the whole installation. This leads to troublesome mix-ups where the original strings (untranslated texts) are the same but the appropriate translations differ. Just think of the word “to” which can be translated to “zu”, “bis” and “an” in German or the word “order” which is both a verb and a noun and can mean “Bestellung” as well as “Reihenfolge”. The idea to make original strings with different meanings unique is not practical because you never know which locale has different meanings for the same word. Also, if the original string is changed, existing translations are lost. So backward compatibility with prior Magento 2.x versions is challenging. According to Ben, Magento is aware of the issue, but they don’t have a solution yet. If you have an idea how to fix this, get in touch! My colleague Fabian proposed to just have translations per module again like it’s done in Magento 1.x, but I guess it’s too late for that now.
No additional translations needed, but better management
The third party translation package fulfills the need for a complete German translation. It would have been a waste of our hackathon time to spend more time on adding translations. Therefore, our team shifted its focus to translation management. Rico Neitzel has previously created a tool that speeds up translation generation for new Magento versions: the script calculations the Levenshtein distance of original strings, for example comparing an original string from Magento 1.7 with an original string from Magento 1.8. If it recognizes a close proximity in the original strings, the existing translation of Magento 1.7 is suggested as new translation for Magento 1.8, flagged with meta information that it needs approval. This is a great help when confronted with a new Magento version that needs translating. Rico’s tool lacks a frontend that would make the approval process easier. Also, the tool is currently only intended for local use by one person. Translating is a time-consuming task, so if you want to speed it up further, it’s good to bring in more contributors.
Why haven’t we used Crowdin?
From past experiences on Rico’s side, we are aware of bugs in Crowdin’s export tool that would get in our way, e.g. breaking multiline translations.
Joined forces and existing ressources
Tobias Kämpfe and Gerhard Fobe have previously worked on a frontend for translation management which our team used as a starting point. The graphic user interface makes it easy to suggest and edit translations. We have a few more features planned that could keep us busy for some more hackathons, for example set an admin who approves translation suggestions. It is intended to be used with any Magento 1.x, 2.x and x.x translation csv files. Fast forward to Saturday evening. With the Euro 2016 running, you can’t ignore a match of the German team. So we had a stream – with 40 to 60 sec delay. That alone wouldn’t have been a problem if it wasn’t for the rather enthusiastic crowd outside our windows, spoilering. Oh, and Twitter really is a real-time medium – in fact, reporting of goals before we even saw it “live” on TV. Second or third screens everywhere…
On Sunday, there was some more busy hacking and presenting results before we closed our laptops and went over to Meet Magento DE pre-party.
It was less of a installathon than the hackathon in Paderborn a few months ago. Magento 2 is maturing and so do the workflows associated with it. Even if it is a community-driven event, we had one official Magento attendee: Ben Marks joined us on both days, answering questions around Magento 2.
There were very few international attendees. The increasing number of Meet Magento events around the globe, MageTitans, DevParadises and so on, decreases the need to go abroad to attend a Magento event. On the one hand, this makes it easier for those attendees who like to converse in their native German tongue instead of the semi-official event language English. On the other hand, a greater attendee diversity usually comes with a greater number of views and experiences – which benefit the projects.
Some of the hackathon projects provide helpful ressources to build up a Magento 2 store that abides by German laws and jurisdiction, for example when it comes to displaying shipping taxes in a store’s checkout.
There were a number of people involved in making this hackathon happen. Our locals Claudia and Timo helped a lot – thank you for doing so much for us! And of course thanks to Fabian, Rico, Rouven and Tobias. Special kudos to our sponsors: Deine Tür, Openstream, Eurotext and LimeSoda.
A personal note
Lastly, I would like to thank all attendees and organizers for this weekend. You know what’s great about our Magento community? That we welcome anyone interested in Magento. At a Magento hackathon, the majority 1) knows how to code and 2) is male.
I attended this year’s hackathon in Leipzig though I’m neither able to code nor male. Some people asked me why I signed up.
Well, first of all, I like to learn more about Magento and stay up-to-date with recent developments. There is no better place to get an impression of Magento’s current state than a hackathon. How do people work with Magento? What do they want to improve? What are their pain points?
Secondly, the usual crowd at Magento hackathons is a bunch of very likeable people that I like to spend time with.
And thirdly, being part of this community does not just mean to attend events but also to give something back. There is always something meaningful you can do at a hackathon. Even if it’s just investigating licences, proof-reading a readme file or providing UI feedback.
This hackathon also passed my very own quirky event test: is it childproof? Not in the sense of checking for shock guards for power sockets, but in the sense of checking for a social setting where no kid is harmed. Two attendees brought their kids along for a few hours and the crowd reacted beautifully, reminding each other to guard their tongues (no swearing about bugs when minors are within earshot).
It’s been a great fun, a lot of friendly faces, all of them on their best behaviour. It’s the best entry point for your deep dive into the Magento community.
— Claudia Teubner (@Quiricia) 3. Juli 2016