[[!meta title="Developer Weekend (September 2017)"]] [[!meta author="Daniel Silverstone"]] [[!meta date="2017-09-00 17:30:00"]] [[!toc]] Attendees ========= * Michael Drake * Vincent Sanders * Daniel Silverstone Apologies ========= * John-Mark Bell * Chris Young Topics ====== * Logging merge for main NetSurf * Daniel added verbose and normal logging options * Vince added documentation for nslog in netsurf * Vince fixed a whole pile of horrible compile problems with nslog on atari etc. * Daniel fixed the test suite to work with the new logging options * Triage of bug tracker to generate further topics for Saturday * Daniel fixed [`#2549`](http://bugs.netsurf-browser.org/mantis/view.php?id=2549) * Daniel reviewed [`#2537`](http://bugs.netsurf-browser.org/mantis/view.php?id=2537) and decided that it wasn't worth trying to fix now. It's reported against 3.6, the reported issue is fixed, but the underlying inability to interact with buttons is not. * Daniel and vince reviewed [`#2555`](http://bugs.netsurf-browser.org/mantis/view.php?id=2555) and decided François had already fixed it. * Daniel reviewed [`#2544`](http://bugs.netsurf-browser.org/mantis/view.php?id=2544) and decided it had always worked, closed it can't reproduce. * Daniel tried to reproduce [`#2532`](http://bugs.netsurf-browser.org/mantis/view.php?id=2532) but failed, so asked the submitter to try again. * Daniel looked at: * [`#2464`](http://bugs.netsurf-browser.org/mantis/view.php?id=2464) * [`#2482`](http://bugs.netsurf-browser.org/mantis/view.php?id=2482) * [`#2417`](http://bugs.netsurf-browser.org/mantis/view.php?id=2417) and closed them unable-to-reproduce. * Daniel reviewed [`#526`](http://bugs.netsurf-browser.org/mantis/view.php?id=526) and assigned it to Michael * Vince reviewed [`#2550`](http://bugs.netsurf-browser.org/mantis/view.php?id=2550) and closed it unable-to-reproduce. * Daniel and Vince worked through the following, closing most of them... * [`#1885`](http://bugs.netsurf-browser.org/mantis/view.php?id=1885) * [`#1886`](http://bugs.netsurf-browser.org/mantis/view.php?id=1886) * [`#1889`](http://bugs.netsurf-browser.org/mantis/view.php?id=1889) * [`#420`](http://bugs.netsurf-browser.org/mantis/view.php?id=420) * [`#434`](http://bugs.netsurf-browser.org/mantis/view.php?id=434) * [`#518`](http://bugs.netsurf-browser.org/mantis/view.php?id=518) (Actually we resolved this one) * [`#469`](http://bugs.netsurf-browser.org/mantis/view.php?id=469) (Actually we resolved this one) * [`#520`](http://bugs.netsurf-browser.org/mantis/view.php?id=520) (Actually we resolved this one) * [`#522`](http://bugs.netsurf-browser.org/mantis/view.php?id=522) * [`#505`](http://bugs.netsurf-browser.org/mantis/view.php?id=505) * [`#1916`](http://bugs.netsurf-browser.org/mantis/view.php?id=1916) (We won'tfix'd this) * [`#1907`](http://bugs.netsurf-browser.org/mantis/view.php?id=1907) (We trolled jmb) * [`#1879`](http://bugs.netsurf-browser.org/mantis/view.php?id=1879) (Resolved) * [`#485`](http://bugs.netsurf-browser.org/mantis/view.php?id=485) * What frontends do we demote? * See below * Administrivia - Phoenix's disks are tired (even SMART said so) * We'd like to know where the society bank account stands, for general resources. * We'd like to buy a pair of WD Gold 1TB drives (rough cost 140 UKP total) so that Phoenix isn't running on pre-fail age drives. * Decision was: Michael, Vince, and Daniel will share the cost if the society lacks the funds. Vince will buy drives and begin the replacement process. Ideally ASAP. * Discussion around forms, removing gadgets, etc. * See below * Auto-scroll to last position during history navigation * See below * The "What's Next?" of Javascript * URLdb/Cookies * Breaking changes and 4.x Frontends ========= Amiga ----- Chris Young still maintaining it. Do we want to add OS3 to the CI? > Keep '1st class' Atari ----- No maintainer, toolchain is awkward, blobby, unpleasant for CI. Needs a scrub and refactor. We're not sure our builds are valid for Coldfire. > Demote '2nd class' (no CI builds) after 3.7 BeOS ---- Intermittent maintenance. Haiku builder is a pain in the arse, is the only blocker for Java 8. > Keep `1st class` for now, consult with Pulkomandy and mmu_man about JDK-8 Cocoa ----- Currently 2nd class, Libraries only. Sven came back, but made a messy branch which was too hard to review/merge. Then he vanished once more. Is also a JDK 8 limiting blocker, as it is 2nd class, we'd just drop from CI entirely if it was the only blocker. > Keep `2nd class` for now. Framebuffer ----------- Currently 1st class, boring, needs keyboard shortcuts etc. Hotlist support, blahblahblah but frankly "just works™" for the most part (Raw linux framebuffer doesn't work, but that's `libnsfb` really) > Keep `1st class` for now. GTK --- Currently 1st class, basically works, lacks keyboard shortcuts and polish in general. > Keep `1st class` for now. Monkey ------ Currently 1st class, doesn't tend to cause problems, needs further work for a test driver etc. No proper maintainer right now. > Keep `1st class` for now. RISC OS ------- No maintainer, none of the core devs actually understand it any more, it's a pain in the arse. Sadly most of our feedback comes from RISC OS users. For now we do a best-effort on keeping it first class. > Keep `1st class` for now. Windows ------- Minimally usable, but there are problems with XP (though do we care?) some issues around certificate bundles, storing of userdata, etc. Needs better configuration, translations, etc. > Keep `1st class` for now. Forms and gadgets ================= The issues as we see them are that basically it's impossible to make small fixes because whenever something is changed, it goes horribly wrong somewhere else. Usually manifesting in double-frees or similar given the particularly baroque ownership semantics (or lack thereof). Rather than hacking it all out and starting from scratch, we propose: 1. Making sure the gadgets update the DOM * Gadget types: `HIDDEN`, `TEXTBOX`, `RADIO`, `CHECKBOX`, `SELECT`, `TEXTAREA`, `IMAGE`, `PASSWORD`, `SUBMIT`, `RESET`, `FILE`, `BUTTON` * It's likely `HIDDEN` can go away as soon as 2 is done. * Validate that all these input kinds are supported in the libdom binding * **TODO** Need to work out how to handle the reset event 2. Making the form submission read from the DOM * Turns out Daniel wrote that in 2014. Oops. Nothing to do here. 3. Make the DOM trigger the submission (may need onclick or other event stuff) * **TODO** First up read and implement the form action, method, etc attributes onto the input element etc. This may need libdom tweaks for the attributes and the novalidate stuff. * **TODO** Rework the libdom submit stuff to use an internal event name because the `submit` event is for non-`form.submit()` stuff: * **TODO** Now determine how to implement the above bits neatly so that we trigger submission properly. 4. Make any reader of the gadgets use the DOM 5. Work out how to remove more of this... History navigation scroll ========================= Daniel suggests: 1. Update `struct history_entry` to contain a `last_offset` as a float which is the proportion of the page scrolled (initialised to zero during `browser_window_history_add` 2. On navigation, if current is not NULL, store the `last_offset` into it (note in `browser_window_navigate`) 3. On page completion, if the current history entry's `last_offset` is non-zero then jump to that scroll location. Since we have fragment handling already (and navigating to a fragment will mean that the `last_offset` is zero) we will continue to function with fragments. Next time ========= We have chosen the next developer weekend to be . It shall be at