Git Product home page Git Product logo

confluence's People

Contributors

arobins avatar dependabot[bot] avatar foolip avatar hexcles avatar jpchase avatar jpmedley avatar mdittmer avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

confluence's Issues

Custom "API Confluence" page views causing performance problems

Creating custom views by interacting with confluence graphs (except for API Velocity, they are okay) triggers an expensive query and data rehashing procedure.

The real problem here is that the client-side part (data caching and rehashing) is done largely synchronously on the same worker that serves all other data queries. Hence, attempting to load a custom confluence view, then navigating to the catalog view yields an empty table. Returning to the confluence view yields no graphs (because they also query via the worker for their data).

Rename: browser -> release; vendor -> browser

Based on discussion of #57 we should rename classes and variables named browser* (except browserName and browserVersion) to release*, because we intend a particular release of a browser. Similarly, comments and variable names that refer to vendor actually refer to a particular browser (which has multiple releases).

@arobins does that sound right?

Consolidate metrics

Metrics each contain roughly the same data with different semantics/labels. Also, the set ops refactor exposed similar patterns in how metrics are computed. The metric computer classes should probably be consolidated into:

  • A single metric data class
  • A metric computation interface
  • Three metric computation implementations

Multiple vendor graph controls

It would be nice if the user could add/select vendors to include in time series graphs. This would eliminate the need for separate graphs to show "all browsers" and "each browser individually".

Add non-grace-period view on browser-specific APIs

@foolip says that in addition to the "1 year grace period" view of browser-specific APIs, he'd like to also see a picture of the debt we're creating the minute we are the first to ship a new API. I.e. at any given point in time, how many APIs exist for the one browser but no others.

I don't think this data will be particularly actionable (we don't consider shipping first to be problem in and of itself), but we should see a saw-tooth pattern that gives some indication of how we're creating temporary "stretch" in the band which later gets relaxed.

Give a better name to custom views

When custom views are created for drilling down in metrics graphs, their tabs are labeled "#VIEW0", "#VIEW1", etc. in the UI. Almost anything would be better than this.

window.Screen APIs are (mostly) missing

window.Screen.prototype should have a bunch of properties eg. availTop, but I don't see them in the raw data (Except for a couple Chrome releases under an interface named ))).

Add mobile browsers?

The mobile browsers should have mostly the same surface area as their desktop counterparts, but there are some interesting differences. We talked about adding Chrome Android, right? What are the trade offs here?

Add deep linking

All app states should be linkable. This means that we would have different URLs (possibly just a different anchor/fragment) for:

  • API catalog (and custom views spawned by analysis)
    • Page number
    • Expand all state
    • Search query
    • Currently selected browsers
  • Analysis
    • Currently selected view
    • State for custom views

This may prove to be too much state. Perhaps we want the ability to generate a link for API-catalog-style views, and current app state on the current machine could go in IndexedDB or similar so that custom views aren't lost on a single client.

Batch data during initial load and paging

The client worker script and ApiMatrix should be smart enough to fetch smaller batches of data and only produce a matrix of data relevant to the current page (and maybe a couple surrounding pages).

CSSStyleDeclaration properties missing on Firefox and Safari

We're hoping that we can get the list of supported CSS properties showing up consistently in CSSStyleDeclaration. In Firefox the properties are on CSS2Properties.prototype instead of CSSStyleDeclaration.prototype. I think we had some plan for merging CSS2Properties "up" into CSSStyleDeclaration, right? I don't see CSS2Properties members showing up in the catalog for Firefox.

In Safari, the properties appear to sort of show up as own-properties on instances of CSSStyleDeclaration:

Object.getOwnPropertyNames(document.body.style) -> contains "borderStyle"
Object.getOwnPropertyDescriptor(document.body.style,'borderStyle') -> Object
Object.hasOwnProperty(document.body.style, 'borderStyle') -> false, WTF?

Simplify metric compute() implementations with custom mLangs and/or sinks

Some metric compute() implementations contain a lot of Promise synchronization and exploiting side-effects in accumulating (or reducing) objects and arrays. They should be cleaned up to concisely express the queries they intend, which will probably require custom mLangs and/or sinks, such as DISTINCT.

Refactor chart-based models to share setup code

We have two flavours of time series charts:

  • Plain time series (but multiple may appear on one graph)
  • "Tri-time-series": Used for number of APIs + add/remove delta on a single series

Right now, there is no common base class for these, even though a lot of setup work is the same.

"Browser-Specific" APIs don't show the WebKit legacy

The metrics doc defines browser-specific as:

How many APIs does this engine ship that appear in fewer than 2 other engines for at least a year?

README.md, confluence.html, and the metric calculator (lib/confluence/browser_specific.es6.js) document and implement this as:

How many APIs does this engine ship that appear in no other engines for at least a year?

This is important to fix especially because the common WebKit lineage of Safari and Chrome deflate their metric.

Merge charts

Now that the model for chart data points has been unified, the chart code for various metrics (except API Velocity) is virtually identical. We should just have one chart.

API velocity graph point popup cannot be hidden

Steps to reproduce:

  1. In an API velocity graph, click any point
  2. Scroll to another graph and click that point
  3. There are now two popups showing. Click outside to close the second of them.

The first popup now sits around, impossible to dismiss

Start with default browser set

Often you just want to see the latest Chrome, Firefox, Edge and Safari data. Perhaps pre-populate the browser list with that (all Windows, except Safari)?

Test and implement "additional metrics" from design review

These metrics included:

  • Overall API confluence: what fraction of the total APIs are present in at least 3 or 4 engines at any given time?
  • First to implement: How many APIs did this browser ship that were later shipped by at least 2 or 3 other browsers?

Better use space in catalog view

The catalog view currently has a few issues:

  • Small fixed width
  • Check/x tiles are huge; let's tighten them up
  • Browser headings are pretty verbose/wide; tighten them up too

Consider adding Modernizr data as "APIs"

Modernizr is a hand-curated list of feature detects. In many ways the status of each of these detects is as relevant to API confluence as the presence/absense of a JS API. In some cases they're the same (eg. Modernizr.JSON is a simple combination of JS API checks (and so redundant with our API confluence data), but in other cases they're much more interesting things that couldn't be automated generically (eg. passive event listeners).

I think it could be reasonable to just add ALL the Modernizr feature detects as additional "APIs" in our confluence list (though we might want an option to filter them out in some views).

/cc @patket

Test and implement: Pushing data to Cloud Datastore

We have tests that use the emulator to ensure that FOAM models are behaving as expected, but there is no code checked in that, when run in a Compute/App Engine context, will commit data to Cloud Datastore (yet).

Improve "add browser" UI

The list is getting a little unwieldy. Maybe do something multi-level - first pick one of the 5 browsers, then the OS, then the version (sorted with most recent first)?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.