Rust Bokeh library (extends to other languages)

Hi,

I’m interested in writing a Rust wrapper library for plotting with
Bokeh. My interest also extends to other language bindings beyond Rust,
but it is my current language of choice.

As far as I can tell, the simplest way to start is to do the following:

  1. Write some code that can generate the basic HTML template including
    the javascript pre/post-amble:
    • the <head> contents importing Bokeh from CDN;
    • the <div> placeholder (with GUID id);
    • the javascript main function fetching the JSON contents from the
      <div> tag
  2. Write some types that serialize down to the JSON representation
    stored in the <script> tag and inject into the template.

Then I can work in creating a rust-like API which generates the JSON
representation, ideally conceptually similar to the Python API but more
idomatic to Rust.

Does this seem like a reasonable starting point?

Thanks

Hi Simon,

I am taking an OSS break until Dec 1 but I happened to glance at this message while checking other emails. I am excited enough by this idea that I just wanted to take a moment to acknowledge it immediately, and say that I will be very happy to discuss details and help out starting in Dec. In the mean time, I'd just briefly say:

* Users will likely want to output/embed in a variety of ways, so a layered approach that provides higher level convenience APIs that "do everything" built on top of lower level building blocks is helpful here.

* Along the same lines, for the JSON representation I'd suggest first to mirror the bokeh.models API directly, with Rust objects or functions that represent all the Bokeh models in a 1-1 fashion. [*] Then, implement a higher level idiomatic Rust API on top of that. This is the approach that RBokeh is in the process of implementing. It will insulate the Rust API from BokehJS, and also lower the bar for new contributors by providing a work surface that is accessible to Rust devs who do not want to deal with the BokehJS bits.

* If this progresses (and I hope that it does!) we'd be happy to add the project under the Bokeh GitHub organization, if that's something you are also interested in.

Thanks,

Bryan

[*] Ideally, this could be automated. There is a Python script here that will dump every Bokeh model and all their properties (including types and default values and help strings) in a JSON format here:

  https://github.com/bokeh/bokeh/blob/master/scripts/spec.py

···

On Nov 14, 2018, at 11:18, Simon Walker <[email protected]> wrote:

Hi,

I'm interested in writing a Rust wrapper library for plotting with
Bokeh. My interest also extends to other language bindings beyond Rust,
but it is my _current_ language of choice.

As far as I can tell, the simplest way to start is to do the following:

1. Write some code that can generate the basic HTML template including
the javascript pre/post-amble:
    - the `<head>` contents importing Bokeh from CDN;
    - the `<div>` placeholder (with GUID id);
    - the javascript main function fetching the JSON contents from the
      `<div>` tag
2. Write some types that serialize down to the JSON representation
stored in the `<script>` tag and inject into the template.

Then I can work in creating a rust-like API which generates the JSON
representation, ideally conceptually similar to the Python API but more
idomatic to Rust.

Does this seem like a reasonable starting point?

Thanks

--
You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/e0773061-4425-44ff-987b-cccc9ea31a9e%40continuum.io\.
For more options, visit https://groups.google.com/a/continuum.io/d/optout\.

Hi Bryan,

This is great news, I’m really glad to hear you’re interested. I’m just
going to say that my time is relatively limited but I’m happy to make a
reasonable start. You’ve given me some great starting points, I was
hoping for a script such as you suggested! We can discuss further when
you return.

  • Simon
···

On Wednesday, 14 November 2018 20:42:11 UTC, Bryan Van de ven wrote:

Hi Simon,

I am taking an OSS break until Dec 1 but I happened to glance at this message while checking other emails. I am excited enough by this idea that I just wanted to take a moment to acknowledge it immediately, and say that I will be very happy to discuss details and help out starting in Dec. In the mean time, I’d just briefly say:

  • Users will likely want to output/embed in a variety of ways, so a layered approach that provides higher level convenience APIs that “do everything” built on top of lower level building blocks is helpful here.

  • Along the same lines, for the JSON representation I’d suggest first to mirror the bokeh.models API directly, with Rust objects or functions that represent all the Bokeh models in a 1-1 fashion. [*] Then, implement a higher level idiomatic Rust API on top of that. This is the approach that RBokeh is in the process of implementing. It will insulate the Rust API from BokehJS, and also lower the bar for new contributors by providing a work surface that is accessible to Rust devs who do not want to deal with the BokehJS bits.

  • If this progresses (and I hope that it does!) we’d be happy to add the project under the Bokeh GitHub organization, if that’s something you are also interested in.

Thanks,

Bryan

[*] Ideally, this could be automated. There is a Python script here that will dump every Bokeh model and all their properties (including types and default values and help strings) in a JSON format here:

    [https://github.com/bokeh/bokeh/blob/master/scripts/spec.py](https://github.com/bokeh/bokeh/blob/master/scripts/spec.py)

On Nov 14, 2018, at 11:18, Simon Walker [email protected] wrote:

Hi,

I’m interested in writing a Rust wrapper library for plotting with

Bokeh. My interest also extends to other language bindings beyond Rust,

but it is my current language of choice.

As far as I can tell, the simplest way to start is to do the following:

  1. Write some code that can generate the basic HTML template including

the javascript pre/post-amble:

- the `<head>` contents importing Bokeh from CDN;
- the `<div>` placeholder (with GUID id);
- the javascript main function fetching the JSON contents from the
  `<div>` tag
  1. Write some types that serialize down to the JSON representation

stored in the <script> tag and inject into the template.

Then I can work in creating a rust-like API which generates the JSON

representation, ideally conceptually similar to the Python API but more

idomatic to Rust.

Does this seem like a reasonable starting point?

Thanks


You received this message because you are subscribed to the Google Groups “Bokeh Discussion - Public” group.

To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].

To post to this group, send email to [email protected].

To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/e0773061-4425-44ff-987b-cccc9ea31a9e%40continuum.io.

For more options, visit https://groups.google.com/a/continuum.io/d/optout.

Hi,

Hi Bryan,

This is great news, I’m really glad to hear you’re interested. I’m just
going to say that my time is relatively limited but I’m happy to make a
reasonable start. You’ve given me some great starting points, I was
hoping for a script such as you suggested! We can discuss further when
you return.

if you’re looking for inspiration, then there is bokeh-scala (https://github.com/bokeh/bokeh-scala), unfortunately very outdated and not maintained currently, but the general idea still holds.

Mateusz

···

On Wed, Nov 14, 2018 at 10:30 PM Simon Walker [email protected] wrote:

  • Simon

On Wednesday, 14 November 2018 20:42:11 UTC, Bryan Van de ven wrote:

Hi Simon,

I am taking an OSS break until Dec 1 but I happened to glance at this message while checking other emails. I am excited enough by this idea that I just wanted to take a moment to acknowledge it immediately, and say that I will be very happy to discuss details and help out starting in Dec. In the mean time, I’d just briefly say:

  • Users will likely want to output/embed in a variety of ways, so a layered approach that provides higher level convenience APIs that “do everything” built on top of lower level building blocks is helpful here.

  • Along the same lines, for the JSON representation I’d suggest first to mirror the bokeh.models API directly, with Rust objects or functions that represent all the Bokeh models in a 1-1 fashion. [*] Then, implement a higher level idiomatic Rust API on top of that. This is the approach that RBokeh is in the process of implementing. It will insulate the Rust API from BokehJS, and also lower the bar for new contributors by providing a work surface that is accessible to Rust devs who do not want to deal with the BokehJS bits.

  • If this progresses (and I hope that it does!) we’d be happy to add the project under the Bokeh GitHub organization, if that’s something you are also interested in.

Thanks,

Bryan

[*] Ideally, this could be automated. There is a Python script here that will dump every Bokeh model and all their properties (including types and default values and help strings) in a JSON format here:

    [https://github.com/bokeh/bokeh/blob/master/scripts/spec.py](https://github.com/bokeh/bokeh/blob/master/scripts/spec.py)

On Nov 14, 2018, at 11:18, Simon Walker [email protected] wrote:

Hi,

I’m interested in writing a Rust wrapper library for plotting with

Bokeh. My interest also extends to other language bindings beyond Rust,

but it is my current language of choice.

As far as I can tell, the simplest way to start is to do the following:

  1. Write some code that can generate the basic HTML template including

the javascript pre/post-amble:

- the `<head>` contents importing Bokeh from CDN;
- the `<div>` placeholder (with GUID id);
- the javascript main function fetching the JSON contents from the
  `<div>` tag
  1. Write some types that serialize down to the JSON representation

stored in the <script> tag and inject into the template.

Then I can work in creating a rust-like API which generates the JSON

representation, ideally conceptually similar to the Python API but more

idomatic to Rust.

Does this seem like a reasonable starting point?

Thanks


You received this message because you are subscribed to the Google Groups “Bokeh Discussion - Public” group.

To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].

To post to this group, send email to [email protected].

To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/e0773061-4425-44ff-987b-cccc9ea31a9e%40continuum.io.

For more options, visit https://groups.google.com/a/continuum.io/d/optout.

You received this message because you are subscribed to the Google Groups “Bokeh Discussion - Public” group.

To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].

To post to this group, send email to [email protected].

To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/68144bf3-0ebf-4d95-847e-640799659440%40continuum.io.

For more options, visit https://groups.google.com/a/continuum.io/d/optout.

FYI I am easing back into things a few days early, so feel free to ping me with any questions as they come up.

Thanks,

Bryan

···

On Nov 14, 2018, at 14:40, Mateusz Paprocki <[email protected]> wrote:

Hi,
On Wed, Nov 14, 2018 at 10:30 PM Simon Walker <[email protected]> wrote:
Hi Bryan,

This is great news, I'm really glad to hear you're interested. I'm just
going to say that my time is relatively limited but I'm happy to make a
reasonable start. You've given me some great starting points, I was
hoping for a script such as you suggested! We can discuss further when
you return.

if you're looking for inspiration, then there is bokeh-scala (https://github.com/bokeh/bokeh-scala\), unfortunately very outdated and not maintained currently, but the general idea still holds.

Mateusz

- Simon

On Wednesday, 14 November 2018 20:42:11 UTC, Bryan Van de ven wrote:
Hi Simon,

I am taking an OSS break until Dec 1 but I happened to glance at this message while checking other emails. I am excited enough by this idea that I just wanted to take a moment to acknowledge it immediately, and say that I will be very happy to discuss details and help out starting in Dec. In the mean time, I'd just briefly say:

* Users will likely want to output/embed in a variety of ways, so a layered approach that provides higher level convenience APIs that "do everything" built on top of lower level building blocks is helpful here.

* Along the same lines, for the JSON representation I'd suggest first to mirror the bokeh.models API directly, with Rust objects or functions that represent all the Bokeh models in a 1-1 fashion. [*] Then, implement a higher level idiomatic Rust API on top of that. This is the approach that RBokeh is in the process of implementing. It will insulate the Rust API from BokehJS, and also lower the bar for new contributors by providing a work surface that is accessible to Rust devs who do not want to deal with the BokehJS bits.

* If this progresses (and I hope that it does!) we'd be happy to add the project under the Bokeh GitHub organization, if that's something you are also interested in.

Thanks,

Bryan

[*] Ideally, this could be automated. There is a Python script here that will dump every Bokeh model and all their properties (including types and default values and help strings) in a JSON format here:

        https://github.com/bokeh/bokeh/blob/master/scripts/spec.py

> On Nov 14, 2018, at 11:18, Simon Walker <[email protected]> wrote:
>
> Hi,
>
> I'm interested in writing a Rust wrapper library for plotting with
> Bokeh. My interest also extends to other language bindings beyond Rust,
> but it is my _current_ language of choice.
>
> As far as I can tell, the simplest way to start is to do the following:
>
> 1. Write some code that can generate the basic HTML template including
> the javascript pre/post-amble:
> - the `<head>` contents importing Bokeh from CDN;
> - the `<div>` placeholder (with GUID id);
> - the javascript main function fetching the JSON contents from the
> `<div>` tag
> 2. Write some types that serialize down to the JSON representation
> stored in the `<script>` tag and inject into the template.
>
> Then I can work in creating a rust-like API which generates the JSON
> representation, ideally conceptually similar to the Python API but more
> idomatic to Rust.
>
> Does this seem like a reasonable starting point?
>
> Thanks
>
> --
> You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to bokeh+un...@continuum.io.
> To post to this group, send email to bo...@continuum.io.
> To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/e0773061-4425-44ff-987b-cccc9ea31a9e%40continuum.io\.
> For more options, visit https://groups.google.com/a/continuum.io/d/optout\.

--
You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/68144bf3-0ebf-4d95-847e-640799659440%40continuum.io\.
For more options, visit https://groups.google.com/a/continuum.io/d/optout\.

--
You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/CANFzp8hJs66uCtD7mPaNTTD%3DdFotD9SjvmWDuXA0XHo8pNs%2BoA%40mail.gmail.com\.
For more options, visit https://groups.google.com/a/continuum.io/d/optout\.

FYI I am easing back into things a few days early, so feel free to ping me with any questions as they come up.

Thanks,

Bryan

Hi Bryan,

That's good to hear. Progress is going ok. I'm following your advice and
starting with the models API. I think I understand how the process
works:

- Use the models API to construct a graph of objects;
- Convert this graph of objects into a JSON document;
- Render the HTML template and embed the JSON document, which is then
  rendered by BokehJS.

It seems fairly straightforward to mimic the `models` API in Rust
however my initial attempts are stumbling on some Rust-y things. I have
a medium level of experience with Rust and so it's not coming naturally
to me yet!

The project is currently hosted here:

with two sub-crates: bokeh-models and bokeh-plotting. Only bokeh-models
has meaningful content so far.

I'm excited for this project, and it's prospects for expanding the Bokeh
ecosystem to other languages. As far as I can tell, a lot of work is
done by BokehJS and so writing high level plotting libraries for
non-Python languages could be quite straightforward.

I'll keep you posted on progress (as I mentioned previously this is a
part time hobby project so don't expect a huge rate of progress!). If I
get stuck on the Bokeh side of things, I'd appreciate any help you can
give.

Thanks,
- Simon

···

On Mon, 26 Nov 2018 at 22:59, Bryan Van de ven <[email protected]> wrote:

FYI I am easing back into things a few days early, so feel free to ping me with any questions as they come up.

Thanks,

Bryan

> On Nov 14, 2018, at 14:40, Mateusz Paprocki <[email protected]> wrote:
>
> Hi,
> On Wed, Nov 14, 2018 at 10:30 PM Simon Walker <[email protected]> wrote:
> Hi Bryan,
>
> This is great news, I'm really glad to hear you're interested. I'm just
> going to say that my time is relatively limited but I'm happy to make a
> reasonable start. You've given me some great starting points, I was
> hoping for a script such as you suggested! We can discuss further when
> you return.
>
> if you're looking for inspiration, then there is bokeh-scala (https://github.com/bokeh/bokeh-scala\), unfortunately very outdated and not maintained currently, but the general idea still holds.
>
> Mateusz
>
>
> - Simon
>
>
> On Wednesday, 14 November 2018 20:42:11 UTC, Bryan Van de ven wrote:
> Hi Simon,
>
> I am taking an OSS break until Dec 1 but I happened to glance at this message while checking other emails. I am excited enough by this idea that I just wanted to take a moment to acknowledge it immediately, and say that I will be very happy to discuss details and help out starting in Dec. In the mean time, I'd just briefly say:
>
> * Users will likely want to output/embed in a variety of ways, so a layered approach that provides higher level convenience APIs that "do everything" built on top of lower level building blocks is helpful here.
>
> * Along the same lines, for the JSON representation I'd suggest first to mirror the bokeh.models API directly, with Rust objects or functions that represent all the Bokeh models in a 1-1 fashion. [*] Then, implement a higher level idiomatic Rust API on top of that. This is the approach that RBokeh is in the process of implementing. It will insulate the Rust API from BokehJS, and also lower the bar for new contributors by providing a work surface that is accessible to Rust devs who do not want to deal with the BokehJS bits.
>
> * If this progresses (and I hope that it does!) we'd be happy to add the project under the Bokeh GitHub organization, if that's something you are also interested in.
>
> Thanks,
>
> Bryan
>
> [*] Ideally, this could be automated. There is a Python script here that will dump every Bokeh model and all their properties (including types and default values and help strings) in a JSON format here:
>
> https://github.com/bokeh/bokeh/blob/master/scripts/spec.py
>
> > On Nov 14, 2018, at 11:18, Simon Walker <[email protected]> wrote:
> >
> > Hi,
> >
> > I'm interested in writing a Rust wrapper library for plotting with
> > Bokeh. My interest also extends to other language bindings beyond Rust,
> > but it is my _current_ language of choice.
> >
> > As far as I can tell, the simplest way to start is to do the following:
> >
> > 1. Write some code that can generate the basic HTML template including
> > the javascript pre/post-amble:
> > - the `<head>` contents importing Bokeh from CDN;
> > - the `<div>` placeholder (with GUID id);
> > - the javascript main function fetching the JSON contents from the
> > `<div>` tag
> > 2. Write some types that serialize down to the JSON representation
> > stored in the `<script>` tag and inject into the template.
> >
> > Then I can work in creating a rust-like API which generates the JSON
> > representation, ideally conceptually similar to the Python API but more
> > idomatic to Rust.
> >
> > Does this seem like a reasonable starting point?
> >
> > Thanks
> >
> > --
> > You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
> > To unsubscribe from this group and stop receiving emails from it, send an email to bokeh+un...@continuum.io.
> > To post to this group, send email to bo...@continuum.io.
> > To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/e0773061-4425-44ff-987b-cccc9ea31a9e%40continuum.io\.
> > For more options, visit https://groups.google.com/a/continuum.io/d/optout\.
>
>
> --
> You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/68144bf3-0ebf-4d95-847e-640799659440%40continuum.io\.
> For more options, visit https://groups.google.com/a/continuum.io/d/optout\.
>
> --
> You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/CANFzp8hJs66uCtD7mPaNTTD%3DdFotD9SjvmWDuXA0XHo8pNs%2BoA%40mail.gmail.com\.
> For more options, visit https://groups.google.com/a/continuum.io/d/optout\.

--
You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/56D61B46-4CCA-4CFF-820E-2107EF4E2BF3%40anaconda.com\.
For more options, visit https://groups.google.com/a/continuum.io/d/optout\.

Hi Simon,

Thanks for the update, I am glad to see that you are underway. You have it exactly correct: almost all of the "real work" is all done by BokehJS. So, exposing Bokeh's capabilities to other languages should be fairly straightforward, in the sense that it is the same general pattern of work. I definitely understand about side projects and time. I'm available to help with any questions as they arise, including with video calls, if high-bandwidth communication is ever useful.

Thanks,

Bryan

···

On Nov 30, 2018, at 08:46, Simon Walker <[email protected]> wrote:

FYI I am easing back into things a few days early, so feel free to ping me with any questions as they come up.

Thanks,

Bryan

Hi Bryan,

That's good to hear. Progress is going ok. I'm following your advice and
starting with the models API. I think I understand how the process
works:

- Use the models API to construct a graph of objects;
- Convert this graph of objects into a JSON document;
- Render the HTML template and embed the JSON document, which is then
rendered by BokehJS.

It seems fairly straightforward to mimic the `models` API in Rust
however my initial attempts are stumbling on some Rust-y things. I have
a medium level of experience with Rust and so it's not coming naturally
to me yet!

The project is currently hosted here:

GitHub - simonrw/rust-bokeh: Bokeh client library in Rust

with two sub-crates: bokeh-models and bokeh-plotting. Only bokeh-models
has meaningful content so far.

I'm excited for this project, and it's prospects for expanding the Bokeh
ecosystem to other languages. As far as I can tell, a lot of work is
done by BokehJS and so writing high level plotting libraries for
non-Python languages could be quite straightforward.

I'll keep you posted on progress (as I mentioned previously this is a
part time hobby project so don't expect a huge rate of progress!). If I
get stuck on the Bokeh side of things, I'd appreciate any help you can
give.

Thanks,
- Simon
On Mon, 26 Nov 2018 at 22:59, Bryan Van de ven <[email protected]> wrote:

FYI I am easing back into things a few days early, so feel free to ping me with any questions as they come up.

Thanks,

Bryan

On Nov 14, 2018, at 14:40, Mateusz Paprocki <[email protected]> wrote:

Hi,
On Wed, Nov 14, 2018 at 10:30 PM Simon Walker <[email protected]> wrote:
Hi Bryan,

This is great news, I'm really glad to hear you're interested. I'm just
going to say that my time is relatively limited but I'm happy to make a
reasonable start. You've given me some great starting points, I was
hoping for a script such as you suggested! We can discuss further when
you return.

if you're looking for inspiration, then there is bokeh-scala (https://github.com/bokeh/bokeh-scala\), unfortunately very outdated and not maintained currently, but the general idea still holds.

Mateusz

- Simon

On Wednesday, 14 November 2018 20:42:11 UTC, Bryan Van de ven wrote:
Hi Simon,

I am taking an OSS break until Dec 1 but I happened to glance at this message while checking other emails. I am excited enough by this idea that I just wanted to take a moment to acknowledge it immediately, and say that I will be very happy to discuss details and help out starting in Dec. In the mean time, I'd just briefly say:

* Users will likely want to output/embed in a variety of ways, so a layered approach that provides higher level convenience APIs that "do everything" built on top of lower level building blocks is helpful here.

* Along the same lines, for the JSON representation I'd suggest first to mirror the bokeh.models API directly, with Rust objects or functions that represent all the Bokeh models in a 1-1 fashion. [*] Then, implement a higher level idiomatic Rust API on top of that. This is the approach that RBokeh is in the process of implementing. It will insulate the Rust API from BokehJS, and also lower the bar for new contributors by providing a work surface that is accessible to Rust devs who do not want to deal with the BokehJS bits.

* If this progresses (and I hope that it does!) we'd be happy to add the project under the Bokeh GitHub organization, if that's something you are also interested in.

Thanks,

Bryan

[*] Ideally, this could be automated. There is a Python script here that will dump every Bokeh model and all their properties (including types and default values and help strings) in a JSON format here:

       https://github.com/bokeh/bokeh/blob/master/scripts/spec.py

On Nov 14, 2018, at 11:18, Simon Walker <[email protected]> wrote:

Hi,

I'm interested in writing a Rust wrapper library for plotting with
Bokeh. My interest also extends to other language bindings beyond Rust,
but it is my _current_ language of choice.

As far as I can tell, the simplest way to start is to do the following:

1. Write some code that can generate the basic HTML template including
the javascript pre/post-amble:
   - the `<head>` contents importing Bokeh from CDN;
   - the `<div>` placeholder (with GUID id);
   - the javascript main function fetching the JSON contents from the
     `<div>` tag
2. Write some types that serialize down to the JSON representation
stored in the `<script>` tag and inject into the template.

Then I can work in creating a rust-like API which generates the JSON
representation, ideally conceptually similar to the Python API but more
idomatic to Rust.

Does this seem like a reasonable starting point?

Thanks

--
You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bokeh+un...@continuum.io.
To post to this group, send email to bo...@continuum.io.
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/e0773061-4425-44ff-987b-cccc9ea31a9e%40continuum.io\.
For more options, visit https://groups.google.com/a/continuum.io/d/optout\.

--
You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/68144bf3-0ebf-4d95-847e-640799659440%40continuum.io\.
For more options, visit https://groups.google.com/a/continuum.io/d/optout\.

--
You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/CANFzp8hJs66uCtD7mPaNTTD%3DdFotD9SjvmWDuXA0XHo8pNs%2BoA%40mail.gmail.com\.
For more options, visit https://groups.google.com/a/continuum.io/d/optout\.

--
You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/56D61B46-4CCA-4CFF-820E-2107EF4E2BF3%40anaconda.com\.
For more options, visit https://groups.google.com/a/continuum.io/d/optout\.

--
You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/CAAouoGnr7Mk_J0Gxs%3DHbOC5mLFgN053y9St8%3DPk%2B7X07SgBG_A%40mail.gmail.com\.
For more options, visit https://groups.google.com/a/continuum.io/d/optout\.

Hi Simon and Bryan,

I’m currently looking for a good project to learn Rust and already have worked with Bokeh for quite a while now (and enjoyed it a lot), I thought about creating a language binding for Rust, then I looked here on the discourse channel and tadaa.

Thus, I’m intested if this project is still active (Since the last commit is over one year ago, I assume it has been put on ice). Otherwise I’d like to develop a binding for Rust and get used to the language in the process.

If so, I would essentially follow the already proposed layered approach, by mirroring the bokeh.models and then by implementing a Rust API for it.

Best,
Gaudenz

1 Like

Hi Gaudenz, Bryan,

Sorry for the lack of response and progress on this project. As you have noted, progress has halted somewhat since my last commits. I’m more than happy for you to continue what I started. You could either fork the repo or I can give you commit access and you can take it from there.

I did not make much progress on my higher level plotting crate, but there is some code in the models crate that is worth a look.

Keep me in the loop though, I think there is definitely potential in this area.

Simon

I would love to see Rust Bokeh bindings and am happy to help out with any advice or guidance, but it’s definitely not something I can take on myself. @ghalter if you start working on this please do join the developer slack for any questions, etc. https://slack-invite.bokeh.org/