Hey everyone!
As first half of the year nears the end, I would like to share updated roadmap for the rest of 2018:
Social Auth
Currently under development, "Social Auth" means integration of python-social-auth
into Misago's code, thus making it possible for site administrators to enable users to join or log in using their account in social site supported by aforementioned library.
For power users python-social-auth
exposes the framework for writing custom integration with oauth poviders that are not supported in the core.
UPDATE: Social auth has been released in Misago 0.18!
GDPR
As soon as social auth gets released, I'll be moving on to implement features making it easier to comply with GDPR regulation that comes into effect in EU on 25th of May. Misago already implements data anonymization on account deletion, but there are two other tasks imposed on site administrators that could be supported in core package: adminable list of explicit consents and personal data export.
UPDATE: GDPR has been released in Misago 0.19!
Docker for local dev and production
We want to make it easier to start and run Misago communities as well as to try it out locally to for those who want to see it's moderation and administration tools. Thanks to contributions from @einarf, it is now possible to get Misago running on your machine with zero file edits and no python knowledge by just 3 commands in terminal.
The next step is to provide Docker setup that can be ran in production environments, simplifying long and tedious process of setting up and configuring Misago, UWSGI, Nginx, Lets encrypt with caching and email, as well as abstract away the process of editing settings.py
. Instead user will be provided with basic config file and guide on how to go about different setups, with actual configuration using sane defaults being generate from that. Power-users will still be able to get their hands dirty with configuration files.
UPDATE: As of 02.11.2018 Misago-Docker is available for production use.
Removing Python 2.7, Python 3.4 and 3.5 support
Increasing number of Python libraries are becoming Python 3.5-only, with special attention being given to Python 3.6 that brings async facilities and useable type annotations to the Python. I think its time to drop 2.7, 3.4 and 3.6 from Misago codebase, to open the way for those libraries, as well as to reduce current maintenance burden.
Single Sign On/Integration with existing sites
Top feature request of all time for Misago is easy integration with existing sites. While my original plan was to try make Misago easier to integrate with existing Django projects, after much exploration on the matter I have concluded that doing so would be a mistake, resulting solution nightmare to maintain and integrate with.
Instead Misago will implement features enabling it to be configured to use cookie with JWT set by your site as well as to redirect users to your login/registration forms, as well as expose you additional API endpoint to forcefully update user from your own application if you wish so.
GraphQL API, deprecation of JSON API
When Facebook was demoing the GraphQL on ReactConf 2016, I've considered it interesting but terribly immature piece of technology. The time sure flies, and GraphQL together with tool ecosystem has matured a lot in those 2.5 years.
Today I am convinced that GraphQL is the way to build API for modern web applications, and I want to replace current JSON API with new GraphQL API in one of future releases, making it a new requirement for new frontend.
New frontend
My grand vision for Misago is software package with two components: the server written in Django and exposing powerful API for building internet forum, and client written in TypeScript with React.js. If you want to customize looks, you can either fork default client, or write your own in whatever technologies you are comfortable with. The server will implement only the basic templates for clients that don't support JavaScript, such as some internet crawlers or web scrapers. It will also come with default client included so you don't have to install, build and deploy it separately to get started.
Due to large scope of this change, it is unlikely to land in 2018, but it will also not be a blocker from making smaller maintenance releases adding small tweaks, fixes or features.