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.

  1. Make a copy of current sprint backlog and name it current sprint + 1.
  2. Move all untouched stories into product backlog.
  3. Close current sprint: close all open tasks, delete tasks we did not work on, update clocks.
  4. Push commit and wait for builds. This ensures that if there are any failures you can fix them before the release tag.
  5. Tag commit and sign it with key.
  6. Push tag. You can generate new builds overnight.

Open new sprint

  1. Open new sprint, updating CMake version, README, GitHub. Build all and run tests (some will fail). This should all be in one commit.
  2. Create a demo. Publish it on youtube.
  3. Write up release notes, publish them in github.
  4. 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

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

Emacs 29.1 (Org mode 9.6.6)