Roadmap Update #1 - Upload, Rich Text Editor & GraphQL

During the last three months, the project moved to another dimension. The numbers have been multiplied by 4 and more expectations are coming up. This post has one purpose only: to share our ambition and roadmap for the upcoming months.

History

Most of you discovered Strapi as a Headless CMS or Content Management Framework few weeks or days ago. The project itself may seem new but we have been working on it for 2 years already. At the very beginning, we wanted to build a powerful Node.js framework with an administration on top of it. However, the administration was hosted on our server. It worked well but the product was too complicated to play with, it wasn’t the way to go. We received much feedback from the community. The administration was not customisable enough and it was complicated for a real business to build an API.

That’s why we changed our way of improving the framework and we started to design a brand new version. The v2.0.0 was born, it was one of our attempts. It was limited to SQL databases and we didn’t think it as an ecosystem. It was not the right solution to the reported problems. We failed and we learnt a lot about it 💪.

Then, came the v3 with a simple idea: open-source everything and think at a global ecosystem. Most of our problems were due to the hosted parts and the lack of extensibility. So, we didn’t design the v3 as a new technology but like a product.

An open-source product powered by the community with an ecosystem (plugins) built around it.

Vision

The open-source world is full of resources, technologies and projects. It's one of the most fascinating phenomenon of the last fifteen years (when we speak about web development). Leading companies like the GAFA or smaller ones are using open-source projects every single day to develop themselves. However, we noticed there is few open-source products. By products I mean projects such as WordPress, Drupal or MongoDB which have been built with a long-term vision to serve a single purpose only.

Here, I am not comparing Strapi to these giants 🙈 but we totally look them up at some points:

  • The developer experience is at the center : short learning curve, easy setup and easy to use.
  • The developer should have a pretty and usable interface to interact with : clean, only what is needed.
  • Interaction with the community in order to retrieve constructive feedbacks like SaaS products are already doing.

These points drive us and also many others inspiring projects are following them : Now, Create-React-App, Prettier, Parcel, ...

Developers must enjoy well-designed products 🎉

At this point, I believe that we successfully achieved these goals but we keep in mind that we need to focus on enhancing the product now and we aim to develop an ecosystem made of hundreds, even more, thousands (no kidding) of plugins created by the members of the community 💪.

Currently, our current marketplace will become the best way to share plugins with the community, we want to make it open and see it growing up. Meanwhile, additional services will come around to accomplish complicated tasks during the development up to the production lifecycle of your APIs.

In this way, you may have already noticed the analytics plugin is installed by default in your project. It's currently the example of the services I referred earlier.

Our current mindset about such plugins (analytics and later monitoring) is the following:

Analytics

As a CEO or member of the marketing team, you need a dashboard to follow metrics such as the growth of users, the total of daily or monthly sales.

Monitoring

Whereas, as a CTO, you might want to monitor your API to make sure the response time is correct, there is no error, what's the most used route (?), etc.

The Analytics and Monitoring plugins have been thought to serve these purposes. There are not available yet but you can already get in touch with Pierre, our CEO, to schedule a meeting so we can identify your needs and discover the prototype.


Roadmap

As promised, I’m going to list the five points where we will put our focus on for the next three months. I will try to explain each one by answering three questions: Why? How? When?

☝️ The order of each point matters. It defines the priority features to work on.

1 - Upload

It’s the most wanted feature on the vote page and it makes complete sense. Being able to upload a file is a primary feature. Whatever the kind of API you're building, you need to upload stuffs. We are already working on it 🏗, the development started a week ago and the feature should be shipped and released by the beginning of March. We believed the feature should cover most common use cases. You will be able to attach one or many files to a field and the same file could be attached to many entities.



The Upload plugin is the first step to the Media Library plugin that we're planning to develop later.

🗓 Release date: 9 March.

2 - Rich Text Editor (WYSWYG)

There is no doubt that we must implement the rich text editor the sooner the better. We didn’t expect such enthusiasm for it but I think the success of our integration with Gatsby has something to do with it. The rich text editor won’t be a new field type but it will be an extension of the textarea field.

From a technical point of view, it’s the same thing the only difference is the appearance. You will be able to choose between the default textarea or the WYSWYG in the Content-Type Builder plugin. It will also introduce a new kind of files in Strapi to manage the layout and UI of the administration panel.

🗓 Release date: 23 March.

3 - Search, filters, bulk actions

When we designed the Upload plugin, we introduced a search bar. It was a must-have for us. It reminded us that we didn’t implement a search field in the administration yet. There are several medium and large projects which have chosen Strapi recently. The search bar, the filters and bulk actions are currently missing and don’t allow our UI to scale with such projects.

🗓 Release date: 11 April.

4 - GraphQL

The previous version was the first Node.js Headless CMS supporting GraphQL to query and mutate data. At Strapi, we truly believe in the future of GraphQL. It’s certainly the future of APIs and we don’t want to miss out this transformation.

Despite the hype, GraphQL is not mainstream and REST is still the leading convention on the API market.

It’s the second most wanted feature on the community vote page. We are not surprised by that and we anticipated it. Since the beginning, we designed the v3 with GraphQL in mind. We made changes in the core to easily support REST and GraphQL together. The most interesting part is that the future GraphQL integration will support our authentication and permissions layer (ACL).



🗓 Release date: 17 April.

5 - Plugins (extensibility)

Many of you are asking how to customize the administration panel and want to create plugins we didn't see such enthusiasm coming so soon so we focused on finishing the primary plugins development. We are proud of what we are building on top of React and Koa to offer an easy way to integrate new plugins into Strapi.

Currently, the workflow to create a plugin is not easy enough. The documentation is lacking on how add a new plugin into the marketplace so community can enjoy it. We want to dedicate our focus on this part to make sure that both the marketplace and the product will scale and also, supporting our new contributors!

🗓 Release date: 04 May.

Conclusion

We are not trying to add tons of new features in the next three months. We really want to build a scalable and stable ecosystem first.

I hope this post will help everyone to understand our vision and way of thinking. We are still at the beginning of the journey… I want make a special thanks to our contributors (🙏) which help us every day to improve the project and fix issues. Thank you!



Feel free to comment this post to share your feelings and thoughts about it.