Just to touch again on the timeline aspect -- estimation of large tasks is hard. Changing large-scale systems with many moving parts is particularly hard to estimate. It's hard enough when your team is the sole owner of the code that is running, but when 99% of the code that your system runs is code that is provided by the users of the system it's pretty much impossible.
Here's a concrete example: one of the things that we had to get done on the path to getting WebSockets working was to provide a full /proc
filesystem so that certain programs can run. We released that a month or so back, and switched everyone over to it. For most people, it had no effect -- most Python stuff runs just fine without /proc
. For a large minority of people, it was a big win -- they could now use Chrome to do web-scraping with Selenium. In the long term, it will make it possible to support WebSockets, so it's a good thing all round.
But for one person out of all of the tens of thousands, it broke their website completely. Without going into too much detail, especially as we're still nailing down the details, a library that they are using runs in a reduced-functionality mode without /proc
, but when it finds that that filesystem is present, it makes assumptions about what other things are available, and breaks. The library in question is a reasonably popular one, so we can't move forward without fixing that issue. So that adds on a week or so -- perhaps more.
I mention that example not because it's particularly interesting in and of itself, but because in any large-scale project like this, there are dozens of things like that happening all of the time. You can't predict them, which makes estimation pretty much worthless. Especially when, as @fjl mentioned earlier, the things like that which you discover while implementing something mean that you have to completely change direction.
Any estimate we gave would be no better than a wild guess, and we don't want to promise a timeline when something like the /proc
thing (but larger-scale) might completely derail it.