Semiotic Version Plans - nteract/semiotic GitHub Wiki

Semiotic 2

Semiotic 2 will actually be just a big cleanup and compatibility with React 16 (removing old lifecycles and shims) with the only major change being the removal of the download button. This will also help get Semiotic past the Fear of Major Version problem it has and hopefully lead to more regular major versions.

Semiotic (3?) updates

Okay so Semiotic does some things really well but at the same time the development, like any new library, was pretty unstructured and reactive. Semiotic was originally developed all the way back in React 14 and it's time for a new major version aligned with React 17.

Modern React Features That Are Great For Dataviz

  • Hooks
  • Progressive Rendering
  • Context API
  • Portals

Things in Semiotic That Should Be Better

  • Semiotic is way too big
    • There are a lot of libraries that aren't really necessary (like rough) for most use cases and so they should be made more optional to help reduce the size of the library
  • Get rid of Download Button, it's such a hassle and people developing data apps should just make their own on a case-by-case basis
  • There are too many re-renders in too many places
  • Custom type/summaryType/etc
  • Expose the pipeline (under the hood there's a sort of pipeline metaphor that first measures then calculates extents then draws viz then draws interactivity then annotates and it should be more explicitly plug-and-play both to improve the API and make the experience better for contributors)
  • semiotic-mark should be cleaned up a lot, it tried to do things that aren't useful (painty) or are useful but are unused in Semiotic (built-in drag-and-drop) and just in general it's been underdeveloped. The idea of a self-rendering thing is still a good idea, especially if it could be more HTML5-canvas-aware, but it needs more thought.
    • Get rid of painty
    • Try to get away from or make optional d3-select
    • If drag-and-drop is kept make sure it's exposed in Semiotic
  • NetworkFrame is both really good and really hacky and needs to be cleaned up a lot
    • Add particle edges, everyone should have these
  • There are shared drawing methods throughout that are probably more-or-less duplicated across the library and because of the bloat of the library it makes it hard to, for example, use OrdinalFrame for marginal graphics, which is better than the current custom way marginal graphics are made but unless OrdinalFrame is cleaner, it would just make a mess of the DOM and performance
  • Brushing is such a hassle and so hard to style