path: root/developer-weekend
diff options
authorDaniel Silverstone <>2017-09-10 15:59:17 +0100
committerDaniel Silverstone <>2017-09-10 15:59:17 +0100
commit15cdd4abc5068576406f6566e3d3c1666a2dc5c1 (patch)
tree73319b87879cf6c3f7cf1586b2be27ddb1979565 /developer-weekend
parent5e7d2d79625b8a968c06478a7cc6946d1daaaba0 (diff)
More notes
Diffstat (limited to 'developer-weekend')
1 files changed, 79 insertions, 3 deletions
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
* 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.
@@ -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