Doing The Same Thing In a Different Way


#1

Does anyone have any thoughts on duplication or partial-duplication of custom Axoloti object functionality in the Community Library?

I'm working on a set of LaunchPad integration objects, with functionality that partially duplicates that of @rbrt's LaunchPad objects. I'm taking a slightly different approach, but the basic concepts are the same, and I'm using parts of his code.

What are people's thoughts on how I should handle publishing these objects? Is the partial duplication a problem? Is it likely to cause confusion to users, and is this a problem, if so?

It also raises the question about attribution of code fragments. I try and give credit where due when I use parts of 3rd-party objects, both in comments in the code itself, and in object descriptions, but don't tend to do the same when using parts of factory content. What do other people do?

a|x


#2

i think you can avoid confusion if you clearly state why you duplicate the functionality/code. do you want to achieve another level of functionality not possible with rbrt objects? is it just an exercise for you? if everybody knows why it's duplicated, i see no problem.


#3

Hi @lokki,

Cool, sounds reasonable.

I'm adding new functionality, but removing some functionality in @rbrt's objects, so it's a slightly different take on the same kind of things.

It is partly an exercise, too, because I haven't written any Axoloti objects (or and C, for that matter) for a while.

Cool.

a|x


#4

I dont think it matters. You can mod it as you like and call it what you like, imo.

I think that people uploaded it to the community library, well knowing it is open source and everyone can change it, they have all ready given you the accept of changing it. IMO you can do ANYTHING to everything in the community library.. I think it is really that simple. If someone has something they dunt want to share, then dont put it in the community library.

Very simple :slight_smile:

If anyone puts something in the community library and then start complaining about other copying it.. That is just horrible, man. Havent seen it, luckily :slight_smile:


#5

I don't think it's quite as anything-goes as that, @jaffasplaffa.

You're right, though, people here generally seem to be cool with others using their code, which is great! If you wanted to protect your code, this probably isn't the platform you'd use, anyway. Unless of course, you just had your own offline library, but then you'd loose the benefit of the object browser.

Having said that, most custom plugins I've poked around inside don't seem especially well commented or clearly written, which is fair enough, but frustrating, for an untrained code-dabbler such as myself.

a|x


#6

Exactly! How would a person in their right mind upload anything to an open source community, that they want to keep protected? I would say that would be sawing off the branch you are sitting on. So definately NOT the right platform. The options is; dont put it in the community library.

Yeah, it is not very well documented. And I have run into many many hurdles, but seem to have gotten over the most for now. Only very few things I have not been able to get working yet.. For example the preset sequencer :slight_smile:


#7

I'm a bit obsessive about code-formatting and commenting :wink:

I tend to take the view (and I'm aware it's quite a hard-line one), that if you're going to share code publicly, that implies some obligation to make your code clear and easily-understandable.

I understand many would probably disagree with this, though.

a|x


#8

I don't see any issue with providing alternatives of either factory or community objects.

BUT,
I think if you release something that is based off another users work, you should acknowledge this in the objects description e.g.
based on factory:osc/sine by Johannes Taelmann

this serves two purposes:
i) respect/acknowledgement
users may have put a lot of effort into some objects, so acknowledge it...
e.g. id might upset if someone took my wavetable object, added a simple bypass flag, and then passed it off as their own work - in my mind it shows a lack of respect

ii) access to original
the user will know where its come from, and so be able to see if perhaps the original is closer to their needs.

these 2 goals are at the heart of open source initiatives too, its not really about 'protection' its about fostering a community, and not upsetting others.

if course there is some leeway here, if you are inspired by another object, or make huge changes/re-implement it, then of course at some point it becomes your own work...
(e.g. just because ive seen how the factory objects do interpolation, doesn't really mean i have to credit this on every object which uses it, does it?)

one last point, of course the issue with creating derivatives is over time they might diverge, or even converge... ideally in open source, this is handled by collaboration, this could be done here, by working with the original author (if they are interested)

as an interesting side note, ive always wondered, at some point, if some object may be moved into the factory, as they are 'core' , and how we would manage that ... of course it would be 'with consent' but raises some questions


#9

True. All good points, @thetechnobear. As I said, I do try and give credit, both in object descriptions, and in the code itself. Sometimes, I've used code fragments from all kinds of places, and it becomes impractical to document all the sources.

In this case, I've tried to redo @rbrt's objects, but implementing things in probably a more naive way, as I'm relatively unskilled in coding, so I try and do things in a way I understand, even if it's not necessarily the best way.

Over time, I'm finding my work is converging with his, as I add more features, ironically.

a|x


#10

...personally,I'm alright when I get credited..and I'm also happy if what I do inspires others :blush:
I do the same when I publish a mod of an object someone else did

usually,I add credits in the 'object overview' ,
but maybe it's actually better to add credits as comment directly in the code?


#11

I, personally, don't think its necessary for code fragments, unless its an entire algorithm.
its a judgement call, how much is your work vs. others?

better in overview, since part of the reason is to let non-coders know where the object has originated from, so they can refer to the origin if they wish - so should be somewhere visible in the object browser. hence object description.
( this is what i did for the mutable instruments object)

i guess, if you want to highlight where an algorithm was taken/used from elsewhere then might be worth adding more details in the actual code, as this is getting close to implementation documentation e.g. this algo originated from abc.com and modified for axoloti.

as a programmer, I really like it when i see other code/projects credited properly in someones project - it means if I want to go back and look at the code/algo in a different context i can do that too. (bonus points if they include a version number/date from then they 'forked' it :slight_smile: )

the other thing id recommend, is if you are creating variations of community objects, to talk to the original contributor first, a collaborative effort is often preferred to stop the proliferation of minor variations (which will become a headache if the original is later updated) ... if they incorporate your changes, then they can credit you :slight_smile:

anyway, as far as Ive noticed, the community seems to be doing this already ... so thats cool.


#12

Sorry, @rbrt, I feel like I've been talking about you behind your back. Sorry about that. I should have mentioned I was working on some variations on your objects before I brought your name into the discussion.

I'm more than happy to share my work, if you're interested. I'm also curious to know how you came up with particular parts of your implementation.

a|x


#13

Personally, I think it comes down to the individual doing the work.
@toneburst, you have clearly shown your moral interest to do what you think is right by the community, in my view, this is more than sufficient.
If you want to acknowledge the work that's already been done, do your best to represent it.
:grin: