Skip to content

Commit e22b4f5

Browse files
authored
docs(arrow-layers): Clean up arrow-layers docs and file structure (#69)
1 parent c8fe359 commit e22b4f5

34 files changed

+326
-245
lines changed

docs/README.md

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,42 @@
11
# Introduction
22

3-
This repository contains a collection of community supported modules for [deck.gl](https://deck.gl), that are intended to complement the various modules already provided by the core deck.gl framework. While any module that is properly scoped and of sufficient value to the community could be a candidate for this repository, common modules type are:
3+
This repository contains a collection of community supported modules for [deck.gl](https://deck.gl).
4+
It was initially created to provide a home for a number of excellent deck.gl add-on modules that had fallen into disuse.
5+
6+
## Scope
7+
8+
This repository is intended to host modules that complement the various modules already provided by the core deck.gl framework.
9+
While any module that is properly scoped and of sufficient value to the community could be a candidate for this repository,
10+
common modules type are:
411

512
- additional **layer packs** (beyond the various layer packs available in deck.gl)
613
- additional **base map** integrations (beyond the integrations supported by deck.gl)
7-
- additional **react** bindings (beyond the `@deck.gl/react` module).
14+
- additional **React bindings** (beyond the `@deck.gl/react` module).
815

9-
## Support
16+
## Contributing
1017

11-
Community modules are not officially supported by the core deck.gl maintainers, but have at least some intermittent, part-time support from one or more community members.
18+
For extensions to existing modules, it is generally recommended to start a discussion before you open a PR.
1219

13-
Note that the continued inclusion of each module into this repository depends to a large extent on whether there is sufficient community support for the module. Modules can be removed from this repository if the core deck.gl team feels that the community is no longer able to provide sufficient support.
20+
If you have a new module that you think could fit into this repository, please start by opening a GitHub issue to start a discussion, or reach out in the OpenJS slack.
21+
Note that for a new module you will also be asked to asses what level of maintenance you will be able to provide over the longer term.
1422

15-
If a module was to be removed, applications can of course copy the module's source code, but will need to maintain the code on their own.
23+
## Governance
1624

17-
## Contributing
25+
Final decision ultimately rest with the OpenJS Open Visualization TSC (Technical Steering Committee), but decisions are often made in the open bi-weekly meetings.
1826

19-
If you have a module that you think could fit into this repository, please start by opening a GitHub issue to start a discussion, or reach out in the OpenJS slack.
27+
## Support
2028

21-
## Upstreaming
29+
Community modules are not officially supported by the core deck.gl maintainers,
30+
but are expected to have at least intermittent, part-time support from one or more community members.
2231

23-
On rare occasions, a new component or module may be "upstreamed" into the core deck.gl repository.
32+
Overall goals for this repo is
33+
- All modules should support deck.gl v9 on WebGL2.
34+
- Modules will be expected to gradually start supporting deck.gl v9 on WebGPU
35+
- Support for deck.gl v8 is a non-goal, though one or two modules may have older versions that still work.
2436

25-
There is a high bar when adding new code to the main deck.gl repository. The deck.gl-community repository is sometimes used to prepare (incubate) new software components so that they are ready to be added to deck.gl.
37+
## Insufficient Support
2638

27-
Therefore when proposing the addition of a new component (such as a new deck.gl layer),
28-
to the core deck.gl maintainers, it is helpful to be able to prepare the component in a monorepo environment that is similar to the deck.gl repo, complete with tests, documentation and examples. This can avoid a length and frustrating review process in the deck.gl repo.
39+
Note that the continued inclusion of each module into this repository depends to a large extent on whether there is sufficient community support for the module.
40+
Modules can be removed from this repository if the core deck.gl team feels that the community is no longer able to provide sufficient support.
2941

30-
To set expectations, most components in this repository will never be added to the main deck.gl repository.
42+
If a module was to be removed, applications can of course copy the module's source code, but will need to maintain the code on their own.

docs/modules/arrow-layers/README.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Overview
2+
3+
:::danger
4+
The arrow layers module is still in the process of being ported into deck.gl-community from [geoarrow/deck.gl-layers](https://github.com/geoarrow/deck.gl-layers).
5+
:::
6+
7+
This module provides deck.gl layers that accept Apache Arrow and [GeoArrow](https://geoarrow.org) tables.
8+
These layers take advantage of the deck.gl [low-level binary interface](https://deck.gl/docs/developer-guide/performance#supply-attributes-directly) to provide binary arrow data from Apache Arrow tables directly to the GPU.
9+
10+
11+
![arrow-layers example](./images/hero.jpg)
12+
<p style={{textAlign:"center"}}>3.2 million points rendered with a <code>GeoArrowScatterplotLayer</code>.</p>
13+
14+
## Features
15+
16+
- **Fast**: copies binary buffers directly from an [Arrow JS](https://www.npmjs.com/package/apache-arrow) [`Table`](https://arrow.apache.org/docs/js/classes/Arrow_dom.Table.html) object to the GPU using [deck.gl's binary data interface](https://deck.gl/docs/developer-guide/performance#supply-attributes-directly).
17+
- **Memory-efficient**: no intermediate data representation and no garbage-collector overhead.
18+
- **Full layer customization**: Use the same layer properties as in the upstream deck.gl layer documentation. Any _accessor_ (layer property prefixed with `get*`) can be passed an Arrow [`Vector`](https://arrow.apache.org/docs/js/classes/Arrow_dom.Vector.html).
19+
- **Input validation**. Validation can be turned off via the `_validate` property on most layer types.
20+
- **Multi-threaded polygon triangulation**. When rendering polygon layers, a process called [polygon triangulation](https://en.wikipedia.org/wiki/Polygon_triangulation) must happen on the CPU before data can be copied to the GPU. Ordinarily, this can block the main thread for several seconds, but the `GeoArrowSolidPolygonLayer` will perform this process off the main thread, on up to 8 web workers.
21+
- **Progressive rendering support**. For streaming-capable data formats like Arrow IPC and Parquet, you can render a GeoArrow layer per chunk as the data loads.
22+
23+
## Examples
24+
25+
Standalone examples exist in the [`examples/`](examples/) directory. Create an issue if you have trouble running them.
26+
27+
## History
28+
29+
This module is based on the [geoarrow/deck.gl-layers](https://github.com/geoarrow/deck.gl-layers) module, originally developed by Kyle Barron as part of his independent multi-prong effort to implement fully optimized GeoArrow and GeoParquet based browser visualizations.
30+
31+
It was agreed that the deck.gl-community repository is a good long-term home for this particular module. Of note is that there is also interest to bring Apache Arrow support into the deck.gl core repository in a future release and therefore moving development of these layers closer to deck.gl will reduce the risk of duplicated work.
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Layers
2+
3+
The following layers are provided, offer Apache Arrow bindings to the corresponding official deck.gl layers
4+
5+
## GeoArrowArcLayer
6+
7+
TBA
8+
9+
## GeoArrowColumnLayer
10+
11+
TBA
12+
13+
## GeoArrowH3HexagonLayer
14+
15+
TBA
16+
17+
## GeoArrowHeatmapLayer
18+
19+
TBA
20+
21+
## GeoArrowPathLayer
22+
23+
TBA
24+
25+
## GeoArrowPointCloudLayer
26+
27+
TBA
28+
29+
## GeoArrowPolygonLayer
30+
31+
TBA
32+
33+
## GeoArrowScatterplotLayer
34+
35+
TBA
36+
37+
## GeoArrowSolidPolygonLayer
38+
39+
TBA
40+
41+
## GeoArrowTextLayer
42+
43+
TBA
44+
45+
## GeoArrowTripsLayer
46+
47+
TBA

docs/modules/README.md renamed to docs/modules/arrow-layers/developer-guide/get-started.md

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,4 @@
1-
# @deck.gl-community/arrow-layers
2-
3-
The easiest, most efficient way to render large geospatial datasets in [deck.gl](https://deck.gl), via [GeoArrow](https://geoarrow.org).
4-
5-
This is just a _glue library_ to deck.gl. It generates the same layer objects as upstream deck.gl does, but uses a [low-level binary interface](https://deck.gl/docs/developer-guide/performance#supply-attributes-directly) for best performance. Using the binary interface directly is really easy to mess up. Instead, the layer classes exposed by `@deck.gl-community/arrow-layers` focus on making the process easy to use and validating user input, and under the hood pass buffers to deck.gl's binary interface.
6-
7-
![](assets/hero.jpg)
8-
9-
<p style="text-align:center">3.2 million points rendered with a <code>GeoArrowScatterplotLayer</code>.</p>
10-
11-
## Features
12-
13-
- **Fast**: copies binary buffers directly from an [Arrow JS](https://www.npmjs.com/package/apache-arrow) [`Table`](https://arrow.apache.org/docs/js/classes/Arrow_dom.Table.html) object to the GPU using [deck.gl's binary data interface](https://deck.gl/docs/developer-guide/performance#supply-attributes-directly).
14-
- **Memory-efficient**: no intermediate data representation and no garbage-collector overhead.
15-
- **Full layer customization**: Use the same layer properties as in the upstream deck.gl layer documentation. Any _accessor_ (layer property prefixed with `get*`) can be passed an Arrow [`Vector`](https://arrow.apache.org/docs/js/classes/Arrow_dom.Vector.html).
16-
- **Input validation**. Validation can be turned off via the `_validate` property on most layer types.
17-
- **Multi-threaded polygon triangulation**. When rendering polygon layers, a process called [polygon triangulation](https://en.wikipedia.org/wiki/Polygon_triangulation) must happen on the CPU before data can be copied to the GPU. Ordinarily, this can block the main thread for several seconds, but the `GeoArrowSolidPolygonLayer` will perform this process off the main thread, on up to 8 web workers.
18-
- **Progressive rendering support**. For streaming-capable data formats like Arrow IPC and Parquet, you can render a GeoArrow layer per chunk as the data loads.
19-
20-
## Examples
21-
22-
Standalone examples exist in the [`examples/`](examples/) directory. Create an issue if you have trouble running them.
23-
24-
More hosted examples on Observable are planned.
1+
# Get Started
252

263
## Providing accessors
274

@@ -66,7 +43,7 @@ const deckLayer = new GeoArrowPathLayer({
6643
}),
6744
```
6845

69-
The full example is in [`examples/multilinestring/app.tsx`](examples/multilinestring/app.tsx).
46+
The full example is in `examples/multilinestring/app.tsx`.
7047

7148
You can also use assign to the `target` prop to reduce garbage collector overhead, as described in the [deck.gl performance guide](https://deck.gl/docs/developer-guide/performance#supply-binary-blobs-to-the-data-prop).
7249

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"type": "category",
3+
"label": "@deck.gl-community/arrow-layers",
4+
"items": [
5+
"modules/arrow-layers/README",
6+
"modules/arrow-layers/developer-guide/get-started",
7+
"modules/arrow-layers/api-reference/layers"
8+
]
9+
}

docs/modules/editable-layers/README.md

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Provides editable and interactive map overlay layers, built using the power of [
1818

1919
## History
2020

21-
A fork of @nebula.gl. nebula.gl is an important part of the deck.gl ecosystem but the repository has lacked maintainers for several years and the repository no longer accepts external contributions.
21+
A fork of @nebula.gl. [nebula.gl](https://nabula.gl) is an important part of the deck.gl ecosystem but the repository has lacked maintainers for several years and the repository no longer accepts external contributions.
2222

2323
## What's New
2424

@@ -38,13 +38,6 @@ This page contains highlights of each `editable-layers` release.
3838
| `@nebula.gl/editor` | React wrappers | => `@deck.gl-community/react-editable-layers` |
3939
| `react-map-gl-draw` | Non-deck-wrapper | => NOT FORKED |
4040

41-
42-
### editable-layers v0.0.1
43-
44-
Release date: TBD
45-
46-
- new `DrawRectangleFromCenterMode`. User can draw a new rectangular `Polygon` feature by clicking the center, then along a corner of the rectangle.
47-
- `screenSpace` option can be provided in the `modeConfig` of Translate mode so the features will be translated without distortion in screen space.
48-
- `lockRectangles` option can be provided in the `modeConfig` object for ModifyMode, so the features with `properties.shape === 'Rectangle'` will preserve rectangular shape.
49-
- `pickingLineWidthExtraPixels` property to specify additional line width in pixels for picking. Can be useful when `EditableGeojsonLayer` is over a deck.gl layer and precise picking is problematic, and when usage of `pickingDepth` introduces performance issues.
50-
41+
Notes:
42+
- `react-map-gl-draw`- A notable omission is that `react-map-gl-draw` is not included in this fork. This decision was made to simplify the nebula.gl code base with the hope of making it easier for non-dedicated maintainers to keep the deck.gl layers version of nebula.gl alive. Given that the new version is no longer broken into deck.gl independent modules, it may not be easy to add.
43+
The main reason for updating react-map-gl-draw is likely to make it work with the latest React versions. If it helps, `react-map-gl-draw` is a small module and you can probably copy the source code into your app and bump the react dependency.

docs/modules/editable-layers/developer-guide/old.md

Lines changed: 0 additions & 80 deletions
This file was deleted.

docs/modules/graph-layers/README.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,19 @@
55

66
`graph-layers` is a deck.gl layer pack for GPU-powered visualization of large graphs.
77

8-
With graph-layers, developers can build various type of graph/network applications with minimum effort. The composable API enables highly customizable graph visualization by leveraging or even extending the provided graph *styles* and *layout algorithms*.
8+
With graph-layers, developers can build various type of graph/network applications with minimum effort.
9+
The composable API enables highly customizable graph visualization by leveraging or even extending the provided graph *styles* and *layout algorithms*.
910

1011
## History
1112

12-
`graph-layers` started out as a friendly fork of Uber's [graph.gl](https://graph.gl/gatsby/) framework.
13+
`graph-layers` started out as a friendly fork of Uber's archived [graph.gl](https://graph.gl/gatsby/) framework,
14+
bringing the graph.gl code up-to-date with the latest deck.gl versions.
1315

1416
## What's New
1517

16-
### `@deck.gl-community/graph-layers` v9.0.0
18+
### `@deck.gl-community/graph-layers` v9.0.0 (In development)
1719

18-
Release date: April 2024
20+
Target Release date: April 2024
1921

2022
The graph-layers module has been repackaged as a deck.gl "layer pack" with additional features, and has been modernized in terms of:
2123
- upgraded to work with deck.gl v9
@@ -25,6 +27,6 @@ The graph-layers module has been repackaged as a deck.gl "layer pack" with addit
2527

2628
### `deck-graph-layers` v0.0.1
2729

28-
Release date: Q4 2023
30+
Release date: April 14, 2023
2931

3032
An initial fork of Uber's [graph.gl](https://github.com/uber/graph.gl) repository. At the time of the fork, the repository has lacked maintainers for several years, the published versions were not compatible with recent deck.gl versions, and the repository no longer accepted external contributions.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
# Overview
22

3+
:::caution
4+
There is an ambition to phase out React specific code for deck.gl-community modules. This model is expected to be deprecated in the near future.
5+
:::
6+
37
react-graph-layers provides React components for visualizing large graphs with several utility functions. It can build a highly customizable graph visualization through its composable API. The rendering is powered by deck.gl which is a WebGL based visualization framework. With react-graph-layers, users are enabled to build various type of graph/network applications with minimum efforts while having the capability to extend the existing styles and layouts.
48

docs/whats-new.md

Lines changed: 6 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,18 @@
11
# What's New
22

3-
The following releases are deck.gl v9 compatible
3+
The detailed release notes of each module can be found in the module-specific docs section.
44

5-
### `@deck.gl-community/graph-layers` v9.0.0
5+
High-level updates are
66

7-
Target Release date: April 2024
87

9-
The deck-graph-layers module is being repackaged as a deck.gl "layer pack" and modernized
8+
April 15, 2024: [**`@deck.gl-community/editable-layers`**](/docs/modules/editable-layers)) v9 - This new layer pack is a fork of Uber's no longer maintained [nebula.gl](https://nebula.gl) framework. nebula.gl has been an important part of the deck.gl ecosystem but the repository has lacked maintainers for several years and the repository no longer accepts external contributions.
109

1110

12-
### `@deck.gl-community/editable-layers` v9.0.0
11+
Feb 29, 2024: [**`@deck.gl-community/layers`**](/docs/modules/layers) v9 - deck,gl community-layers now support deck.gl v9.
1312

14-
Release date: April 15, 2024
1513

16-
This new module is a fork of Uber's no longer maintained @nebula.gl framework.is an important part of the deck.gl ecosystem but the repository has lacked maintainers for several years and the repository no longer accepts external contributions.
14+
December 22, 2023: [**`@deck.gl-community/layers`**](/docs/modules/layers) v0 - A new module intended to containing a collection of useful community layers. Initial layers are `TileSourceLayer`, `DataDrivenTile3DLayer`.
1715

1816

19-
### `@deck.gl-community/layers` v9.0.0
17+
April 14, 2023: [**`@deck-graph-layers`**](/docs/modules/graph-layers) - A new layer pack for rendering graphs (nodes and edges). Forked from Uber's archived [graph.gl](https://graph.gl) repo.
2018

21-
- Target Release date: March 26, 2024
22-
- New version of the `@deck.gl-community/layers` module for deck.gl v9.
23-
24-
---
25-
26-
Releases below are deck.gl v8 compatible
27-
28-
> Support for the v8 ecosystem is not a goal, anything below is available strictly on an as-is basis.
29-
30-
### `@deck.gl-community/layers` v0.0.0
31-
32-
Release date: 2023
33-
34-
- `TileSourceLayer`
35-
- `DataDrivenTile3DLayer`
36-
37-
### `@deck-graph-layers` v0.0.1 (NEW MODULE)
38-
39-
A new layer pack built from a fork of Uber's graph.gl. For more information see [`graph-layers`](/docs/modules/graph-layers).

0 commit comments

Comments
 (0)