Product Backlog
This document contains the product backlog for VisualOre.
Product Vision
Here we define what we consider to be the the vision for the product; what guides us when we think about the product and what can and cannot go into the product backlog.
Vision Statement
The vision for ORE Studio is to build on top of ORE with the aim of providing:
- a persistent database storage for all of its inputs and outputs;
- a graphical user interface both for data generation as well as data exploration;
- the ability to configure and orchestrate ORE execution.
Vision Quotes
People think focus means saying yes to the thing you've got to focus on. But that's not what it means at all. It means saying no to the hundred other good ideas that there are. You have to pick carefully. I'm actually as proud of the things we haven't done as the things I have done. Innovation is saying no to 1,000 things. – Steve Jobs
Release Checklist
Steps to create a new release.
Close previous sprint
To be done on the last Sunday of the sprint.
- Make a copy of current sprint backlog and name it current sprint + 1.
- Move all untouched stories into product backlog.
- Close current sprint: close all open tasks, delete tasks we did not work on, update clocks.
- Push commit and wait for builds. This ensures that if there are any failures you can fix them before the release tag.
- Tag commit and sign it with key.
- Push tag. You can generate new builds overnight.
Open new sprint
- Open new sprint, updating CMake version, README, GitHub. Build all and run tests (some will fail). This should all be in one commit.
- Create a demo. Publish it on youtube.
- Write up release notes, publish them in github.
- When tag build is finished, unpack and copy binaries into release, announce twitter and linked in.
Stories
Near
Stories we may get two in the next two or three sprints.
Far
Stories that we want to capture, but won't work on for a while.
LLM Integration code
LLMs can be useful when learning a new subject as they can provide additional context to the information displayed in the screen. For example, a user can ask the LLM to explain a graph or a table. It would probably be fairly straight forward to allow dumping some of the information in a format that is friendly to LLMs (.e.g./ PNG, Markdown, plain text) and then make an API call to a local or remote LLM. We could probably create a set of useful canned prompts (explain this report, explain this chart).
On a more blue skies approach, one could conceive asking the LLM for suggestions on how to act, on the basis of the analysis. This could result in suggestions for action the user could implement, or even on actions directly taken based on the LLM's suggestions. This is conceptually straightforward: the LLM could for example generate a well defined JSON with the proposed action, and the system would look for some predefined markers in the LLM output:
----- ACTION START <JSON> ----- ACTION END
The JSON payload would describe the action:
{ "action": "some_action_type", "key1": "value1", ....
A trivial lookup table could de-serialise the JSON and execute the action. All that is required is for the LLM to "learn" how to generate JSON compliant with the desired format, which should be quite straightforward (perhaps with the help of fine-tuning). Agents probably provide most of this infrastructure already. The key thing is to ensure all functionality in the core becomes UI agnostic such that one could bolt an NLP UI around it.
Links:
Support multiple ORE "toolchains" code
Much like with an IDE, where one can have multiple toolchains configured, we need to also support multiple versions of ORE. Unlike with IDEs, it may be desirable to run computations with more than one version of ORE for comparison purposes. This means we need a way to associate outputs with their ORE version. This approach does not necessarily fit the existing example code, because these have a single "output directory". However, we just need way to associate N toolchains with a given workspace or possibly component; when present, the output directory starts to reflect the toolchain configuration. For example, with CMake we use presets:
linux-clang-debug
linux-clang-release
linux-gcc-debug
linux-gcc-release
For ORE the only dimension under which variability is possible is the version. We can then have pricing engine configurations that are either the same, or possibly different:
- for a workspace;
- for a component;
- for a toolchain version.
Add faker support to model code
vcpkg will support faker soon:
When that is available, we should try to add support for it.
Base the compute approach on BOINC code
Copy the BOINC data model.
Links:
Create a set of fake currencies code
We need to create fake data so we can explore the problem domain. This is something to work on in the future. We can use LLMs to help with the fake data, where it makes sense.
Example:
Country code | Country name | Currency Code | Currency Number | Currency |
---|---|---|---|---|
AL | Aerilon | ALD | 10001 | Aerilonian Dollar |
AR | Arcturia | ARA | 10002 | Arcturian Arct |
BA | Balthoria | BAF | 10003 | Balthorian Florin |
BE | Belloria | BEB | 10004 | Bellorian Bell |
CA | Calandria | CAC | 10005 | Calandrian Crown |
CD | Caledonia | CDC | 10006 | Caledonian Caled |
DA | Daeloria | DAD | 10007 | Daelorian Dinar |
DE | Delvadia | DED | 10008 | Delvadian Delv |
ER | Eriador | ERE | 10009 | Eriadoran Euro |
ES | Esteria | ESE | 10010 | Esterian Est |
FE | Feloria | FEF | 10011 | Felorian Franc |
FN | Fendaria | FNF | 10012 | Fendarian Fen |
GA | Galdoria | GAG | 10013 | Galdorian Galleon |
GR | Grendoria | GRG | 10014 | Grendorian Grend |
HE | Helvetia | HEF | 10015 | Helvetian Franc |
HY | Hydronia | HYH | 10016 | Hydronian Hyd |
IR | Iridia | IRD | 10017 | Iridian Dollar |
IT | Ithaca | ITI | 10018 | Ithacan Ith |
JE | Jethro | JEJ | 10019 | Jethronian Jet |
JO | Jorvik | JOK | 10020 | Jorvikian Krona |
KA | Kaelor | KAK | 10021 | Kaelorian Krown |
KR | Krynn | KRK | 10022 | Krynnish Krynn |
LU | Luminia | LUL | 10023 | Luminian Lum |
LY | Lysandria | LYL | 10024 | Lysandrian Lira |
MA | Maldoria | MAM | 10025 | Maldorian Mal |
MR | Mariposa | MRP | 10026 | Mariposan Peso |
NE | Nektonia | NEN | 10027 | Nektonian Nek |
NT | Netharia | NTN | 10028 | Netharian Naira |
OR | Orinoco | ORB | 10029 | Orinocan Bolivar |
OL | Orlanthia | OLO | 10030 | Orlanthian Orl |
PA | Paldoria | PAP | 10031 | Paldorian Peso |
PY | Pyrrhia | PYP | 10032 | Pyrrhian Pyr |
QU | Quentaria | QUQ | 10033 | Quentarian Quen |
QN | Quinaria | QNQ | 10034 | Quinarian Quetzal |
RE | Rendellia | RER | 10035 | Rendellian Rend |
RI | Rivenia | RIR | 10036 | Rivenian Ruble |
SE | Serendia | SES | 10037 | Serendian Shilling |
SI | Sildoria | SIS | 10038 | Sildorian Sild |
TA | Tandor | TAT | 10039 | Tandorian Taka |
TE | Tenebria | TET | 10040 | Tenebrian Ten |
UL | Uldoria | ULU | 10041 | Uldorian Uld |
UT | Utopia | UTU | 10042 | Utopian Unit |
VA | Valoria | VAV | 10042 | Valorian Valt |
VL | Valtaria | VLV | 10043 | Valtarian Val |
WI | Wintervale | WIW | 10044 | Wintervalean Won |
WY | Wysteria | WYW | 10045 | Wysterian Wys |
XA | Xandria | XAX | 10046 | Xandrian Xan |
XE | Xenoria | XEX | 10047 | Xenorian Xen |
YS | Yslandia | YSY | 10048 | Yslandian Yen |
ZE | Zephyria | ZEZ | 10049 | Zephyrian Zephyr |
Previous: Agile |