Monthly update - July 2019

From an observers’ point-of-view, building a product may seem like an easy mission. But, in reality, it is very challenging to build a product that perfectly answers the multiple needs of your users. And it is even more challenging to build an open-source product in an open-source company. Values like transparency, empathy and kindness must be the essence of each decision taken, and communication with the community must be crystal clear.

Article Cover

As a team, we decided to keep you more informed about what is happening under the hood every month. This monthly update will cover Strapi product, company or team updates. It is one of the decisions we took during the recent offsite.

So today, I'm going to share the latest news about Strapi, and we'll have this moment with you every month. Here we go!

Company

Since our latest update article, a lot of things have happened in the company that is behind Strapi. First thing first, the team grew from 5 to 10 people. Virginie, Alexandre, Klervi, David and Maxime joined us in this journey to reinvent the way content is managed and distributed to people.

Strapi Team Annecy Lake

We plan to be twice as many by the end of 2020. One of our challenges for this year is to be correctly organized to allow for full-time remote positions. But if you are interested in working with us in Paris, please feel free to apply. We are looking for a product owner, a front-end developer and a back-end developer.

During the last semester, we moved into new offices, currently sharing them with Drivy.
But we're moving again soon! We will finally have our own base in September! You will definitely know when we will settle. If you want to know more about how's life at Strapi, you should definitely follow us on Instagram 😉.

Product

The company is growing, but as you know, the Strapi product is also evolving a lot. As the CPO, my biggest challenges are defining a clear roadmap, keeping the community informed about the changes and explaining the strategic evolution understandably.

This series of blog posts should help fulfill this role. Moreover, the public portal available on productoard will be reorganised to be kept up-to-date.

Why did we stop developing new plugins?

It has been a long time since we last released a new plugin. The latest to date is the documentation plugin. It allows you to automatically generate the documentation related to your project and display it through the Swagger UI. In practice, the plugin scans the models (content types) available in your project and generate a JSON file which follows the OpenAPI 3.0 specifications.

For those who don’t know, Strapi started almost six years ago. It was a side project, React wasn't a big thing at all, even Node.js wasn't as popular as it is now. And over the years, we’ve accumulated a lot of technical debt. In the beginning, we didn't write any tests and we merged a lot of external contributions that had not been thoroughly tested.

All these reasons combined forced us to take the hard decision to stop developing new features (and even refuse new pull requests). It became too difficult to accept and trust external contributions without tests and therefore keep building a product on unstable foundations.

Our priority was to move away from the alpha to the beta version of Strapi. Which meant:

  • updating the architecture to make future updates easier.
  • developing the foundation of the components library.
  • writing more tests in Strapi core to make it more stable.

What's new?

  • a RFC repository has been recently opened to make proposals and to discuss with the community.
  • a component library Buffet.js has been developed to harmonize the UI across the current and new plugins to come.
  • We released [ßeta](https://blog.strapi.io/strapi-beta-is-out/)
    • The architecture of a generated project changed to simplify the updates.
    • A true SPA for the administration panel.
    • New core API.
    • Reliable deployment.
    • Dead-simple and faster monorepo setup.
  • We recorded a series of videos available on our YouTube channel to learn how to integrate Gatsby with Strapi.
  • We released a website example called FoodAdvisor. This example will be the central piece of our documentation, tutorials and guides. One example to rule them all! We will integrate every new feature available in Strapi into it.

As you can see, we didn't release yet new features like localisation or permissions but we invested a lot into the foundations of Strapi, tutorials and developer experience.

What's coming?

We received more than two thousand insights - it’s huge! - on productboard, and I would like to thank everyone in the community for that. This information helps us everyday to think about new use cases when solving issues or designing new features.

However, we should be careful to not ONLY follow your requests. We cannot build a stable and long-term ecosystem if the foundations are weak. To do that, we have to reduce and resolve the pain points you already have today before adding more in the product.

Our only goal for the next six months is to make you happy. Nothing less, nothing more.

We know that you have issues in using Strapi. This is the reason why one month ago we opened an issue on the main repository to reference all the pain points you have. We also read every single insight on productboard to extract other pain points. We discussed with many of you on Slack to dig deeper into your use cases and understand how you use Strapi on a daily basis.

Your comments and suggestions helped us identify more than fifty pain points. Here are the ones we would like to fix for the next three months:

On top of that, we started working on the improvement of the data structure.

Managing content is managing data structure.

As a real headless CMS is not associated to any specific use case, you can use Strapi to build a corporate website or a mobile application or an app for use on any kind of new devices. For that reason, we do want to provide a more flexible data structure. We are going to release a new kind of structure called Groups. And with them, we will also introduce the repeatable fields feature.

Let's take an example. You want to build a website where you list recipes. Often recipes are composed of many ingredients. The field ingredient will be a repeatable group. It will be a group because an ingredient has a name, a quantity and maybe an image. This group will be repeatable to set each of the many ingredients of your recipe.

The groups and the repeatable fields are also very relevant to manage meta tags (SEO) for an entry. If you have trouble to imagine how it will work, don't worry, we will write an entire blog post to explain how awesome the groups and repeatable fields are when they are combined together and how to use them.

When the group and repeatable fields feature is released, we will be able to work on the Slices feature, thereby allowing more and more flexibility in the data structure.

Roadmap's timeline

Roadmap

  1. Improve the storage of the layout.
  2. Support unique constraint and foreign keys.
  3. Secure the administration access to the API.
  4. Be able to reorder the fields.
  5. Increase the flexibility for naming collection/table names.
  6. Display images in the list view.
  7. Allow new line in the layout and make it smoother.
  8. Replace the current markdown editor by a rich text editor.

Conclusion

User satisfaction is our top priority. We really want to improve the current product instead of adding new things. To allow easier deployment, data export or import, to facilitate triggering events (webhooks) or having a new rich text editor will be the next pain points that will be solved. The number of releases already increased from one every two weeks to three per week. It is going to grow even faster with new teammates who will join the team in the next few months.

Strapi is hiring!
If you want to kill the hassle of managing content and join us on this mission, take a look at our jobs page! We would love to hear about your passions, what you do in your spare time and have a chat about how we could work together!