I work pretty extensively on performance and am quite proud of where Discourse is at the moment.
At this point pushing memory requirements down would require either
- Building support for JRuby so we can get native threading, which would fragment our development. Not that I am against it but it is very complex. Even then it is questionable if JRuby would be able to work nicely with say 250MB total. I don’t know.
- Building native threading into MRI Ruby, that would take multiple years of full time work for the entire team.
- Porting all of Discourse to another platform like say golang. Another multiple year project.
- Running a threaded web server that like puma, which is only sort of threaded due to the GIL and would be more glitchy.
None of the options sound too appealing to me so the 1GB requirement is going to have to remain for now.
Its the nature of the beast, if you want to build a big Ruby app it will consume a lot of memory, we continue to work on reducing memory requirements but it takes time and is not something we can all work on.
When it comes to performance on my immediate roadmap is:
- Improve client side rendering of topics
- Improve how Discourse works with gigantic databases.