There are many computer programs I'd like to use and modify that do not exist. In this post, I put forth the idea of a (different?) kind of collaboration to achieve this that I've had for a while now.
Basically, the idea is to coordinate with a group where each person makes one program and when we are all done, the union contains many programs that each person wants.
Example: Say
Then if they all coordinate, they can get both wanted programs: Alice makes 1, Bob makes 2, Carol makes 3.
With more participants, everyone would get even more programs out of this by still making a single program each.
But before discussing advantages and disadvantages of that, let's look at other methods.
This works but each program takes months to years to make. And I only get one program "back" for each program written, namely itself. Of course, this gives a lot more control over all aspects of the program, user-facing and internal.
In some sense, I've already gone towards this direction by trying to increase program creation speed.
Another way is to start each program as an open source project and invite contributions. From what I've seen, this is more useful for maintance than program creation and the code is likely to receive random features to be merged in instead of the intended envisionned one. It also needs a pretty complete seed program to really get the ball rolling.
It may also be my own bias, not being interested in programs that are lists of features (especially of the data format and integration kind).
This still might be a good choice for later stages of the program's life.
Unfortunately, software engineers are quite expensive and even if the spec could be described flawlessly, I think people are much more motivated to work on something they want than for someone else's project. Would also need to know how to select candidates.
With all the source freely available out there and all the versions made available from their histories, some of the programs could already exist and I just haven't found them.
Finding is harder than it seems [1]. Google keywords are too weak for finding more conceptual programs. I don't even have a better idea than to search through documentation and comments.
This might as well be on the list of programs I want to exists and use.
This describes the basic trade system. It is refined a bit later but that's essentially it.
The advantages and disadvantages below here is going to be purely speculative. So, before talking about that, anyone wants try this on a smaller scale?
1-2 weeks projects should be a good fit to build some trust, I think. Accounting for wrong estimates, think of some project that can be completed in a weekend, that you want to use and that you're able to make in that time.
I still need to think of good projects for this scope. Lets say submission closes 2 weeks after at least 10 users submitted at least 3 projects each.
And some discussion of potential workarounds.
It may be a long time before there's enough people and projects to get even a single trade going. By that time, maybe the first few users could be inactive.
Maybe this needs to be bundled with a higher frequency activity.
Projects get cancelled or abandonned all the time. And there's no pressure to deliver. On the other hand, people might stick to these personal projects more. I don't know but as described, even a single cancellation.
We could use duplication to mitigate this, which cuts the benefits per person and leads to the next problem.
Maybe have some kind of "escrow" service that only releases programs if a good enough program is submitted? This whole thing would work much better if everything was open source though and that would kill any escrow attempt.
We can have different people separately try to create the same program and hope at least one succeeds. But knowing that someone else is working on a similar project might demotivate creators. As a result, maybe no copy of a program made, each thinking the other will succeed!
We could do some funny business where the program doens't disclose how many other are making the same program but I think for this kind of thing, it'd be really important for everyone in the group to be able to communicate honestly.
Projects aren't all of the same size. Maybe add weights to project? So everyone gets to make close to 1 (equivalent) project as much as possible?
Different people could also say how much they value each program on their list.
Working alone means getting less discussions, ideas and feedback. This could also be a good thing.
The same approach could be tweaked to get teams of two (or even more) but this would mean even more waiting time to get enough people interested in the same programs.
Actual programs wanted are likely not so simple as to get easy exact matches. In some cases, it might be possible to combine two specs into one program with all properties.
Like for duplication, the means extra work per program and less produced per person involved.
I think there's benefit in taking other's properties taken into account before starting instead of having it hacked on after the fact. Or even if its not included, at least make it less hard to add later on.
This is likely to make the matching process more complicated.
This thing also needs a better name. Programming trade (like art trade)? Software exchange (like gift exchange but you send the gift to everyone)? Program swap?
Pick some weekend projects you'd like to see made.
[1] Anecdotally, I was trying to find something similar to (actually weaker than) Squeak Smalltalk and didn't manage using only Google (without prior knowledge of the language or its name, of course). And the projects has been around long enough.
Posted on Apr 27, 2018