• Sept. 16, 2017, 4:33 p.m.

    We've did it! This week Misago has passed 1000 stars on Github! 🎉🎉

    This (roughly 😉) means that 1000 people found Misago interesting enough to them to bookmark it for later time via Github Star. Thank you for helping increasing Misago's visibility on Github and in Django/Python communities!

    And while we are at updates, lets...

    Sum up the summer

    I've had quite the plans for Misago on the summer, plans that sadly didn't materialize much due to work interrupting me constantly. Summer is mostly light time in advertising, when most of people and clients are out on holidays the time is usually spent slowly, thinking up possible ideas for starting school year or bigger things for xmas, doing mostly maintenance work on our apps and sites. But, well, this one was quite different from previous one, and brutal attention requirements meant I was coming home either to keep working to meet milestones, or not in the mood to look at any code. This resulted in delays to the plans I've made for Misago.

    Originally I've hoped to ship two features over the summer: the simple search dialog in forum's navbar, and post-accurate read tracking. I've shipped first thing few weeks back, and will only get to work on latter one after I wrap up some cleanups that popped up along the way.

    This is the short-term goal form me: do some cleanups and improvements in Misago API's as continuation of work I've started early into summer, and that brought us the improvements to mass moderation actions. Then make readtracker post-accurate, which allows for some interesting things, like flagging thread as unread for users that already read it when moderator approves queued post on, say, page 2 out of 3. In addition to this readtraker will tip users off if they somehow miss the posts. Other benefits of this approach will be keeping read data when threads or posts are moved around the forums.

    Playing the long game

    Some time ago I've made decision to call it quits on current hybrid approach to Misago's frontend. Originally I've decided to go this way, because it spared me need of writing router for whole site, and I've been writing JS Views only for things that needed interactivity, leaving everything else in Django's templates for end users to customize. This sounded great approach, but eventually I've learned from experience that majority of views in Misago are interactivity-heavy and require me writing same html twice, first as JSX, and then next as placeholder UI for Django. Lastly, this approach was messing up with a lot of folk trying to customize how Misago markup. The "I've edited template and it displays for split second and then it goes away!?" posts are coming up again and again and again are perfect proof of this.

    So the plan is to move on and convert the Misago to proper SPA application, with bulk of Django templates being simplified and delegated to the role of placeholders for useragents that for one reason or another don't support the JS, which your human users interacting with Misago purely trough the JS UI. Bulk of Misago's JS will propably need to be rewritten to work with React Router, some of state will need to be moved up to the React Redux state container, etc ect.

    If you've just rolled your eyes and said "great, here's going another rewrite"... you are right, but you are also wrong. The first step in the process will be changing Misago's server part to work with both old and new JavaScript at same time. Yup! The new frontend will be happening completely on the separate repo. And, when its ready, rewritten templates and assets will replace old ones in main repo, and the frontend repo will be be reshaped to form basis for all users to clone and work with to develop their own themes for Misago.

    Somewhere there there's also plan for using latest and greatest in frontend development, React 16, Bootstrap 4, Sass, Jest, Reactstrap, forming the base that's futureproff enough for implemention of all those cool features that I've envisioned for Misago, that I've didn't want to implement yet to don't complicate work in maturing and stabilising our frontend.

    Finally, keeping new frontend on separate branch means we'll not be having to deal with same "years old codebase vs fresh codebase" dilemma that Misago was experiencing for years that 0.6 was in the making, that effectively made it mentally challenging to hop back and deliver fixes for current releases.

    That will be the plan for next months.

    On final word, Thank you all for being here and giving Misago a chance! There's nothing more motiving to work on opensource than seeing other people find your work useful to them and there's no greater reward than seeing communities come together thanks to your work!

  • bookmark

    Thread has been pinned globally.

  • Members 15 posts
    Sept. 18, 2017, 10:09 p.m.

    Congrats on the 1000 stars. Really loving this project!
    Also cool to read about the future plans. As it will be a separate repo / work with new and old do you think at this point of the project we could publish our forum as it is now and later on if all the new things are ready upgrade to that and of course import all data from the "old" misago?

    Best

  • Sept. 18, 2017, 11:44 p.m.

    Congrats on the 1000 stars. Really loving this project!

    Hey, thanks!

    import all data from the "old" misago

    Don't let the separate repo thing fool you. The work happening on it will not replace or supersed other repo. You'll simply have "main" repo that contains Misago, and separate repo that contains Misago's default user interface and design. On releases I will be updating CSS and JS on main repo to be in sync with changes on other one.

    When new frontend lands on main repo, your update to will be very much same as it is now: uninstall old Misago and install new one using pip, then run collectstatic to update CSS, JS and images. Thats it. Python part of Misago's will remain 99% same and so importing data from old to new will not be needed.

  • panorama_fish_eye

    Thread has been unpinned.