From 15cdd4abc5068576406f6566e3d3c1666a2dc5c1 Mon Sep 17 00:00:00 2001 From: Daniel Silverstone Date: Sun, 10 Sep 2017 15:59:17 +0100 Subject: More notes --- developer-weekend/sep-2017.mdwn | 82 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 79 insertions(+), 3 deletions(-) (limited to 'developer-weekend') diff --git a/developer-weekend/sep-2017.mdwn b/developer-weekend/sep-2017.mdwn index d59681f..f7305fa 100644 --- a/developer-weekend/sep-2017.mdwn +++ b/developer-weekend/sep-2017.mdwn @@ -74,6 +74,8 @@ Topics 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. + * We investigated cloud/hosted servers, sadly it's super-expensive compared + to some new disks for the free hosting we have. * 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. @@ -84,9 +86,83 @@ Topics * Auto-scroll to last position during history navigation * See below -* The "What's Next?" of Javascript -* URLdb/Cookies * Breaking changes and 4.x + * We have defined 'major' changes as anything large (e.g. new layout would + be major) + * Also 'major' changes include on-disk format changes. This means that + we'll forward-migrate where possible, but make no guarantees about going + backwards. Migration will be explicit and cancellable on startup. + * Content migrations must be such that if you run an old version, it won't + pick up old content by default. + +* What's left to go in to 3.7 + * Michael's searching for hotlist (treeview search) + * Vince's fixes for bitmaps in local history + * History navigation keeping scroll offsets + * Logging rework fallout + * General memory leak fixes where possible + * Aiming for 3.7 release handle crankage around Saturday September 23rd. + +* URLdb/Cookies + * URLdb is a mess. We knew that, there's nothing new there. + * We'd like to replace it, in its entirety, including on-disk formats. + * It should be split into a proper cookie jar, and a metadata store keyed + by URL. + * For the cookie jar, there is an RFC for cookie handling, lots of useful + information and links on + + * For the "URL database" we need to store arbitrary and changeable sets + of key-to-value mappings, some of which need to persist, some of which + are to be RAM-only. + * If we add scope to the 'key' such that we can have localstorage as a + scope then we can put local storage + into the same DB. + * Potential implementation strategy: + * Use a journalling approach (where the entries are + create/change and delete commands) storing the journal as the URLdb + replacement. + * The primary key into the DB is based on `nsurl`. + * We will reuse the `resource:` scheme for "internal" storage. + (e.g. session state, disk cache indices etc) + * The "value set" is a bag of triples. (`scope`, `key`, `value`) where + the scope is one of an enumeration (e.g. `localStorage` or `urldb`) + the key is a simple utf-8 string, and the value is an arbitrary set + of bytes (up to 4GB). (thus is stored as bytes+u32_length). + * We need the in-memory representation to support the following + efficiently: + 1. Counting of key,value pairs in a given scope for a given url + 2. Indexing a given (url,scope) pair by integer stably + 3. Indexing a given (url,scope) pair by key name + 4. Construction of journal entries (on changes) + 5. Completion of url strings + 6. Distinguish between content which can be persisted and that + which should not. + * The "clean" writeout should ensure that everything necessary for the + session restoration gets written out first, and then a marker is put down + which the readback code can use to kick off an async load of the rest of + the data. + * File format should be binary, and be robust (length, kind, checksum, + payload). + * Plausible things to layer on this generic storage are: + * URLdb replacement + * Session management + * LocalStorage + * Cookie jar + * File-based cache backend (indices) + * User options. + * Multiplicity (no single core) + * Proper testing for this. + +* The "What's Next?" of Javascript + * We do all the other stuff first, since it all has JS implications + * We need to update the IDLs and include more parts (e.g. LocalStorage, + CSSOM, etc) + * nsgenbind - should it do more automatic generation? If so how? + * Fix nsgenbind's `#file` `#line` stuff so that debugging works better. + * Fill out more of the bindings. + * So much of libdom needs enhancing too. + + Frontends ========= @@ -296,7 +372,7 @@ Bug fixes * Michael found and fixed a GTK core window issue where modifier keys were not getting passed with mouse clicks (release), only with press. This prevented Hotlist/Bookmarks entry editing. - +* Daniel fixed a set of leaks from the logging layer. Next time ========= -- cgit v1.2.3