Dear team!
I want to apply for another request for funding. I know that it’s late, but let me explain the situation and why I think it would be important to slightly adjust our plan for spending our remaining budget this year.
Background
A few months ago we came to the conclusion that we desperately need static typing for the Neos UI. We did retrospective analysis and it seems about 50% of bugs that we’ve recently fixed would not have occurred had we have static typing in place. Yes, I was quite stunned too by that number.
So we dived with all our effort into this task. Our main hopes were to do most of the TypeScript integration during the previous sprint, and we have indeed achieved quite a lot, but unfortunately, we have accomplished way less than we initially hoped for. I rough guestimate for the remaining work would be at least 100h. If we would be doing it in our spare time, it would take us at least half a year to finish this. It would not be a problem in itself, but the thing is that we would be severely hindered in bugfixing during that time, as every single bugfix would cause conflicts (because we rename every file from .js to .ts). So we either need to put our whole energy and finish TS integration quickly, or discard the idea and roll back all TS code.
Participants
So yeah, I propose to fund this work, as I still believe TypeScript would be a really good investment for the stability of our UI.
The key person in the TypeScript integration is Robert Baruck, a Sandstormer. He has shown to have expert knowledge of TypeScript and has helped immensely to get the integration going during the sprint. He would be able to put 30h of work into this during December, and I believe his contribution would be extremely valuable.
I personally can put 60h of work in December, I have a full spare week of vacation to put into this.
Also if anyone who is deep into the project wants to give us a hand, that would be awesome too, but I know that most of those currently focus on the CR rewrite.
Guestimates
It’ really hard to come up with exact estimations for this task but the process in general looks like this: we traverse every package in the project, starting with the leaf packages (i.e. most dependency-free), and gradually moving towards the root ones, finishing with neos-ui itself.
If we don’t manage to complete the whole rewrite in those 90h, it would still be possible to freeze the rewrite at one of the intermediate steps, e.g. converting only the leaf packages, and leaving the higher level packages for later. But I hope we have a chance to finish it this December!
Here is LOC of all packages that need TS integration:
Name | LOC |
---|---|
Leaf packages | |
react-ui-components | 5206 |
neos-ui-redux-store | 2782 |
neos-ui-backend-connector | 984 |
utils-helpers | 110 |
neos-ui-contentrepository | 292 |
neos-ui-decorators | 53 |
neos-ui-extensibility | 534 |
neos-ui-i18n | 149 |
neos-ui-validators | 388 |
2nd order | |
neos-ui-containers | 133 |
neos-ui-guest-frame | 1221 |
neos-ui-editors | 4216 |
neos-ui-sagas | 1418 |
neos-ui-inspector | 73 |
neos-ui-views | 684 |
neos-ui-ckeditor5-bindings | 1621 |
last order | |
neos-ui | 7498 |
In practice that means that we’ve done about 5000 out of 27000LOC, but we should get to speed now, since the most time during the sprint was spent on figuring out the general approaches how to do things, and not actually doing them.
Finances
Sandstorm’s rate would be 100€/h. I’m ready to work for 50€/h. In total that would be 30 * 100 + 60 * 50 = 6000€.
So, how do we proceed with this? Is there still a chance for this late call?
Yours,
Dmitri