folks, hi, thank you for the input on the IRC channel yesterday. i didn't see an ibot logger so i thought i'd write a summary here of what i managed to establish, for the archives so that anyone who may be interested can refer to this in future. i will cross-reference it for the benefit of the pyjamas community for example.
i am so sorry, i forgot who you were, i have closed the irc window, but didn't get a chance to ask your name, but: * thank you to the person i spoke with yesterday, who described the thoughts and plans of the netsurf team regarding DOM [until you were distracted by other conversations and were unable to answer] * the roadmap involves developing and completing libdom first * followed by adding in dynamic and automatic update (on-screen redraw after a libdom function is called) * _then_ things like language bindings can be added. * the language bindings themselves technically have been mulled over and as i understand it you have been thinking of implementing them in one of two ways: a) a code auto-generator which will generate a one-for-one function/property mapping from language X to DOM function/property X. b) a dynamic runtime "middleware" jobbie which uses a binary encoding (type library) to represent the DOM's functions/properties. * i mentioned the pros and cons of each of a) and b). a) will easily turn a 400k netsurf executable into a 5400k netsurf executable due to the overwhelming size of the HTML5 / DOM specification: 350 DOM objects, 2,000 functions within those objects and over 20,000 properties in those objects. b) will be slightly slower, requiring a runtime overhead to decode the "type library" but the code size will be massively reduced. (observation: potentially, the reduction in code size could well result in increased speed on slower CPUs especially embedded low-end processors with smaller or zero sized caches. bottom line: it's not clear-cut!) * i mentioned a few technologies which implement each of a) and b) a.i) webkit implements techique a) in.... abundance :) its compiler is written in perl. a significant amount of infrastructure has to surround the code with webkit's compiler generates: this code is *not* automated. it is entirely hand-written [about 7,000 to 15,000 lines of hand-written support code is required per language binding] a.ii) pythonwebkit provides a cleaner easier-to-understand compiler which does the same job as webkit's perl-based compiler. it still generates a file which i believe is somewhere around 50,000 lines, just the one file, maybe more, to cover the python-DOM bindings. the additional hand-crafted "support" code is *still* required. b.i) COM. it gets a bad rep, but it's just... staggeringly powerful. sufficiently powerful that people badly underestimate it - mostly because it was written and deployed by microsoft. after nearly 2 decades, someone has *finally* implemented COM for unix / linux - it's called tangramCOM. b.ii) XPCOM. xpcom was "inspired" by COM. it's almost the same... except they didn't understand why coclasses have to be implemented. the firefox team have got themselves into some rather awkward technical situations as a result of this very subtle lack of knowledge of the importance of having _really_ good middleware. b.iii) GObject with Introspection. this one is interesting, because it turns out that gobject-introspection now has *multiple* language support... including *two* separate javascript bindings! in other words if you were to adopt gobject as the netsurf middleware, should you choose this route, you'd *automatically* get javascript bindings... *for free*... as well as several other programming languages. this is why middleware is so powerful - as you no doubt, as free software programming experts, already know. but please bear with me: i am writing to a wider audience with the above, so for *their* benefit it has to be spelled out. anyway: each of the various techniques has their pros and cons: i would greatly appreciate hearing based on your technical expertise and knowledge, and working in the spirit of free software and following the principles so ingrained in the most respected Apache Software Foundation's Charter of "mutual respect for all contributions", your views on the above and also adding to my own knowledge by describing some alternative techniques which you may be aware of and i may not, ultimately for the benefit of free software advancement and not to the advancement of our own personal egos. btw i mention that last paragraph because i heard that someone was talking on IRC back-channels which caused a friend of mine to phone me up in extreme embarrassment that he had even mentioned netsurf to me. whoever you are, i do not know and i do not need to know - i apologise to both you and to my friend, that i caused you to believe it to be necessary to criticise me to other people. i operate on the basis that all are welcome to contribute to the advancement of free software, and on the assumption that because i personally welcome anyone being better informed than i about technical matters, that others will reciprocate and do the same for me - to correct anything that i got wrong, and to teach _me_. i can only apologise - deeply - for having somehow offended you in such a way that i do not fully comphrehend. in particular, i deeply apologise for having triggered some hatred within you, the expression of which, to your peers in public forums, will only harm yourself as well as free software. may i respectfully therefore suggest - without prejudice and without "ORDERING" or "TELLING" or "COMMANDING" you in any way shape form or manner - that you CONSIDER, that if you have a problem for goodness sake _talk_ to me. talk to _me_. i'm not going to bite you, and i'm certainly not going to go "bad-mouthing" you to anyone! no i do *not* go bad-mouthing people. look at what i wrote, if you still have access to it. i said (paraphrasing) "the code in webkit *i* found caused *me* to shudder in distress and horror at having to work with it." i didn't say "the webkit developers are personally shit-arse-holes because they wrote shit", did i? i said also that i noticed that their decisions caused them a large maintenance burden. that's not personal criticism: that's an observation. one which i would very much like to share with you so that not only *you* go forwards with this project with your eyes fully open but that you are *SEEN* to be going forwards with this project with your eyes fully open. whoever you are, you have a responsibility and a duty to yourself and to your users, to remain "open" as in "an open project". getting onto IRC channels and giving running commentaries of how someone who would very much like to aid, assist and advance the netsurf project is, according to you "trying to tell everyone how shit everbody else's project is" ... that doesn't do any of us any favours, does it? it just reflects extremely badly on *you*... and embarrasses the hell out of my friend, to whom i'm now going to have to apologise to, deeply, for having written this without consulting him. i'll have to explain to him that i felt it was more important to deal with you, publicly, and to give you an opportunity to clear the air should you so choose. but... that's my problem to deal with, not yours. *my* choice. you have no responsibility for my decisions and you do not need to feel obligated to apologise for, or to feel in any way that you have embarrassed our mutual friend as a result of *my* decisions or actions, ok? ok, enough - it's hellishly late here, i have to stop, get some sleep. but please, for goodness sake think about what i've written. the thoughts weren't in *my* head - they were in yours, weren't they? l.
