Git Product home page Git Product logo

morphir-scala's People

Contributors

adamgfraser avatar bouzomgi avatar damianreeves avatar dependabot[bot] avatar deusaquilus avatar dmitrykozinets avatar edwardpeters avatar finos-admin avatar haesu avatar justin-corn avatar michelchan avatar paul-folbrecht avatar renovate-bot avatar renovate[bot] avatar scala-steward avatar thejuanandonly99 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

morphir-scala's Issues

Create a Morphir Mill build integration plugin

Feature Request

Create a Morphir Mill plugin that is tasked with wrapping the morphir-elm CLI and will also support direct morphir-scala tasks/commands.

Description of Problem:

Morphir is capable of using its morphir-elm make, morphir-elm gen, and morphir-elm test commands to generate code and run tests.

We have a need to generate Morphir IR and use morphir-elm's code generation capability within Scala builds.

We should create a Mill plugin that allows us to accomplish this.

Potential Solutions:

While we can bootstrap this process by doing Mill specific file and process creation, it should be noted we will want to accomplish the same behavior for abt and scala-cli (and possibly Gradle).

Fix mill build warnings about deprecated usages.

Feature Request

Description of Problem:

Since upgrading to mill 0.11.x some used types are deprecated, address these deprecations.

[#0] [warn]     Jvm.runLocal("mdoc.Main", cp, dirParams)
[#0] [warn]     ^
[#0] [warn] /home/runner/work/morphir-scala/morphir-scala/project/modules/docs.sc:48:9: value Jvm in package modules is deprecated (since Mill 0.11.0-M9): use mill.util.Jvm
[#0] [warn]         Jvm.runLocal("mdoc.Main", cp, dirParams ++ Seq("--watch"))
[#0] [warn]         ^
[#0] [warn] /home/runner/work/morphir-scala/morphir-scala/project/modules/docs.sc:56:26: type Sources in package define is deprecated (since Mill after 0.11.0-M8): Use mill.define.Target instead.
[#0] [warn]   def docusaurusSources: Sources
[#0] [warn]                          ^
[#0] [warn] /home/runner/work/morphir-scala/morphir-scala/project/modules/docs.sc:57:22: type Sources in package define is deprecated (since Mill after 0.11.0-M8): Use mill.define.Target instead.
[#0] [warn]   def compiledMdocs: Sources
[#0] [warn]                      ^
[#0] [warn] /home/runner/work/morphir-scala/morphir-scala/project/modules/docs.sc:77:[19](https://github.com/finos/morphir-scala/actions/runs/5615735487/job/15216636429?pr=265#step:5:20): value Jvm in package modules is deprecated (since Mill 0.11.0-M9): use mill.util.Jvm
[#0] [warn]     val process = Jvm.spawnSubprocess(
[#0] [warn]                   ^
[#0] [warn] /home/runner/work/morphir-scala/morphir-scala/project/modules/docs.sc:153:14: value Jvm in package modules is deprecated (since Mill 0.11.0-M9): use mill.util.Jvm
[#0] [warn]     val p2 = Jvm.spawnSubprocess(
[#0] [warn]              ^
[#0] [warn] /home/runner/work/morphir-scala/morphir-scala/project/modules/docs.sc:169:5: value Jvm in package modules is deprecated (since Mill 0.11.0-M9): use mill.util.Jvm
[#0] [warn]     Jvm.runSubprocess(

Create a morphir-elm sbt plugin that is tasked with wrapping the morphir-elm CLI

Feature Request

Create a morphir-elm sbt plugin that is tasked with wrapping the morphir-elm CLI

Description of Problem:

Morphir is capable of using its morphir-elm make, morphir-elm gen, and morphir-elm test commands to generate code and run tests.

We have a need to generate Morphir IR and use morphir-elm's code generation capability within Scala builds.

We should create an SBT plugin that allows us to accomplish this.

Potential Solutions:

While we can bootstrap this process by doing SBT specific file and process creation, it should be noted we will want to accomplish the same behavior for Mill and scala-cli (and possibly Gradle).

Create setup functionality in `morphir-tools-launcher`

The morphir-tools-launcher should setup the morphir tooling, it should:

  • Acquire the Morphir CLI from Maven/Artifactory

Thinks to keep in mind:

  • Items should only be downloaded as needed
  • We should use a .morphir-version file to control which version of Morphir-cli is downloaded

Simplify/consolidate project structure

Feature Request

Simplify the project structure:

Description of Problem:

Today we have quite a few modules/projects, which is an artifact of how development has been done (trying some ideas, and wanting to not mix that with core Morphir, as well as previously having a Scala 3 compiler plugin as a goal while wanting to still Support Scala 2).

Today, it feels like there are a bit too many projects (at least for the core of what we are doing).

Potential Solutions:

Going to aim for something along the lines of the following:

.
└── morphir
    ├── build
    │   └── integration
    │       ├── mill
    │       └── sbt
    ├── interop
    │   ├── tapir
    │   ├── vulcan
    │   └── zio
    │       ├── json
    │       └── schema
    ├── knowledge
    ├── macros
    ├── main
    ├── testing
    └── web
        ├── client
        └── server

Let's discuss what we have here:

Here's as summary of the thinking here:

Project Description
morphir This project contains what you need to work with the Morphir data formats: IR & MDM (Morphir data model). It will also contain the implementation of the SDK and the runtime.
morphir/build/integration Projects contained in this folder house various build integrations morphir-scala intends on providing
morphir/interop Projects contained in this folder, are meant to house the different interop libraries we will provide with other libraries (i.e.): zio-json (for JSON), zio-schema, tapir (for API/OpenAPI), vulcan (for Avro), and others
knowledge An implementation of logic programming meant to eventually interop better with Morphir.
macros Macros needed to support the main morphir module.
main The main CLI that allows users to interact with Morphir.
testing Testing helpers used internally by the project
web/client Client-side code for the morphir develop/morphir live tooling you can run in the browser.

Make testing of evaluation easier by providing testing helpers that load up the IR from resource files and on disk.

Feature Request

Description of Problem:

...what problem are you trying to solve that the project doesn't currently solve?

...please resist the temptation to describe your request in terms of a solution. Job Story form ("When [triggering condition], I want to [motivation/goal], so I can [outcome].") can help ensure you're expressing a problem statement.

Potential Solutions:

...clearly and concisely describe what you want to happen. Add any considered drawbacks.

... if you've considered alternatives, clearly and concisely describe those too.

GitHub Actions are building too many times, try and optimize

Reduce Build Time, by eliminating unnecessary configuration builds.

Currently the GitHub actions builds the project more times than we actually need to.

Firstly:

  • ScalaNative and ScalaJS projects don't need to be checked as part of the JVM matrix (building and testing for JDK 11 and 17.

Secondly:

  • We should see if cache and reloading build artifacts would help

Create Morphir launcher script for Windows.

Create a Windows shell script that can acquire the "morphir launcher" from Maven and start it up with the appropriate Java options similar to maven-wrapper, gradle-wrapper, or millw.

Description of Problem:

There needs to be a way to actually acquire the morphir tooling.
Maven has a decent story around this where it uses the maven-wrapper as a means to use shell scripts to acquire the maven application.
Sbt also has an sbt-launcher which is a lightweight application which setups sbt for execution and pulls down the rest of "sbt proper".
We will use the morphir-tools-launcher jar as a lightweight tool for acquiring the morphir tooling and getting us started. This issue is around creating a shell script that can pull down the morphir-tools-launcher from a maven/ivy style repo like Maven Central or an internal Artifactory instance.

Provide URI/IRI for all Morphir SDK Types

Feature Request

Provide an IRI for each Morphir SDK Type

Description of Problem:

It will be simpler to attribute/annotate the Morphir IR in a meaningful way if we encode the attributes in a manner consistent with RDF we should provide an URI which describes each morphir SDK type that is rooted at: https://morphir.finos.org/shemas/sdk.

Potential Solutions:

We should provide these URIs/IRIs in both documentation and code form.

Create Morphir launcher script for bash.

Feature Request

Create a bash script that can acquire the "morphir launcher" from Maven and start it up with the appropriate Java options similar to maven-wrapper, gradle-wrapper, or millw.

Description of Problem:

There needs to be a way to actually acquire the morphir tooling.
Maven has a decent story around this where it uses the maven-wrapper as a means to use shell scripts to acquire the maven application.
Sbt also has an sbt-launcher which is a lightweight application which setups sbt for execution and pulls down the rest of "sbt proper".
We will use the morphir-tools-launcher jar as a lightweight tool for acquiring the morphir tooling and getting us started. This issue is around creating a shell script that can pull down the morphir-tools-launcher from a maven/ivy style repo like Maven Central or an internal Artifactory instance.

Provide URI/IRI for Morphir IR Nodes and types (i.e. such as Name and Path)

Feature Request

Provide an IRI for each Morphir IR Node

Description of Problem:

It will be simpler to attribute/annotate the Morphir IR in a meaningful way if we encode the attributes in a manner consistent with RDF we should provide an URI which describes each morphir SDK type that is rooted at: https://morphir.finos.org/shemas/ir.

Potential Solutions:

We should provide these URIs/IRIs in both documentation and code form.

Optimize Docusaurus build and serve

Feature Request

Description of Problem:

Running docusaurus build and serve using mill takes a long time to finish.

Potential Solutions:

...clearly and concisely describe what you want to happen. Add any considered drawbacks.

... if you've considered alternatives, clearly and concisely describe those too.

Move EvaluationLibrary's remaining functionality to Distribution (copying or removing platform-specific behavior)

Feature Request

EvaluationLibrary.scala, and its platform specific variants, should be removed. Loading distributions should be on the Distribution companion object.

Description of Problem:

This fils is old and vestigial. The core of its functionality was removed long ago, and it only endures because it implements the platform specific behavior needed to work around a js compatibility issue (which hopefully will cease to be a problem soon.)

Potential Solutions:

Remove EvaluationLibrary
Add loading code to Distribution
If ZIO does not have cross-compiling file support by the time this is done, include platform specific supertraits of Distribution

Create ZIO versions of the ZPure functions on MorphirRuntime

Feature Request

MorphirRuntime has a number of ZPure functions. In at least one upcoming case (unit testin'), these can only be called after the user has performed some side effecting operations to get the required inputs. It would be helpful to have ZIO versions as well to wrap this functionality, which is not something that fits into the model of ZPure

Description of Problem:

Very specifically, when calling runUnitTests, I should not have to provide the unit test framework IR myself; there should be at least one entry point that loads it for me.

Potential Solutions:

It should be fairly easy to add ZIO versions of these functions with support for file handling (esp. once cross-compiled file handling with js has been resolved)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.