The first Neos Media Sprint in history

Bringing media management to the next level - together

 – Written by Sebastian Helzle


20 Contributors, fully focused on "Media Management": From April 13th to 17th the first ever "Neos Media Sprint" took place in Switzerland. 

And this is how it went:

With only 5 members from the Neos Core Team present, many attendees came from various agencies in Switzerland, and Germany. As core team members, we always like such a distribution, as we get new input and new perspectives, and offers the attendees more "space" for their own ideas. We had 8 First-Timers attending this Sprint: Michel, Edgar, Guang, Georg, Daniel, Oli, Conny and Fabian all have taken the plunge. 

For this sprint, the Swiss agencies Internezzo and visol approached me during NeosCon 2025. They were interested in organising a Neos sprint in Switzerland to work on improvements for the Media management in Neos, especially for the package Flowpack.Media.Ui. The goal was to provide a better user experience for their customers when managing and editing assets like images and pdfs in their Neos projects.

Of course I said yes! Having an actual media sprint with many attendees was great, as for many years I developed the Flowpack.Media.Ui mostly alone based on requirements given by feature sponsors and community input. As almost every Neos instance uses assets in some kind of way, everyone would benefit from any kind of improvement.


Our plan

Before the sprint we identified multiple big topics to work on:

  • Multi dimensional metadata management with project specific fields
  • Batch editing of assets
  • A roadmap to move the Media.Ui package into the Neos core
  • Storing asset data as nodes in the content repository
  • A speed up for the content repository to make it ready to handle all asset data in the future
Many post-its
The "plan"

The first two topics are something many people in the community have requested for quite a while.

Besides these we prepared a list of issues on our Github board that piled up over the years regarding UX, code quality, documentation, styling and design changes. This way we could be sure that there would be something for each participant to contribute. The Neos team members always bring 3x more tasks for themselves to a sprint, than they could ever accomplish, but it's sometimes a challenge to also prepare enough smaller units of work, which are solvable for first time or occasional contributors with various backgrounds.

My final goal was that we stay pragmatic and focus on actually delivering usable features for Neos 8 and 9, and not have a bunch of unfinished tasks at the end of the week. I'm not sure how often I mentioned that to the various attendees 😃


Sunday - Arrival

Before the first official day of the sprint a few early birds including me already came together in Lucerne to have dinner, discuss the sprint preparations and enjoy each others company. This was also when Lea Renggli (our sprint angel) started to provide freshly cooked meals for us, continuing during the whole sprint.


Monday - The first day of the sprint, Pizza and gaming

Everyone met in the morning at the office of internezzo in Rotkreuz. After saying hello and having coffee, the whole group came together to get to know each other, and for introductions into the facilities. Finally the other Neos team members and I explained what we planned to achieve during the sprint and a rough overview of what parts of Neos were related to the "Media Management" topic. It became clear early, that there will be two groups. One for the architectural discussions regarding meta data management and asset data storage, and one for the user-centric topics. This matched perfectly with the epics we had prepared, and the participants spread evenly between the two groups. Now the work began!

Sprint participants discussing the Neos media architecture
Hard to find enough post-its to fit a media architecture
The sprint participants discussing the media architecture
Many people - many perspectives
Sebastian discussing the media UX tasks
The frontend group, listening to one of my monologues

I won't go too much into the boring details of people loudly discussing architecture details, sitting around and convincing Claude to do what they want, and sometimes even writing actual code themselves 😉. The results later in the article will speak for themselves.

In the evening, we were all collected and driven to Lucerne where we first went to a nice pizza place and then to Gameorama, an interactive video game museum, where we played all kinds of crazy (mostly) old arcade games. It was a ton of fun, and my arms hurt after blasting hundreds of zombies.

sprint-switzerland-marc-pinball.jpg
Marc tried the latest pinball technology
Shooter games at gameorama
The 16+ area was the place to be for Bastian
Bernhard and Lorenz at the dance booth
Let's dance with Bernhard and Lorenz
Paula with a VR headset
Paula went to another world
Paavo and Jonas at the drums
The drummer boys Paavo and Jonas
Various old computers
Lots of old computers to play with

Tuesday - First results and BBQ

After the exciting first day, the second one was once again filled with lots of discussions, piles of post-its and already the first finished tasks. I was very happy that several people worked on existing Github issues, with some of them being years old. Technical debt, necessary infrastructure improvements and sometimes simple dependency updates were done and improved the stability and maintainability of the Flowpack.Media.Ui package. Special thanks here to Kathleen, Marc and Jonas. As I was often helping here and there and answering questions, I also took the time to do the tedious work of modernising and stabilising the various linting and testing steps in the Media.Ui package. This helped me already during the sprint to be quicker at verifying and merging some really large changes.

In the evening Marc and Michel took care of the BBQ at the internezzo office and we had a great time. Who of the two looks more serious about their job? 🤔

Marc taking care of the grill
Marc at the grill
Michel taking care of the grill
Michel at the grill

Wednesday - More coding, fewer discussions and a Pizza oven

On the third day, the architectural discussions were mostly finished and everybody was ready to smash their keyboards to get things done. A few people sadly left already, but the velocity picked up as everybody knew what they wanted to work on. We also had the first review session for the interface changes related to the new batch editing features and some design changes. It felt good to see the design changes that Conny and Fabian had built, making the Media.Ui look "fresh" again. Soon everyone will be able to enjoy them 🙂

After lunch Conny served a special Neos pre-birthday cake for me. Thank you ❤️

For dinner, Jonas Renggli picked up Andri Steiners (Ops One AG) pizza oven on a trailer and brought it to the internezzo office. The oven was heating up while we finished our days work and we met to prepare our pizzas and turn them into a delicious dinner.

A cake with Neos logos
My pre-birthday cake
A presentation of the Media.Ui interface
A modernised Media.Ui in all its glory
Experts handling pizzas
The round thing has to go into the square thing

Thursday - More meta than data and more BBQ

On Thursday we continued our work in Kriens at the visol office, as most remaining participants stayed not too far away. Also Maya Bornschein and Peter Wyss joined the sprint. Michel and I worked mostly on the first prototype of the new "multi-dimensional extensible metadata editing" in the Media.Ui, as Bastian had prepared a change in the Neos.Metadata package that provides a generic api and storage backend. After building the first iteration and then a second iteration we realised it didn't work well when actually trying to edit the metadata, so we had a call with Michels colleague who promised to provide some better design and UX for us on the following day. 

Dinner was another round of BBQ. Jonas took care of the grill before Marc Henry took over again.


Friday - Finishing up

Friday was also my last day, so we spent the morning on finishing up some tasks, doing some reviews of our changes, eat ice cream and finally saying goodbye. The week went by far too quickly. Just before I left I received a first batch of the new metadata editing design and they looked great as they would also solve a bunch of other issues we had with the media selection in the Neos Ui.

The other remaining sprinters decided to stop or pause their work too, in order to enjoy the great weather.

A concept of the new metadata editing screen
The new metadata editing view?
The media ui module interface with the latest improvements
The Media.Ui with the multi selection and batch editing features
Jonas, Bernhard and Marc in front of the Swiss Alps
Jonas, Bernhard and Marc grounding off a successful week with a hike in the sun

Shoutout to the sponsors

This sprint was just such a great experience because we had amazing sponsors and helpers.

Many thanks to:

  • allgemeine baugenossenschaft luzern abl: Sponsoring a guest apartment for several Neos team members.
  • Andri Steiner (Ops One AG): Providing his mobile pizza oven for a delicious dinner.
  • ongoing GmbH: CHF 500 for catering.
  • internezzo ag: CHF 2,500 for hosting the first half of the sprint, the social event and catering.
  • Marc Henry Schultz: Many thanks for creating the documentation.
  • Comvation: CHF 200.- for catering
  • visol digitale Dienstleistungen AG: for hosting the second half of the sprint, cooking, lots of fairy dust and last-minute miracles

The outcome

Did we achieve our plan? 

Most of it!

A pre-release 2.1.0-rc1 of the Flowpack.Media.Ui package with many improvements is already available for your Neos 8 project! This release already contains many code quality improvements, a smaller bundle size, batch editing, improved error handling and more.
Thanks to Jonas I can now release quickly with a Github action. I will need to do more testing and probably merge a few more changes and then prepare a stable release for Neos 8 and 9 projects. Enjoy!

And there is more coming soon:

  • Thanks to Michel and Bastian, we have a prototype for editing customisable multi-dimensional metadata which we plan to release in the coming weeks with new Flowpack.Media.Ui and Neos.Metadata feature releases. 
  • Marc is putting the finishing touches on the Neos 9 CR performance improvements.
  • Bernhard created a draft PR for the CR based assets.
  • Paula is finishing the login and error overlay for the Media.Ui module.
  • Conny and Fabian are working on more improvements for the batch editing and UX.
  • And more changes which we still have to fully review and merge!

Final thoughts

Thanks to everyone who participated at the sprint, also all the ones I didn't mention by name. I didn't expect such a turnout and I am very happy that so much work got done. I will be able to make some great releases in the next weeks. This was surely one of the sprints I will remember for a long time. We had such a good time thanks to people who worked so well together and also the ones who didn't contribute code or technical expertise, but took care, that everyone had what they needed. 

It's been a long time since I went to my first Neos sprint, but I remember how intimidating it felt at first. But thanks to people who made me feel welcome, I stayed with the project. I was surprised several times, when I saw a new notification for a pull request that finally solved something that had annoyed me for a long time. I hope I will see more of those for the Media.Ui now even though the sprint is over.

Achievements like this are only possible with many people helping and contributing. We can only work on these things with the support of others, either by investing time or with sponsoring. I hope the sprint inspired the participants and agencies to further involve with pushing Neos forward.

Chocolate bunnies
Lea Renggli also made chocolate bunnies and bricks for all participants ❤️