Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Discussion] Formulas and scripting support #3

Open
quigleyj97 opened this issue Nov 3, 2018 · 1 comment
Open

[Discussion] Formulas and scripting support #3

quigleyj97 opened this issue Nov 3, 2018 · 1 comment
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@quigleyj97
Copy link
Owner

I'm opening this as a discussion item to gauge interest in a few different directions that this plugin might take.

Before we go any further, I should note that this is a major undertaking. Even regular formulas pose a significant challenge, and VBA macros seem largely intractable without interfacing with a pre-existing Excel installation.

With that in mind, I can think of a few different options. I'd like to hear your opinions on them, as ultimately what matters most is the end user experience.

  1. Interface with Excel to do the calculations

    • Pros:
      • Guaranteed base level of support- We can support whatever Excel does, and can assure a certain level of compatibility with the desktop application
      • Likely the easiest option
    • Cons:
      • Users must have Excel installed for this to work
      • Cross platform: I don't have a Mac, and we'd lose Linux compatibility.
  2. Create our own formula parser/runner, executing on the client only

    • Pros:
      • Keeps the plugin from depending on a kernel or locking into a particular kernel language
      • 80:20 rule: By supporting simple formulas we can get 80% of worksheets functioning for only 20% of the effort
    • Cons:
      • Shuts out more complex user stories
  3. Roll our own scripting framework, using a Jupyter kernel as a back-end

    • Pros:
      • Allows us to have a fully open-source stack
      • Gives users a novel workflow within the Jupyter ecosystem
      • Allows the plugin to integrate more deeply with Jupyter, providing a nicer experience (conceptually, we could integrate with IPyWidgets, Matplotlib, notebooks, consoles, etc)
    • Cons:
      • Significant amount of effort required
      • DataFrames don't express spreadsheets well
        • Spreadsheets impose no restrictions on formats or datatypes, and may have arbitrary calculations anywhere
        • If we wanted to provide a kernel-side user API, we'd need to address this somehow
      • Duplicated effort w/ IPySheet?

I'm leaning towards option 2 myself, but option 3 excites me a lot.

@quigleyj97 quigleyj97 added the help wanted Extra attention is needed label Nov 3, 2018
@quigleyj97
Copy link
Owner Author

Revisiting this, I'm now more inclined to staying within the Python ecosystem using xlwings. Talking with a few real-world users of that library, it seems well-suited for production Excel and will be far more battle-tested than anything I could roll.

This leaves a major gap in the current editor w.r.t. editing and distribution;

  • Limited editing is supported in SlickGrid, but requires some investment and isn't always as nice as an Excel pro might want
  • The Model does not support live-updates, and will be very sluggish without some changes to it's interface
  • Using xlwings as a backend would require distributing a serverextension or kernel, neither of which can be done using NPM.

@quigleyj97 quigleyj97 added this to the 1.0 milestone Sep 7, 2019
@quigleyj97 quigleyj97 added enhancement New feature or request and removed help wanted Extra attention is needed labels Nov 23, 2019
@quigleyj97 quigleyj97 self-assigned this Nov 23, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant