• Aug. 27, 2013, 8:06 p.m.

    This question was asked few times already, but I feel its yet to see real answer.

    Misago is Python app using Django framework, or if you like Django nomenclature, Django project. This in itself raises plenty of questions, like "how I'll integrate it with my site that uses PHP/Ruby/Perl/Java/ASP.net?" or "how can I integrate it with my Django site?".

    For as far as I can remember, two different softwares were put together via use of special glue scripts that overwrited parts of one or both softwares forcing them to share one user authentication component (and sometimes other features).

    But how do you "glue" together so fundamentally different softwares?

    The answer is simple: you put technology-agnostic layer between two softwares enabling them to communicate with each other.

    Today web has been dominated by two technologies that can be used for such layer: XML and JSON.

    Integration using Web API

    Every serious language has way to talk to services as well as libraries for making HTTP requests and consuming JSON.

    In future Misago will have officially supported extension: Misago-WebAPIServer. This extension will allow you to run API server for you community for your other sites to use to talk with Misago. This server will accept HTTP requests as commands and respond with JSON documents.

    Ideally, by using Web API you will be able to use profiles from Misago on your site by making API requests to fetch user data. Your site profiles would be reserved for staff members to use publication and edition tools to manage content. Misago will be able to associate forum profile with one on site trough e-mail hash, allowing you to fetch authors forum profile details for displaying them by his content.

    And once author publishes something new, automatically tell Misago to create discussion thread for it and return link to it for you to display on your site or use Misago for comments system.

    About Django

    Django defines its own semantics for words application and project:

    Application is a package delivering set of associated features.
    Project is a collection of applications configured to work together to create one solution like store, news site or forum.

    According to those definitions, Misago is Django project made of many Applications that together act as forum. While it is possible to build reuseable Django forum app, this requires different design philosophies that ultimately result in much different and eventually less featured app.

    To remain reusable, You have to remain self-contained and maintain separation from other parts of solution. You can't have your own profiles/sessions/permissions/whatever, because there is huge chance those integrating it will be using standard components and won't be willing or able to change them to accommodate your requirements.

    This is also reason why there are many forum apps/gems/bundles for Django/Rails/Symfony that deliver forum functionality but don't look that impressive once you compare them with, say, phpBB 3.

    So if you want to integrate with Misago on language level you have no choice but to modify your apps to work with Misago or maintaining your own fork that uses django auth component, however starting with Django 1.5 its possible to force Django to use your own user model in place of Django's native auth.user, so I'll be investigating possibilities o making Misago user model compatible with Django auth, making it possible to use Django Admin and easier for djangonauts to get into writing Misago apps.