EigenD - python plans

ok, so Ive given this a go a couple of times.

each time Ive done it ‘manually’

yes, Ive very aware of the conversion tools. however, Im very wary of using them.

the main issue is, its a LOT of code to convert, and if you run this over them.
you have no idea what it has done, it might then ‘compile’ , but have introduced thousands of small bugs.
this would not be so problematic, if it were not for the fact, that I dont know python, nor the python code in EigenD that well… and the EigenD codebase is very complex.
destabilising the code base like this is asking for a lot of grief.

GPT is similar issue, Ive been using GitHub co-pilot a lot recently, and whilst it sometimes be nothing short amazing, it also can produced absolute hot garbage.
worst still when it ‘fails’ , as above, it’ll produce code that compiles, but just just not do whats intended.

put another way… when coding, its much easier to write/debug your own code, rather than trying to fix code that someone else has written (esp. if you cannot ask them about it. and the latter is what you get when you use code converters or AI to do it.

tl;dr; Id not be surprised it something like 2to3 could do a conversion. ( * )
however, given my lack of python skills, id not be able to verify what its done.

so yeah, whilst as an outsider its tempting to say…
“here’s a tool that’ll do it for you, you can just quick do it”
in practice, as the one who would actually have to do it - I think it’ll not be the case, its still a whole ton of work, potentially more than DIY, and much less ‘controlled’.

so really my ‘manual approach’ has been not just about converting the code.
but rather, by doing so, trying to gain some more knowledge about the way python is used.
so that IF/WHEN it doesn’t work, Ive at least some ideas of where to look.

but yeah, either way its a herculean task, theres so much code, so many changes to make.
the worst part is I cannot really convert it one small bit at a time, test, rinse/repeat.
I have to do a lot of it all at once, which means testing/debugging later will be a nightmare.

so yeah… this is why I keep doing a bit, and then after a few weeks putting it back on the shelf.

I will say last time, I did this, I was very much aware this would happen again, and this time around took more notes, and starting document/coming on the effort
see : EigenD : upgrade to python 3

so whilst, I shelved (again) after a few weeks, at least if I want to pick it up again, Ive some idea of where I got to … so could restart a bit easier.

however , one issue is, frankly, my heart is not in it.
I do like EigenD, in particular I like Workbench… and also I totally recognise its flexibility, and also it has a huge functional scope.

but I really do not like it at a technical level…

  • reliance on Python and C++, makes it require a very unique skillset to work on.
  • complex codebase, thats undocumented ,
    the underlying c++ codebase is, imho, overly complex for what it actually does, and how people actually use eigend.
  • outdated build system, that is intrinsically linked to python
  • use of python libraries (for old ui’s) that are no longer maintained.
  • inconsistencies in app communication
    workbench, iOS app, python apps all use different inter app comms to talk to eigend

so unfortunately, this creates a nasty combination.
EigenD needs a huge amount of work to get it working with newer technologies (not just python), but its not something I really enjoy working on , or have a lot of faith in going forward.
this is why I keep picking it up and then dropping it.

I have a desire to get it updated, and working again, but then, due to amount of work involved, after a while think - why am I doing this?
(which is how I end up creating things like MEC/Meta Morph as ‘modern’ alternatives)

ho hum, perhaps I should dive back into the python conversion again.
but theres so many more interesting projects I have on my plate/horizon.


( * ) ok, even this might not be the case.
EigenD makes extensive use of python → C++ mappings, and also has a very particular threading model. in fact one issue Ive had in early testing, was down to different threading models of python 2 and 3, which is causing EigenD to hang during startup.

2 Likes