Hi I would need an answer, to my original question, now that I have picked up the work on MyFaces again. Are we going to completely replace the scripts or at allow some kind of dual mode where users can switch between old and new for some period of time?
Werner Am Do., 22. Sept. 2022 um 12:50 Uhr schrieb Werner Punz < [email protected]>: > Re Myfaces 2.3, not sure, the idea of the new codebase was to get a > cleaner code and get rid of all this dead old browser legacy support > which messed up the readability with tons of fallbacks for everything we > did) > > So that we can have a cleaner more maintainable codebase to move forward > onwards. > If you want to integrate it into a stable version then I would make a fork > or switch the codebases via context param. > Neither really is a solution. I would recommend for Tobago to leave it in > for now until the baseline is higher than 2.3! > It is the same codebase in the long run anyway. > > > Am Do., 22. Sept. 2022 um 12:46 Uhr schrieb Werner Punz < > [email protected]>: > >> Hi sorry for being silent for so long. I was on vacation last week as >> announced but I have picked up work again. >> Following I was basically spending this week, to fix a ton of smaller >> issues I ran along in mona-dish and the typescript codebase. >> Also I did some code improvement in the jsf.js codebase to get rid of >> some legacy code which is covered in a better way now regarding >> file inputs. >> Also the github project which is my main workbench for the scripts now >> integrates the streams and query lib on source level so that the code maps >> are down to the last and only dependency reachable as well. (see >> https://github.com/werpu/jsfs_js_ts for the latest codebase before it >> makes it into myfaces) >> >> I will now pick up the integration into myfaces again. >> Question is: >> Do we still want to have the old scripts reachable or not? >> If not we can drop a ton of custom code in the resource loaders, because >> all the compressed, uncompressed single file stuff is not needed anymore. >> The new implementation can provide sourcemaps, so the users can always >> reach the sources for debugging. >> A simple development/production flag should be enough to serve the files >> mangled or unmangled, subsequent source map requests done by the browser >> can do the rest. >> >> Also one advantage of the new codebase is that files with gzip and brotli >> compression are generated with the rest of the build and the server can >> serve those as well >> reducing bandwidth. >> >> Downside is if we do not provide the old scripts then some legacy >> browsers won't have a working impl anymore. >> >> Werner >> >> >> >> Am Fr., 16. Sept. 2022 um 10:39 Uhr schrieb Udo Schnurpfeil < >> [email protected]>: >> >>> Tobago 4 works with the jsf.js from MyFaces only with several >>> modifications. >>> >>> Tobago 5 was migrated to use Werner's Typescript implementation. It >>> works without patches 😁. This version was never released with MyFaces, and >>> you don't want, because it's stable (I think that is fine). But the >>> consequence is: there is no MyFaces 2.3 based application server working >>> with Tobago when we remove the jsf.js from Tobago. >>> Am 16.09.22 um 10:21 schrieb Thomas Andraschko: >>> >>> Isnt that maybe outdated? >>> the last fixes on our JS was in 2018: >>> https://github.com/apache/myfaces/commits/2.3.x/api/src/main/javascript/META-INF/resources/myfaces >>> >>> Am Fr., 16. Sept. 2022 um 10:18 Uhr schrieb Udo Schnurpfeil < >>> [email protected]>: >>> >>>> The reason is, that problems in the jsf.js often breaks Tobago to be >>>> unusable, and some application servers tent to need much time to update >>>> there external libs (e.g. MyFaces) and some users of Tobago need much time >>>> to update there application servers. I know the solution is not pretty, but >>>> it fixes real world problems. I've spent too much time in the last years to >>>> solve this category of problems, I'm exhausted. >>>> Am 16.09.22 um 09:57 schrieb Thomas Andraschko: >>>> >>>> I always wonder why you need it in tobago? doesnt you just reuse jsf.js >>>> from the impl? >>>> >>>> If we really really really need it, we could create something like a >>>> myfaces-js repo and create a master and 2.3 branch there + release it in >>>> NPM. >>>> >>>> Otherwise i would just like to have the source in the myfaces-core >>>> master branch and compile it. Multiple repos always makes everything harder >>>> to release. >>>> >>>> Am Fr., 16. Sept. 2022 um 09:30 Uhr schrieb Udo Schnurpfeil < >>>> [email protected]>: >>>> >>>>> It would be nice to have a branch or project where the JSF 2.3 >>>>> compatible version can live, because we may need it for fixes. >>>>> >>>>> Maybe in Werners own project (but its not real community), or in the >>>>> Tobago project. The disadvantage is, that fixes for both versions affects >>>>> sources in different projects. It's a bit more error-prone and more >>>>> work... >>>>> >>>>> Maybe we put the built in the branch of MyFaces 2.3 or 3 but do not >>>>> use it there, only releasing to NPM? This may a bit more transparent. >>>>> >>>>> Regards >>>>> >>>>> Udo >>>>> Am 15.09.22 um 17:26 schrieb Thomas Andraschko: >>>>> >>>>> I would only add it in 4.0 (Jakarta), all other branches are stable >>>>> >>>>> Udo Schnurpfeil <[email protected]> schrieb am Do., 15. Sept. 2022, >>>>> 16:43: >>>>> >>>>>> Hi, >>>>>> >>>>>> in which versions of MyFaces this will be integrated? I think there >>>>>> is a difference because of the jakarta namespace for the new version. >>>>>> >>>>>> In Tobago we integrate the generated js file directly in the npm >>>>>> build process of Tobago. The JS will be provieded by Tobago, NOT from the >>>>>> used JSF implemantation. The reason is old (but might be right today), >>>>>> some >>>>>> application servers bring old versions of JSF with them, and the JS was >>>>>> buggy. >>>>>> >>>>>> My question: >>>>>> >>>>>> Will it be possible in the future to get the JS via npm in both >>>>>> versions (namespace javax and namespace jakarta). >>>>>> >>>>>> Regards, >>>>>> >>>>>> Udo >>>>>> Am 09.09.22 um 19:19 schrieb Werner Punz: >>>>>> >>>>>> Hi I think the build speed does not make a huge difference. >>>>>> But I think the best option would be to simply make the build >>>>>> optional and for normal builds just use the js files, which of course >>>>>> can be comitted together with the ts files. >>>>>> Theoretically we do not need to rebuild every time, a simple copy of >>>>>> the javascripts >>>>>> to the target directory is enough. But a working build must be in >>>>>> there for verification. >>>>>> >>>>>> Timetable, second issue. I thought I could wrap things up this week, >>>>>> but given I am on vacation next week, it will be probably the week after. >>>>>> I have a pretty well working myfaces setup already which however atm >>>>>> still runs the build every time, but we can move to "optional". >>>>>> >>>>>> Atm 3 of my external integration tests fail on extreme corner cases >>>>>> atm, I have to check why. >>>>>> So I will need another 2-3 days the week after next to wrap things >>>>>> up, I guess. >>>>>> >>>>>> Werner >>>>>> >>>>>> >>>>>> Am Fr., 9. Sept. 2022 um 12:44 Uhr schrieb Udo Schnurpfeil < >>>>>> [email protected]>: >>>>>> >>>>>>> Hi Werner, >>>>>>> >>>>>>> good to hear from you. >>>>>>> >>>>>>> About the build process: All the JavaScript code of Tobago was >>>>>>> migrated to TypeScript and we use the maven-frontend-plugin to compile >>>>>>> it >>>>>>> to JavaScript. >>>>>>> >>>>>>> Because of the problems you have indicated, we build the TS -> JS >>>>>>> with Maven profile -Pfrontend to activate the NPM. >>>>>>> >>>>>>> We commit the generated code as resources in the project. So, we can >>>>>>> build with or without regenerating the JavaScript code. >>>>>>> >>>>>>> advantage: >>>>>>> >>>>>>> - normal build is faster >>>>>>> - independent from npm infrastructure >>>>>>> >>>>>>> disadvantage: >>>>>>> >>>>>>> - generated code under source control >>>>>>> - explicit re-generation is needed, sometimes >>>>>>> >>>>>>> What is the best option for MyFaces core? >>>>>>> >>>>>>> Regards, >>>>>>> >>>>>>> Udo >>>>>>> >>>>>>> >>>>>>> Am 08.09.22 um 15:55 schrieb Werner Punz: >>>>>>> >>>>>>> Sorry for my silence the last few days. >>>>>>> >>>>>>> Given my long "hiatus" it took me a little bit to get everything >>>>>>> together again. >>>>>>> Following, I think i found a solution I think we can live with >>>>>>> >>>>>>> a) The main hosting for now of the scripts and the monadish base lib >>>>>>> still is on github, but >>>>>>> b) I basically added s small node project to the api, which pulls >>>>>>> the npm files from node and extracts the sources and tests and pushes >>>>>>> them >>>>>>> into the myfaces source structure, that way we can host the sources on >>>>>>> the >>>>>>> myfaces side >>>>>>> c) You can run then a full build via node and also can run all the >>>>>>> tests on both projects >>>>>>> d) The final result is the jsf.js and the jsf-development.js along >>>>>>> with the corresponding map files and a gz and br compressed version of >>>>>>> the >>>>>>> files (for browsers which reques compressed files) >>>>>>> c and d) will be triggered by the maven frontend plugin which is a >>>>>>> shim over node (which also does a local download and install of node and >>>>>>> the subproject dependencies) >>>>>>> >>>>>>> The end result of the build process is the files at the required >>>>>>> location and given we now have mapping files we can drop the special >>>>>>> builds, so the >>>>>>> resource loader will become smaller. >>>>>>> The downside is, we now have node as intermediate step for building >>>>>>> the files and some node dependencies (jsf_ts for loading the sources, >>>>>>> but >>>>>>> that is not >>>>>>> needed given we host them ourselfs, and a ton of dependencies for >>>>>>> the javascript based unit tests, around mocha) >>>>>>> >>>>>>> Unfortunately we cannot skip the entire node embedded into maven >>>>>>> part.given we want to start from typescript level and want to have unit >>>>>>> tests on top of it. >>>>>>> The easier way of course would be just to use the npm packages and >>>>>>> the final js files, but we want to have the full build cycle. >>>>>>> >>>>>>> So there are some dependencies for the build which are outside of >>>>>>> maven and apache. But normally organisations have an npm proxy >>>>>>> somewhere, >>>>>>> so that in case the node infrastructure goes down the build systems >>>>>>> survive. Does apache have something like this? Myfaces probably is not >>>>>>> the >>>>>>> only Apache project >>>>>>> relying on node/npm infrastructure for their builds. >>>>>>> >>>>>>> >>>>>>> Werner >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> Am Di., 6. Sept. 2022 um 14:06 Uhr schrieb Werner Punz < >>>>>>> [email protected]>: >>>>>>> >>>>>>>> Yes i was just worried to drag npm into the build process, but if >>>>>>>> everyone is fine going with the frontend-plugin i am perfectly fine >>>>>>>> with >>>>>>>> it, as well. >>>>>>>> >>>>>>>> This is the best way to combine npm and maven builds atm anyway, >>>>>>>> because it simply relegates whatever npm has to do to npm >>>>>>>> and maven takes care of the rest. You even can set local proxies >>>>>>>> and have full control over the npm and node versions that way via >>>>>>>> maven. >>>>>>>> >>>>>>>> Werner >>>>>>>> >>>>>>>> >>>>>>>> Am Di., 6. Sept. 2022 um 14:03 Uhr schrieb Melloware < >>>>>>>> [email protected]>: >>>>>>>> >>>>>>>>> Absolutely this is the way to go. It will download node run your >>>>>>>>> package.json script to compile the TypeScript code and put it in the >>>>>>>>> right >>>>>>>>> location all as part of the Maven Build. >>>>>>>>> On 9/6/2022 5:46 AM, Werner Punz wrote: >>>>>>>>> >>>>>>>>> Just checked the code, it uses basically the frontend maven >>>>>>>>> plugin, >>>>>>>>> which is a maven shim over node: >>>>>>>>> <plugin> >>>>>>>>> >>>>>>>>> <groupId>com.github.eirslett</groupId> >>>>>>>>> >>>>>>>>> <artifactId>frontend-maven-plugin</artifactId> >>>>>>>>> >>>>>>>>> <version>1.12.1</version> >>>>>>>>> >>>>>>>>> <configuration> >>>>>>>>> >>>>>>>>> <nodeVersion>v16.13.1</nodeVersion> >>>>>>>>> >>>>>>>>> <npmVersion>8.1.2</npmVersion> >>>>>>>>> >>>>>>>>> <installDirectory>${main.basedir}/target/node</installDirectory> >>>>>>>>> >>>>>>>>> </configuration> >>>>>>>>> >>>>>>>>> </plugin> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> I can go this route, this would be the least painful one because >>>>>>>>> it basically just downloads node and executes the node build as is, >>>>>>>>> if this >>>>>>>>> is ok with the apache build process. >>>>>>>>> >>>>>>>>> >>>>>>>>> Werner >>>>>>>>> >>>>>>>>> >>>>>>>>> Am Di., 6. Sept. 2022 um 11:08 Uhr schrieb Werner Punz < >>>>>>>>> [email protected]>: >>>>>>>>> >>>>>>>>>> Sounds great I will have a look. >>>>>>>>>> >>>>>>>>>> Thanks for the hint. >>>>>>>>>> >>>>>>>>>> Werner >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Am Di., 6. Sept. 2022 um 11:05 Uhr schrieb Melloware Inc < >>>>>>>>>> [email protected]>: >>>>>>>>>> >>>>>>>>>>> Werner, >>>>>>>>>>> >>>>>>>>>>> I can get the code building in maven even if it’s in >>>>>>>>>>> Typescript. We do something similar in PF extensions. >>>>>>>>>>> >>>>>>>>>>> Melloware >>>>>>>>>>> @melloware on GitHub >>>>>>>>>>> >>>>>>>>>>> On Sep 6, 2022, at 4:52 AM, Werner Punz <[email protected]> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Hi there is code reduction going on in the build step anyway, >>>>>>>>>>> but I also can move the parts from mona-dish over (which i had in >>>>>>>>>>> the past) >>>>>>>>>>> Problem is that we still will be npm dependent for testing libs >>>>>>>>>>> etc... so i cannot get npm entirely out of the loop for testing >>>>>>>>>>> purposes >>>>>>>>>>> shim libraries for testing etc... >>>>>>>>>>> That means if we move the ts code over we have to introduce an >>>>>>>>>>> npm build step. >>>>>>>>>>> >>>>>>>>>>> I will work on something here and then we can all have a look >>>>>>>>>>> whether this should be the way to go. >>>>>>>>>>> >>>>>>>>>>> Werner >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Am Di., 6. Sept. 2022 um 10:35 Uhr schrieb Thomas Andraschko < >>>>>>>>>>> [email protected]>: >>>>>>>>>>> >>>>>>>>>>>> Hi Werner, >>>>>>>>>>>> >>>>>>>>>>>> great to hear that you are back and hope you are fine again :) >>>>>>>>>>>> >>>>>>>>>>>> IMO the reimplementation is great and improves the >>>>>>>>>>>> maintainability a lot for the future. >>>>>>>>>>>> I would personally only push it in the master (4.0 / >>>>>>>>>>>> jakarta.*), all other branches are "stable" and we should not >>>>>>>>>>>> touch them. >>>>>>>>>>>> >>>>>>>>>>>> Therefore we are totally fine to only support IE11+. >>>>>>>>>>>> So it would be great if you can also remove some older IE hacks >>>>>>>>>>>> like >>>>>>>>>>>> https://github.com/werpu/jsfs_js_ts/blob/master/src/main/typescript/impl/xhrCore/RequestDataResolver.ts#L113 >>>>>>>>>>>> >>>>>>>>>>>> Also it would be great if you can further improve readability. >>>>>>>>>>>> >>>>>>>>>>>> For me its absolutely mandatory that all code is directly in >>>>>>>>>>>> MyFaces and compiles with Maven somehow. >>>>>>>>>>>> So it would also be great if you could only use a minimal of >>>>>>>>>>>> your TS mona-dish lib, so we are as clean and minimalistic as >>>>>>>>>>>> possible. >>>>>>>>>>>> >>>>>>>>>>>> Best regards, >>>>>>>>>>>> Thomas >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Am Di., 6. Sept. 2022 um 10:21 Uhr schrieb Werner Punz < >>>>>>>>>>>> [email protected]>: >>>>>>>>>>>> >>>>>>>>>>>>> I will add a short summary on what we have: >>>>>>>>>>>>> >>>>>>>>>>>>> The project atm is hosted on github and basically 100% my code >>>>>>>>>>>>> (although split into 2 projects) >>>>>>>>>>>>> it is 100% implemented in typescript and fortified with a ton >>>>>>>>>>>>> of unit tests. I have yet given i did not work on it for quite >>>>>>>>>>>>> some time, >>>>>>>>>>>>> check the coverage percentage, but it is high. >>>>>>>>>>>>> >>>>>>>>>>>>> Downside is, I cut off a ton of old browser support. I think >>>>>>>>>>>>> IE11 is still supported but nothing below. >>>>>>>>>>>>> The code is way more readable although some parts still can be >>>>>>>>>>>>> improved. Maintainability was Prio #1 something the old code >>>>>>>>>>>>> which had to >>>>>>>>>>>>> support a ton of legacy browsers did not have. >>>>>>>>>>>>> >>>>>>>>>>>>> Downside is, it is 100% typescript, so we need to merge that >>>>>>>>>>>>> into the myfaces base one way or the other but there is no way to >>>>>>>>>>>>> avoid an >>>>>>>>>>>>> npm build step if we drag in the package via npm or on typescript >>>>>>>>>>>>> level. >>>>>>>>>>>>> Another option simply would be to fetch the compiled sources >>>>>>>>>>>>> but that leaves out the connection to the original sources >>>>>>>>>>>>> entirely (except >>>>>>>>>>>>> for the sourcemaps), which I would not prefer. >>>>>>>>>>>>> >>>>>>>>>>>>> The implementation level is atm jsf 2.x i have to check >>>>>>>>>>>>> whether we need siginficant extensions for 3 when I stalled my >>>>>>>>>>>>> work the >>>>>>>>>>>>> status was the js parts did not change. >>>>>>>>>>>>> (one thing I have on my plan for the next few days) >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Werner >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Am Di., 6. Sept. 2022 um 10:13 Uhr schrieb Werner Punz < >>>>>>>>>>>>> [email protected]>: >>>>>>>>>>>>> >>>>>>>>>>>>>> Hi Sorry for my long absence. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thing is I had severe health problems last year with a disc >>>>>>>>>>>>>> prolapse becoming acute, and had a ton of private stuff on my >>>>>>>>>>>>>> back this >>>>>>>>>>>>>> year on top of my job. >>>>>>>>>>>>>> However I have now picked up the work on the JSF,js >>>>>>>>>>>>>> Typescript again. >>>>>>>>>>>>>> I have yet to check the latest specs of JSF given i was out >>>>>>>>>>>>>> of the loop for a year if anything significant needs to be added. >>>>>>>>>>>>>> The Scripts themselve work and have been in usage in Tobago >>>>>>>>>>>>>> for quite a while. >>>>>>>>>>>>>> I am just asking whether we want them to add to myfaces or >>>>>>>>>>>>>> not. If yes then I would start the work to add them as a build >>>>>>>>>>>>>> option. >>>>>>>>>>>>>> >>>>>>>>>>>>>> But I want the community decide on this. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Lets start a discussion. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Werner >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>
