Event-driven server

Please tone it down a bit. Even if you are frustrated, noone here has outright said that this is not something that is open for discussion. If that was the case, @Daphne had not offered to have a 1:1 talk to discuss this, which is pretty much the opposite of what you wrote above.

Please, ditch the frustration for now, coordinate with @Daphne to have a serious discussion where you can much easier explain your thoughts about how this could be done.

@Daphne Can this be done? I presume the offer still stands? Someone just has to coordinate it so that the right parties are involved (e.g. someone who knows the core a bit).

Itā€™s obvious that everyone just needs to chill, have a nice chat and take it from there :slight_smile:

5 Likes

Okay so. Hereā€™s the thing (final reply),

  1. Everything aside, Iā€™m sorry if Iā€™ve been unpleasant (I know I have). It is very frustrating when I try to offer my help and it gets ignored with no good explanation (whatever explanation I have received is not good enough for me; I admit thatā€™s subjective). Letā€™s remember that I had literally nothing to gain here except some satisfaction, at the cost of potentially hundreds of working hours. Nextcloud on the other hand had a lot of potential to make $$$ with a better and improved product. I wasnā€™t going to get any of that. I understand that this is true for contributing to FOSS in general, but thereā€™s a difference in expectations when trying to contribute to any open source project maintained by someone during their vacation vs contributing to an open core product that a company actually sells for profit. With this background, it is frustrating to get no real feedback or discussion. I admit I couldā€™ve handled it more tactfully, but after all Iā€™m human and Iā€™ve a day job to do before coming to this.
  2. @christianlupus thank you for your post. I do agree with most things. On the topic of how much I expect this to help: from my preliminary profiling (I could be very wrong), almost ~75% of a request time is spent in bootstrapping (10ms is just for the core app bootstrapping; thereā€™s a lot more). Very little time is needed for the actual controller logic. This figure goes up if you can include booting the apps, parts of which are also redundant on each request. This figure is variable, e.g. if all the controller is doing is serve a favicon, then >90% time is bootstrapping, since basically nothing happens after that. That said, the user is not going to notice much directly, since it might bring response times down from, say, 50ms to 5ms at best. But the admin is going to notice this a lot in terms of scalability, since each request needs a much smaller CPU time. So indirectly, the user may have noticeable improvements in performance when there are multiple users, and the cost of running everything goes down by a lot.
  3. Keeping aside performance, my personal opinion (happy to agree to disagree) is that PHPā€™s model of starting each request with a clean slate is both outdated and wrong. Think of it this way ā€“ if this was the ā€œcorrectā€ model of execution, we wouldnā€™t have newer frameworks / languages like node / golang in the first place, that everyone almost universally agrees are ā€œbetterā€ if youā€™re building a new application. The fact that these exist and are widely used (and growing daily) indicates something is wrong with the classic request model. So the question in my view is more about applicability to a specific application ā€“ and I believe these improvements are very applicable to Nextcloud.
    Tl;dr itā€™s as much about correctness as about performance. Of course, Iā€™m an academician; the corporates might not care about correctness as much as me, which I fully understand.
  4. Iā€™ve been discussing and @Daphne has been helpful. Unfortunately, it hasnā€™t really led anywhere, and even after all this, not a single engineer from Nextcloud has come up to discuss this and be willing to listen. Further, from the discussions I had, it looks like the burden is on me to prove that this is worth the time to discuss, with some red tape like making a proposal and coordination and timelines etc etc. Let me say this out loud: I donā€™t need this to happen. Nextcloud will definitely benefit if it happens. I really shoudnā€™t need to do all this, definitely not to just have a discussion. Especially considering the points in #1. Seriously, I understand people are very busy. So am I. I donā€™t have time to pursue someone so that they let me do volunteer work that theyā€™re going to monetarily benefit from. There are others I need to pursue where my time would be better spent, for instance the insurance company of the lady that crashed into my car last week.
  5. Another reason I am not going to make any proposals is because Iā€™m not going to argue with someone who has made up their mind that something isnā€™t a good idea. Itā€™s a fruitless discussion and wastes everyoneā€™s time. Fact remains, the NC engineers that communicated with @Daphne have a strong opinion that this is either undoable or not worth the effort. If there was any wiggle room in their opinion, I expect to have heard about it by now. So Iā€™ll say itā€™s okay ā€“ we can agree to disagree, and I disagree on both counts. I just want to point out that the idea was dismissed without fully hearing it out first.
  6. Itā€™s fine. Letā€™s stop wasting everyoneā€™s time right now. Clearly thereā€™s a lot of disagreement here and I donā€™t see a resolution anywhere in sight. By now, all the motivation I had for improving Nextcloud has largely evaporated. I donā€™t want to contribute to a project that doesnā€™t take my opinion or time seriously enough to warrant some response / discussion from the engineers despite pursuing this point for long enough. And asking me to make proposals first doesnā€™t cut it.

If someone disagrees with something I said, Iā€™m happy to agree to disagree. Letā€™s end the conversation here. Iā€™ll update the thread if I ever make any progress on this.

3 Likes

Hello,

Sorry I did not answer before, but I was not familiar with the subject at the time.

Iā€™ve been looking a bit into performance and booting time lately and I see what you mean about this problem, and what good it would do to keep the state alive in-between requests.
The problem here is that the booting process is depending a lot on which user is in the session. This will change which apps are enabled, which workflows are active, and so on and so on.
So Iā€™m not even sure this would be doable without rewriting too many stuff.

A nice in-between would be to be able to cache the booted state for a few mins for a user, to at least be able to reuse-it for requests triggered by the same page load. But Iā€™ve never seen this kind of solution.

2 Likes