As Nextcloud advanced with progresses making it competitive in fully integrated government and corporate workflows, OpenCloud is getting more and more attention.

The fact, that both are collaborative cloud plattforms, designed to be selfhosted and mainly developed in/around Berlin from FOSS-Community-Surroundings, makes one ask about the differences.

The main difference I see, is the software stack

  • Nextcloud, as a fork of ownCloud, kept the PHP code base and is still mainly developing in PHP
  • OpenCloud, also a fork of ownCloud, did a complete rewrite in Go

Until know, Nextcloud is far more feature complete (yes I know, people complain, they should fix more bugs instead of bringing new features) than OpenCloud, if we compair it with comercial cometitors like MS Teams.

I like Nextcloud!

I deploy it for various groups, teams, associations, when ever they need something where they want to have fileshare, calendar, contacts and tasks in one place. Almost every time, when I show them the functionality of Nextcloud Groups an the sharing-possibilities, people are thrilled about it, because they didn’t expect such a feature rich tool. Although I sometimes wish it would be more performant and easier to maintain, so non-tech-people could care for their hosting themselves.

Why OpenCloud?

Now, with OpenCloud, I am asking my self, why not just contribute to the existing colab-cloud project Nextcloud. Why do your own thing?

Questions

So here I expect the Go as a somewhat game-changer (?). As you may have noticed, that I am not a developer or programmer, so maybe there are obvious advantages of that.

  • Will OpenCloud, at some point, outreach Nextclouds feature completeness and performance, thanks to a more modern approach with Go?
  • Will Nextcloud with their huge php stack run into problems in the future, because they cant compete with more modern architectures?
  • If you would have to deploy a selfhosted cloud environment for a ~500 people organization lasting long term: Would you stick to the goo old working php stack or see possible advantages in the future of the OpenCloud approach?

Thanks :)

  • Something Burger 🍔
    link
    fedilink
    English
    arrow-up
    40
    ·
    edit-2
    2 days ago

    Nextcloud’s biggest issue is performance, and PHP, while not a problem per se, doesn’t help. PHP is not designed for huge applications that need to have processes running in the background; it only runs when a request is made then stops the process, therefore it needs to load itself from scratch on every single page load.

    This is because PHP uses something called CGI; the webserver (usually nginx or Apache) calls an external PHP binary to generate a page. With Go (or pretty much any other language), the app is its own server and can keep data in memory and do stuff even when no request is coming.

    • merthyr1831@lemmy.ml
      link
      fedilink
      English
      arrow-up
      20
      arrow-down
      1
      ·
      2 days ago

      There’s a bunch of technical debt passed off as features, too. Like, Nextcloud runs background tasks as a cron job which is something I’ve never seen with other hosted services. It’s probably a holdover from before containerised applications were ubiquitous but honestly it comes off as jank.

      Also, I wonder if there would be an argument for a Nextcloud fork that doubled down on PHP by utilising something like Laravel to put all the rendering on the server side. Right now it uses VueJS which is fine, but PHP is really best suited for server side rendering that you just can’t leverage when using a front end framework in JavaScript.

      • yoshman@lemmy.world
        link
        fedilink
        English
        arrow-up
        7
        ·
        2 days ago

        Like, Nextcloud runs background tasks as a cron job which is something I’ve never seen with other hosted services.

        Drupal also uses crons to run repeated tasks. By default, Drupal cron cleans out stale database records for a few tables and breaks old caches. It can be extended by the developer, though.

        It’s probably a holdover from before containerised applications were ubiquitous but honestly it comes off as jank.

        PHP is pre-container and pre-virtualization, so I guess you can think of it as a hack way of getting garbage collection. To be honest, the cron’s translate pretty well to k8s cronjobs. You just use the same image as the app and override the command with the cronjob command.

      • sugar_in_your_tea@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        6
        ·
        2 days ago

        Pretty much everything here seems to be wrong:

        1. OpenCloud is a fork of ownCloud OCIS, which is written in Go
        2. The only Rust code for NextCloud is this list, which has one repo (mentioned in your link)
        3. PHP handles everything except persistent client connections

        I haven’t benchmarked it, but OCIS feels way faster than Nextcloud.

      • atzanteol@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        13
        arrow-down
        2
        ·
        2 days ago

        The scaling, in particular, is a huge benefit of PHP over practically every other technology out there: to double the performance of a PHP server, you can simply have twice as many cores and things will work without any changes needed. Not only is the scaling you get pretty much 100%, unlike other languages, this scaling continues beyond a single server!

        There is so much wrong with this that it’s difficult to know where to start…

        • Justin@lemmy.jlh.name
          link
          fedilink
          English
          arrow-up
          4
          arrow-down
          3
          ·
          edit-2
          2 days ago

          PHP does actually scale better than something like Lemmy which is written in rust

          But sure, you can act like you know more than the Nextcloud devs

          • atzanteol@sh.itjust.works
            link
            fedilink
            English
            arrow-up
            6
            arrow-down
            1
            ·
            edit-2
            2 days ago

            PHP does actually scale better than something like Lemmy which is written in rust

            Okay - How then?

            But sure, you can act like you know more than the Nextcloud devs

            I’m a web developer too - so I feel rather qualified to speak on the subject. I don’t think the Nextcloud developers are some sort of genius team of engineers but I’m not saying they’re stupid or anything - just that PHP does not scale better than “practically every other technology out there”.

            It forks or creates a thread per request. It’s horizontal scaling which is pretty common with any webapp. I don’t know why they claim PHP is special here. It’s a very common way to handle requests and you can do that with lots of languages and frameworks. More CPUs = more threads = more scaling. Throw more servers into the mix and you’re now “infinitely scaling” right? Well… No. Because I/O.

            Webapps tend to be I/O bound rather than CPU bound. So asynchronous I/O leads to much better performance generally with fewer resources. Because no matter how many threads and servers you put in the app tier you’re going to be limited by the disks on your database at some point.

            • sugar_in_your_tea@sh.itjust.works
              link
              fedilink
              English
              arrow-up
              5
              ·
              edit-2
              2 days ago

              Exactly. The model PHP uses is explicitly worse than pretty much anything else. OpenCloud is a fork of ownCloud OCIS, which is written in Go, which scales better than most things since it uses cheap forms of concurrency, way cheaper than threads at scale. Go doesn’t use asyncio directly, it kind of fakes it with goroutines, which are incredibly cheap “threads” and the runtime abstracts away the blocking IO.