In a derivative from this thread and idea, I’d like to get some feedback on community tools/functions. I’ve developed a number of common structs and functions that I have planned on releasing but have not found a good way yet. I think it’d be nice to go and make these open-source, which would mean, some way for the community to edit them, and just as importantly, test and improve those changes. So, a couple questions:
Is there an interest in this? What are the odds you would use community-developed functions (in structs/classes/modules), for common tasks and tools (string ops, array ops, math ops, etc)? What are the odds you would contribute? What are the odds you’d test? What sort of infrastructure for all this would you suggest?
Ultimately I think a greater degree of code-sharing would be a great benefit, but I think the easiest way to start is with the most generic and widely used things. Thoughts?
I’d definitely be up for that. Even functions that handle existing ones faster or better (i’ve always wondered if the trade off of writing a better python function for max operations is lost in the comms server time).
We started a generic geometric calculations and functions thread over at cgtalk and it’s been a good (albeit simpler) resource.
The only generic one i’ve written is a getMode function for maxscript, but it’s been useful in a few instances.
I’d be behind this. It’s a great idea. If it was in a google code repository it would be easy to implement version control and do releases. I do a hell of a lot of work in javaScript. I’d be more than happy to share.
I as well think this is a good idea, my only concern here is how much do we really think can be put out there? Even the generalized libraries we write/maintain ourselves here at Volition, are pretty specific to our workflows and are generally written as a by-product of how our pipelines work. Granted there are some that could be generalized even more and others that already are, for instance our MaxScript Perforce library would be a good candidate.
If we were to do this, my recommendation would be that any code that is to be published should follow some set of coding standards and guidelines. Maybe also go through some scrutiny first.
I’m completely behind this, though as more of an observer. Being as I’ve done very little Maxscript and have been really trying to get going with it, it’d be great be able to poke around all the submissions and ask questions on the subjects directly.
I think this is a great idea. I have some thoughts on the subject, but I’ll have to wait until I get some time to really put them in order and write it out.
There will be a number of projects or sub-projects for the different languages (Python, MEL, MXS, HLSL, JavaScript, whatever else). Each project will have one or more project owners who will be responsible for managing the project- that is, promoting new versions, checking or assigning people to check code, etc. Anyone registered on the site will be able to check out and check in code (we’ll come up with some sort of password sent out upon registration), but it will need to be checked and signed off on by the project manager to be distributed. We’ll also need to come up with a minimum supported software version.
I’d like to come up with some way that the scripts could automatically get new versions- developers will need some sort of version control quite possibly, but end-users shouldn’t. Or we can just leave it up to the user to check for updates (possibly have a mailing list to facilitate this).
As far as what code there would actually be, here are a couple ideas (I can only really speak to MXS as that’s what I know…)
[ul]
[li]String Operations- I know both MEL and MXS are pretty weak in string ops and community scripts would help here, no sense in everyone writing their own.
[/li][li]Array Operations- Useful sorting algorithms and other functions
[/li][li].NET Operations- similar to the stdplugs/stdscripts .ms files for ListView and TreeView, there are lots of other things that can be done both for listview and treeview, and other common controls (datagrid?).
[/li][li]XML- There are a couple structs publicly available already, it would be nice to be able to expand upon these.
[/li][li]Perforce- Jason, the idea is tantalizing This would be a really nice thing to have, maybe one for Tortoise SVN as well.
[/li][li]Animation Ops- I know there are a number of useful and pretty common functions I use, I’m sure others have some as well. Things such as mirroring or aligning objects, deleting keys, traversing hierarchies, etc.
[/li][li]Geometric Operations- functions such as those from the thread about geometrical calculations at CGTalk.
[/li][/ul]
Would also need to decide on a license- I’d be a fan of releasing things right into the public domain, to get around any possible EULA issues our companies may have, but I’d like to hear thoughts as well.
With the growing list of scripting languages to cover, what about the idea of pseudo code version first. Say whenever a function is going to get added a pseudo code version is written. And then it gets translated into the appropriate syntax’s once the pseudo version gets approval.
This might add a bit of work but it does add a way of checking to see how up to date the various scripting languages are.
Also the more open the licence the better from my point of view. A GPL or even a LGPL (meaning you can use it but if you change it you should give the changes back) would be great.