Github selects Lithium to run its community forums, Discourse dev is none too pleased

Discussion in 'Forum Software' started by rafalp, Mar 10, 2018.

  1. Ryan Ashbrook

    Ryan Ashbrook IPS Developer

    3,713
    1,127
    +691
    I cannot believe they didn't pick IPS!

    But really, I don't see what the big deal is. Github is like any other forum owner - they will pick whatever is best suited for them and their situation.
     
    • Pure Genius! Pure Genius! x 2
    • Funny Funny x 1
    • Winner Winner x 1
    • List
  2. Paul M

    Paul M Limeade Addict

    3,848
    1,627
    +2,189
    On behalf of my former employer, I'm surprised, and gutted, they didnt pick vB5 :lildevil:
     
    • Funny Funny x 9
    • Winner Winner x 1
    • List
  3. R0binHood

    R0binHood Habitué

    1,176
    412
    +907
    So use the excellent built in search from the search box or the share sheet search if you need some kind of ‘find on screen’ search?

    Risky opinion here - but I quite like the scrubber they have that allows you to easily jump to any point in a thread without having to flick through page after after page and then swipe to scroll further to find a specific post. :eek:

    It works very well on mobile.
     
  4. Kevin

    Kevin Oooh, something shiny!

    3,394
    912
    +1,179
    These days, wouldn't that be the expected reaction if they did pick vB5? :whistle:
     
  5. Pete

    Pete Flavours of Forums Forever

    1,773
    227
    +614
    If, and only if, you have a good internet connection. If your connection is flaky, it can and will break in many fun ways.
     
  6. R0binHood

    R0binHood Habitué

    1,176
    412
    +907
    As will most web apps
     
  7. Pete

    Pete Flavours of Forums Forever

    1,773
    227
    +614
    Not the way Discourse does. NodeBB handles it better but both flail on inconsistent connections, while phpBB, SMF and XF (I have no experience of trying to use MyBB) on a two hour train commute, where some areas barely hit 3G... they don't break.
     
  8. SAFAD

    SAFAD Developer

    61
    13
    +19
    I have no idea how consistency nor concurrency is handled in both Discourse and NodeBB, but PHP systems *do not* have any control over concurrency and consistency, basically each request "boots up" *the entire system* (well sophisticated development ofcourse will not lead to such thing) that is why you don't face issues with systems built on PHP (consistency and concurrency wise).

    On the other hand, NodeJS has this "non blocking I/O" basically the system listens to the host for calls and functions accordingly to the request, and as NodeBB is new to the scene I assume it incorporates the latest technologies and development idioms to achieve maximum usage of the client's capabilities, hence the issue, to put it in more technical words, in NodeBB (without taking a look into the code) the client side has a callbacks system, or async, Qs, or more effeciently subscription system, it basically subscribes to the resource on the server side (let's say for the example's sake /thread?id=10) and updates the client (i.e the interface) content based on the data that is "continuously" received.
    More explanation: The server listens for INPUT, it receives a thread request with id 10, it sends OUTPUT to the client (assuming since its all javascript, and ReactJS or any other "Reactive" library is being used) continuously updates the thread content based on the output, it is kind of real-time (ish) thing but it has its major issues especially with the latest versions of NodeJS which introduced many new "features" regarding this technology that basically broke things all around and made some MAJOR developers leave it for Golang (I'm not major but I left it for Go :p)

    Speaking of Discourse, I have not used Ruby nor Rails in years, in fact I don't support any of them anymore, but I believe they kept up with the technology and its trends these days, so data concurrency and consistency must be a thing, I assume it would be the same case like NodeJS, thus the issues with network latency people are facing with these two systems.

    Conclusion? you really, REALLY, REALLY, have to focus and push lots of resources on data concurrency and consistency to achieve the level of robustness and stability (that the old systems that simply do not incorporate this technology) have, and this is coming from a developer that has switched from "Simple" systems development, to Enterprise-grade real-time systems.
    I maybe wrong about this altogether, but if I am correct about them developing the systems the way I said (and for NodeBB there is no way around callbacks and subscriptions, been there done that), they REALLY REALLY REALLY need to look on this subject profoundly, not every resource needs to be a reactive content, Quora for example rather than having the content reactive (and notifying the users in page about the changes that has happened) it simply shows a notification on top saying you need to refresh the page to see the latest content, a similar approach can fix these latency issues in those softwares (again if I am correct about the implementation)

    Disclaimer: I am not saying I am better than the guys behind Discourse or NodeBB, I am simply stating that the topic of data is a major thing that should not be looked under just because you have good internet connections so don't worry about network latency and performance.

    Fun Fact to add to this long reply: Do you now that we benchmark and measure performance in NANOSECONDS in the Golang community? :D
     
  9. LiquidServe

    LiquidServe Aspirant

    23
    8
    +12
    Default implementation of Ruby runs is single core. No concurrency there. There are implementations like Rubinious and some Java one that I seem to forget the name of, which can run on multiple cores but those aren't stable enough.
    So there the comparison that Discourse would be better than PHP based in terms of concurrency is not acceptable.

    As far as Lithium goes, I think it can work on the scale Github wants it to work on. Something like XenForo would require vertical scaling which means that you can only increase the power of one server, on which PHP based forum is running, to handle the traffic.
    Lithium probably has sharding, load balancing, session management on multiple servers built into it right out of the box.
    So Lithium can charge $35,000 for the value they provide while a PHP or Ruby based forum can't charge that right now.
     
  10. rafalp

    rafalp Desu Ex

    1,178
    707
    +360
    Why can't I spin up additional instances for xenforo and put everything behind loadbalancer?
     
  11. R0binHood

    R0binHood Habitué

    1,176
    412
    +907
    I believe DigitalpointDigitalpoint has some kind of load balancing for his site, with his site split across 8 servers.

    https://forums.digitalpoint.com/threads/new-server-hardware-for-the-geeks.2654797/

    I'm sure Github HQ could figure out how how to make other forum software scale if they really wanted to, especially given the nature of the business they're in.
     
  12. LiquidServe

    LiquidServe Aspirant

    23
    8
    +12
    It’s not OOB. You would have to write customer database adapters just to share the databases.

    Setting up session management over a load balancer with multiple server is also a thing to think about.

    Everything is possible, but it’s a time Vs money tradeoff and it seems they have a ton of money at their disposal.
     
  13. R0binHood

    R0binHood Habitué

    1,176
    412
    +907
    Yeah, and I'm sure that for 1 months worth of Lithium you could funnel some man hours into pretty heavily customising another solution :D

    Lithium doesn't even have code syntax highlighting OOB.
     
  14. rafalp

    rafalp Desu Ex

    1,178
    707
    +360
    Why can't I keep database on dedicated instance and make http instances connect to it? Is that not supported in MySQL?

    Why can't I use custom session engine that keeps session data in, say, database or KV store? AFAIK Zend Framework that's under the hood in XF supports and recommends doing that from beginnings of Zend_Session?
     
  15. LiquidServe

    LiquidServe Aspirant

    23
    8
    +12
    What you’ll do with SQL is vertical scaling where you’ll increase the power of your single server to a large enough value until adding more hardware becomes so expensive that you realize that the same database could be run off 2 separate servers to distribute the load and at quarter of the cost.
    That’s where the problem starts. GitHub is going to hit that on day 1.

    For sessions, you could do that. Set up some memchached servers, save the cookies there. Again, I doubt you’d have only 1 of those servers. When you put 2 servers, things change and you’d have to write a custom session engine like you suggested for that as well.

    It’s always easier to have pioneers work on giving you a solution than to waste time figuring out on your own. That’s how businesses work. That’s why they acquire other companies, for their assets and expertise.
     
  16. rafalp

    rafalp Desu Ex

    1,178
    707
    +360
    Now go make sure you tell all this stuff to guys running Neogaf, one of most active forums in the web, because apparently what they are doing is impossible using XenForo :]

    They didn't hit that mark after half year. Its reasonably active forum, but its peanuts completed to, say, bungie.net
     
  17. Karll

    Karll Adherent

    346
    117
    +150
    MySQL/MariaDB replication is a standard feature (has been for years and years), so it's very easy to horizontally scale reads. Write scaling is harder to achieve, though, but I suppose forums are mostly reads.
     
  18. LiquidServe

    LiquidServe Aspirant

    23
    8
    +12
    Never said that it’s impossible. It’s possible to parse your forum content and create a much better search which predicts what you are looking for and gives youbresults even before you hit enter. But that’s not available right out of the box.

    I was talking to a developer at a company which has been debating to shift from MySQL to SQL Server by MIcrosoft. Why do you think they would pay for something when they have open source software available to them that they are already using right now?

    What would happen to the read latency when a transaction locks a table?
     
  19. rafalp

    rafalp Desu Ex

    1,178
    707
    +360
    Humm? Where did the search come from? I haven't brought it up.
     
  20. Karll

    Karll Adherent

    346
    117
    +150
    SQL Server is a very fine and very popular database system, and for a number of years it has had advanced features not found in MySQL. Though in recent versions, MySQL, and maybe especially MariaDB, are catching up. (Not to mention PostgreSQL, which is another fine Open Source database system.) It's a question of the specific requirements they have as well as the skill set in the developer team.
    Transactions don't have to lock whole tables (e.g. row-level locking), and you can also use different transaction isolation levels which have an impact on the type of locks used.
     
Verification:
Draft saved Draft deleted
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.