so ya, winter break, I'll go insane without something to do.
I'v recently been exposed to a few projects and I've realized where I went wrong in a few places when I original designed the Plugin structure of ARC Welder. as the code base grows larger and gains what are effectively 100's of new plugin components I realize my original structure doesn't quite work for this much volume.
I'm restructuring the plugin system to more intelligently import plugins and make it easier to manage dependencies (I've already visited dependency hell 2-3 times on this project having to move things around and implement late binding code to get things to load.) and remove a lot of the need for boilerplate code
at the same time I've been wanting to move form python 2.7 to the python 3 branch, the new features, speed ect. are all going to be very welcome. sadly until just recently most of out libraries did not support python 3 so it wasn't an option till now. as a mater of fact one of the really important libs (Rabbyt, handles out high performance draw engine for the map and animation editor) was pretty much dead in regards to ever supporting python 3, and it's a C extension so It's not like I could just run the python 2to3 script and it would work.
That's why I spent 6 hours today porting it to use Cython instead of Pyrex (a now dead project that Cython was based on). I was successful and now have Rabbyt running in python 3
Another problem I'm having is that our layouts file is generated raw python, it is great and all as it works, but it makes it REALLY hard to edit it at all with out regenerating the entire file. Instead I'm planning on moving to XRC (an XML representation of the basic layouts). this should also mean I can compile the editor down to C++ is less than 3 hours (that layout file genrated a 100,000+ line c++ file that took forever to compile)
over the next 2 weeks or so I'm hoping to reactor Welder and port it to Python 3 and implement the use of XRC.
yes I suppose it is another delay in it's release but I can;t work with it in the current state and these changes will help me keep track of all the parts and pieces. it should make the project easier to maintain in the long run too.