Sulu-CMS-Logo-2
Sulu Team

MASSIVE ART Innovation Day 2017

About a week ago the digital agency MASSIVE ART hosted an annual innovation day for the whole company. Everyone in the team was encouraged to try out new technologies and implement cool projects. The cool thing about this event ist that technical people work together with designers, product-managers and online marketeers to create new and exciting ideas such as:

  • Vision of a Sulu-Community (Platform and Trademark)
  • HTML for dummies (showcase how HTML, CSS and JavaScript work together in the browser)
  • Different design concepts
  • and lots of other cool stuff

The Sulu team was also part of this awesome day. We have discussed some nice project ideas and tried new technologies and tools.

Patrick: IntelliJ Plugin

My idea was to develop a Sulu plugin for IntelliJ/PhpStorm. After some research we found out that it’s a more complex topic that we have thought! So we decided to set up the plugin and collect the ideas we have first: IDEAS/ROADMAP

Now the question to the Sulu community:

  • Are you guys interested in such a Plugin?
  • If yes: Do you have more ideas/wishes?
  • If yes: Do you have any knowledge how to implement it?
  • Please give us some feedback in the comments

PS: GitHub repository: https://github.com/trickreich/idea-sulu-plugin

Daniel: Flow runtime

We have stumbled upon flow-runtime (an addon to flow) which we are currently using for the react rewrite of our frontend.

Flow is a static type checker which will help you find errors in JavaScript even before they happen during runtime. But the thing is that there are still a few situations in which this is not possible, e.g. when data has to be retrieved from the server. That's where flow-runtime could assist. It offers a babel-plugin which transpiles the flow types to runtime checks. In most cases we don't want that because it is a performance overhead but we could need that for certain files (especially the ones doing requests to the server).

I tried to use it in Sulu, which started with loads of warnings. But who cares about warnings anyway? ;-) The thing that was a little annoying was that it would not always work in combination with our watch task. In my opinion it is not really usable this way because it would slow down developing by a lot.

Johannes: Docker-Environment

My idea was to create a docker environment build with docker-compose and docker-sync. The combination of this technologies seems to be a good combination - but has also some disadvantages. More information can be read in the blog post of Bartosz Telesiński at espeo.

To validate the environment I played around with sylius/product-bundle inside the Sulu-Admin. While working inside the container it was clear that the underlying tools work together and does not thwart the developer too much in his workflow. But as the blog post above also mentions the docker-sync is only a workaround. Sometimes the sync freezes or breaks if you change branches.

As the lessons learned from this day I found out that docker is more stable and developer friendly than we thought and we will try to improve the setup and maybe release it one day inside the Sulu namespace.

PS: there is also a github repository where issues and pull-requests are welcome https://github.com/wachterjohannes/sulu-docker

Alex: PHPStan and code-quality

I took a look at how we can improve our code quality with some tools. Currently we run PHPUnit tests and some linting tools (eslint, stylelint, phpcs) over gitlab-ci/travis-ci in our projects. So I looked at PHPStan which is a static code analyzer.

The installation of PHPStan is really simple as it is just a composer requirement. The analyzer can be run on different levels (0-7) which tells PHPStan how strict it should check the code. If you add PHPStan to an existing project we would recommend first run it on the lowest level (0) to fix the most common issues in your code and then increase it step by step.

In our case, the analyzer did find common issues like wrong configured namespaces, undefined methods/properties or a method which is called with wrong parameters. I can really recommend adding PHPStan at least with level 1 to every project.

Other tools I have looked at where PHPCPD a copy paste detector and TestCafé a JS UI testing library.

Thomas: Event-Storming

Event Sourcing and CQRS are design patterns everyone is currently talking about. Especially in the field of content storage solutions. To get a deeper insight I attended a workshop during the Symfony Live Berlin 2017 by Marco Pivetta. And one takeaway was to do an Event Storming session before you can decide if Event Sourcing and CQRS are the right architecture for your problem.

Event Storming is a workshop-based method to quickly find out what is happening in your domain. The business process is "stormed out" as a series of domain events which are visualized as orange stickies. Domain- and IT-Experts work together to explore and understand a domain in a collaborative way. It was invented by Alberto Brandolini in the context of domain-driven design.

Long story short: Myself and some people of the consulting unit of MASSIVE ART gave Event Storming a try and we were really surprised how fast you can dive into a domain to get the big picture and identify the critical spots.

Conclusio

The innovation day is a great possibility to try out new technologies and integrate them into the daily workflow. The projects this year were very useful and will hopefully improved and released one day.