Giter VIP home page Giter VIP logo

Comments (5)

maxime-esa avatar maxime-esa commented on July 30, 2024

Hi Alex,
Thanks, I will merge your contribution when you are done with it. Any idea how do deal with ASN1SCC and the antlr3 Python runtime?

It's difficult to use OG separately from TASTE as it requires a runtime to orchestrate multiple SDL processes (and manage the PIDs, the instance creations, the timers, the interfacing with other languages). What is your use case?

from opengeode.

asmodehn avatar asmodehn commented on July 30, 2024

Hi Maxime, and thanks for the quick answer.

Well, I keep switching between languages, as I usually don't find work that uses the esoteric ones that I enjoy.
Recently I want to dive again into erlang, and as SDL seems to be one of the ways to model software in erlang, I thought it would help me twist my brain the right way, after spending too long writing in imperative languages.

So my immediate usecase would be a SDL diagramming tools as such. Not a generic drawing tool though, as I expect it would help me "thinking" right, and prevent me from "thinking" wrong.

A second step might be some bidirectional direction with erlang code (generate code, or generate diagram from code...), but I'm not sure how far along this road I can travel... but the runtime already seems to match what SDL expects ?

Now for the technical bits :

  • antlr3 : it is a python package, and pip can install from a file, so I install it from requirements.txt (generated from requirements.in via pip-tools).
    Moving to antlr4 would help, since we have a pypi package for it https://pypi.org/project/antlr4-python3-runtime/

  • asn1scc : It is a more lowlevel package, made with quite different tech stack, and I m not sure how to deal with it just yet... But it is not needed for my first usecase however.
    Is there a way to make it optional ? is that even something worth considering for opengeode ?

The main challenge in my experience dealing with python packages and lowlevel requirements, is that the python world moves much faster, and the expectations of the python users, regarding the "best/easier/usual/proper way to do things" can change quite quickly.
On my side I don't have much idea how TASTE is handling things, and how it wants to evolve, so it might be tricky to keep compatibility with it.

For instance, here I expect dealing with a virtualenv specific to this repo, not the user's one... That is probably expected for my usecase (isolated from the system), but TASTE usecase probably requires access to some system utils and packages (which ones?).

I currently have opengeode starting and I can draw some diagrams, and now I have to learn how to use it to detect these deeper connections to system utils that I may have broken...

So I think if we can have some small issues here, showing how opengeode wants to evolve in TASTE, that would be helpful for newcomers like me, to take it one tiny step at a time. Or is there another issue tracker I can have a look at ?

Thanks for all the help and info you can provide.
Now, I think I ll spend a bit of time looking at asn1scc, to see what I can do with it...

Cheers, and thanks a lot for the work already done here !

from opengeode.

asmodehn avatar asmodehn commented on July 30, 2024

Useful references : https://packaging.python.org/en/latest/guides/

Quick Updates :

  • I do not like the idea of complicating things with asn1scc if it is not required to "use" opengeode, and it is completely different tech stack. Making it a option (automatically detected and enabled in the case of TASTE) seems best from my perspective.
  • dependencies available in pip should be installed via pip, so that opengeode itself can work out of the box after a pip install opengeode in any virtual environment.

Two questions are:

  • How do we expect the developer to manage the virtual environment ? Imho, the relevant options here are either manually, maybe helped with the Makefile, or via a tool (direnv comes to mind, there are probably others...)

  • How do we expect the developer to manage the list of dependencies ? Imho, the relevant options here are either manually pinning everything in requirements.txt, or via pip-tools. Other options seem over-engineered for the job.

Let me know what you think thanks !

from opengeode.

maxime-esa avatar maxime-esa commented on July 30, 2024

One comment on asn1scc: it is a strong dependency for opengeode. You can't make SDL models without ASN.1 data types. Therefore it cannot be made optional.
I think it is possible to package binaries as part of pip installs (e.g. PySide6 includes all the Qt libraries which are not in Python). But I never looked into how to do that.
Having the pip dependency list in requirements.txt is definitely a good idea.
For the rest I am not familiar with direnv and pip-tools ; if you think there is an added value, I won't object!

from opengeode.

asmodehn avatar asmodehn commented on July 30, 2024

After thinking about this a bit more, the bigger change I'd like to do is moving from a "user" virtual env to a "project" virtual env for opengeode, and all its development dependencies. This way cloning the repo and retrieving dependencies via pip will not impact the user environment. This way, we can leave that potentially unsafe steps to the "install" stage.

In project venv:

  • pip install -r requirements.txt
  • run as package python -m opengeode
  • install in venv pip install -e . and run opengeode
    This is all pure python and not impacting the machine it is running on, nor the user environment it is running as.

The opengeode pip package then becomes installable in any python virtual env, meaning user or system as well, if someone whishes so.

I m not sure how to articulate that with the makefile however... and I think direnv can help. However both tools are messing with the shell in different ways, so I guess we'll see if problems arise...

I ll make a PR to try things out and discuss it, but I think it ultimately comes down to how developers will use the repo...

from opengeode.

Related Issues (20)

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.