Nothing Special   »   [go: up one dir, main page]

SoftwareBazaar

The Software Bazaar wiki was created 2005-01-10. Is the world ready?


On SharedAwarenessSystem, AlexSchroeder and BayleShanks wonder aloud why it seems so much fun to program for free, yet not so much fun to program for money.

What prevents programmers from having fun and getting paid for it ?

(1) could eventually be dealt with by commoditized financial derivatives designed to smooth earnings (a form of “job insurance”).

(2) could be helped by more organizations/corporations devoted to taking care of things like matching programmers up with jobs, and doing billing, helping with legal issues, etc (like http://asynchrony.com/; but they closed).

I’ve collected some other ideas for organizations, and a few similar organizations, at http://david.carybros.com/html/to_program.html#software_bazaar .

Should I move that list here ?

DavidCary 2004-02-27 02:09 UTC

Also, in this thread about the difference between coding for free vs. coding for money, I was prompted to think about the fact that when you code for money, you are at least sometimes more under the control at the whim of the demands of the people funding you. This can really work well if your goals are closely aligned. But a lot of the enjoyment can be lost when someone wants to you to solve a problem in a way that forces you to change the way that you normally solve these types of problems. It all seems so obvious in hindsight. Yet, it can be fairly difficult to see this when you are engaged in trying to earn a living coding the visions of other people.

RampTask

I would also write about the following:

  • “Ramped Tasks” vs.
  • “Step Tasks”

Ramped Tasks are those tasks that, if you turn the crank once, you get one crank’s worth of progress.

Step Tasks are those tasks that, if you turn the crank once, you didn’t get anywhere. You have to turn the crank 10 times in order to get anywhere.

I believe that we are rapidly turning tasks that were formerly step tasks into ramped tasks. This allows us to harness the efforts of hoards of people. I think we’ll have a better understanding of tasks and their nature and their interaction with motivation in the future. I think that successful business people all have a good understanding of these ideas, and I think that a good understanding of these ideas is rare.

How do these relate to the Software Bazaar?

The software bazaar is a strategy; It’s a strategy for taking advantage of people who have the same motive at the same time. This is a connection problem: Connecting people with related interests. See also HowProjectsFindEachOther.

We don’t want to waste energy, so we want to either focus all our energy on an achievable step, or, otherwise, place the energy into (generally less efficient) ramped tasks.

We need to study how a stepped task is turned into a ramped task.

I strongly believe that collecting the energies of people with shared interests can be made far more efficient. I don’t believe that this is hard to do. Just write communications software. Software that helps people communicate ideas, and software that helps people organize (SocialSoftware.)

(It seems like the only reasonable thing to believe, even though it’s weird, is that one day, almost all design and development will occur online, and that the Internet will be exceptionally well organized. Think tanks that cut themselves off from the Internet- i.e. just about any company, will have no chance to survive. Companies will only be robotic arms to the intelligence that is the Internet. In fact, if a computer-material robotic interface is developed, then, by these ideas, it would only make sense that it would literally be true.)

We’ll articulate all this. Diagram it. It’ll be beautiful.

Mrph… It’s late. I should go to sleep. :)

As to the decomposition of tasks, I think this shows where software engineering is going to head: A piece of software must be hackable – hackable enough for newcomers to solve small problems. This means that it must be easy to add small features to the tool. Make small tasks easy, make hard tasks possible.

  1. Incremental software design. This is part of Wiki:ExtremeProgramming – improving the software in daily chunks. If it doesn’t work by the time you go home, toss it.
  2. Write unit tests in order to fight bit-rot. Unit-tests will help you maintain faith in software that is extremely hackable and problably is hacked with all sorts of extensions and optional features. Unit-tests allow you to test features alone or together in a way that helps you understand how things work together – even if you haven’t looked at it for months.

The last point that needs to be made, but which I have a hard time making, is about enthusiasm and marketing. I’ll just defer to LionKimbro on that. ;)

The Wiki:IndexCard made spoken speeches and written text more easily “hackable” by one person (in that you could shuffle around the order of sentences, add new sentences, pull out sentences that don’t fit).

This “wiki” thing makes written text more easily “hackable” by a group of people.

The Wiki:ExtremeProgramming people have just about convinced me that (at least with writing English text, and writing software) there always is a way to do a little at a time (Wiki:TestDrivenDevelopment, Wiki:OperateInTenMinuteCycles).

But sometimes I’m stuck. The only way I can figure out to make things better is a step task – to rip up a bunch of stuff, shuffle everything around, and add a while pile of new stuff – and nothing makes sense until it’s all done.

When no one can figure out the “clever” way to make just a little bit of progress – even after a lot of thought – then I guess it’s better just to plow through and do it the hard way, rather than completely give up.

A couple thoughts:

  • Option: Take a project manager’s role. Clarify the desired outcome, write it up on a ProjectSheet. Share it with everybody you meet, asking for help, advice, ideas, contacts, referrals, etc.,.
  • Option: Make a super-primitive Wiki:SpikeSolution.

Or, just “run it,” like you said.

related

Some parts of this thread relocated to ProgrammingAtWorkIsLessFun, ProgrammerCommune, and HowProjectsFindEachOther. See also FiveMinuteImprovement .

discussion

I found something at ZhurnalWiki that may be relevant:

“three [things] that … lie behind all successful new ideas — and not just in the software realm. …
  • a boundless extensibility …
  • a solid foundation …
  • a culture of sharing …”

http://zhurnal.net/ww/zw?ParaMode

How can I encourage a culture of sharing in a software bazaar ?

How can I encourace a culture of sharing ? (In other places, but most obviously, in each wiki. CultureOfSharing?).

DavidCary

“Why does Open Source software exist? What kind of idiot does a whole crapload of work and then GIVES it away for FREE? Hello? McFly??” – Paul 2003-11-20 http://www.tyma.com/modules/news/article.php?storyid=20

If only we had a software bazaar with at least some of the projects using “the Street Performer Protocol”, it would help answer that question.

DavidCary

I don’t know. It’s a funny article, but it strikes me as a prime example of SuperFreudianism: The deepest conviction that, at base, everything is for ugly reasons. And the further conviction that: any suspicion of non-ugly reasons should be stricken from our black hearts.

But it’s a funny article, and I like it. :) It tells a lot of the underlying story of what goes on in a Free Software project.


In the current FSF newsletter there’s an interview with a volunteer who says that all the friends he got interested in Free Software got interested not because of the ability to modify the software, but because of the human aspect: The ability to actually get in touch with developers, to meet them on mailing lists and IRC channels.

Alex, could you give a URI for newsletter ? I poked around http://fsf.org/ for a few minutes, but I didn’t find it.

While browsing the original wiki today, I saw some quotes that looked relevant:

Take learning your craft seriously. Have a laboratory at home, where you can learn new concepts without impacting your work environment until the ideas are ripe. -- Wiki:ReinventingTheWheel

The Manager Pool by Wiki:DonOlson ISBN 0-201-72583-5 “What if--instead of a programmer pool--there were a manager pool, from which self-selected software developers chose the leader of their project? Would you be chosen? Can you lead developers to produce more creatively and proficiently?” -- Wiki:TheManagerPool

I think the FSF newsletter is only available in print for FSF members… :(

I am surprised. That doesn’t make sense to me. I expected FSF to realized the value of putting their point of view online. – DavidCary

Getting back to the idea of a SoftwareBazaar:

Moments ago I stumbled across

http://43things.com/ … I hope this be a larger part of doing things out in the open in order to get them done.” – http://thecrypto.org/

The “43things” web application helps connect

  • people who want to do something with
  • other people who want to do the same thing.

A Software Bazaar helps connect

  • people who want to do something with
  • people who can help them do it.

See the similarities?

(why doesn’t this timestamp work?)

(the timestamp didn’t work because you’re expected to just type the magic 7 characters: “bracket new colon colon bracket” [new::] . Then Oddmuse automagically fills in your name and the timestamp in exactly the right kind of format for it to recognize later. See DenotingAuthor for details.)

I’ve been thinking about how to get compensated for work (in any field actually) without resorting to artificial scarcity.

I believe the problem can be solved by allowing customers to do some of the “driving”.

Developers ask for money but give users little reason to pay: (The feature already exists, or I can get the developer to add/fix it through the email group.)

Users ask for support but give the developer no reason to work: (why pay into a slush-fund donation pot so the developer can continue working on his next idea - one which I may not even approve of? Even if I did approve I still wouldn’t need to pay (unless the work would stop altogether without my donation) since the course is already set, and I only need to wait for the next release.

Tie these together by creating a support system that allows a developer to sorts bug priority by funds committed.

Here’s a mock-up of the idea:

----------------------------------------------------------------
Some game the developer is about to abandon...
----------------------------------------------------------------
BUG#  TITLE                             COMMITTED  ACTION
1003  OpenGL not working on OSX         $103.50    [commit funds]
121   Ability to import QuakeII models  $ 50.00    [commit funds]
1056  Alt-TAB leaves game!              $ 20.50    [commit funds]
----------------------------------------------------------------

The committed funds are not delivered until the bug is closed by a majority of the committing users.

Not sure how to insure no cheating… Here are some ideas:

Each committing user has their own private-status for the bug which is used to ‘vote’ as to whether the qualifications were met.

When a developer releases the fixed version, the global status is set to ‘Fixed/Implemented’ and the private-status of each committing user is set to ‘Closed’ (this is to set a default value in case lazy users don’t close thier bugs).

Users rejecting the fix would mark their private-status as ‘Open’, hopefully with a written reason.

After some period of time (say one week) the bug software polls the private-status of all committing users. If a certain amount (say a simple majority) of those private-statuses are still ‘Closed’, then the funds are delivered to the developer.

While the developer is still free to work on his own priorities, at least he now knows what the customer wants, and may even get paid to do something he wanted to do anyway (being paid to do something he likes:).

With a little more thought this should also work for projects not even yet started. A little like http://www.rentacoder.com

PatrickAnderson

Interesting idea, PatrickAnderson. Looks like a good starting point.

Yes, the “cheating” (fraud) problem is a hard problem.

The current version of the software bazaar just ignores on this hard problem – currently everything is no-money-involved, or simple pointers to off-site web pages that discuss money. But I hope that an adequate solution to this problem will be devised and implemented in the next version. (Surely programmers that feel motivated by money should feel motivated to work on this problem). I don’t expect a perfect solution, because I don’t know of any company that has a perfect solution to fraud – not even financial companies that are far larger than my largest expectations for the future software bazaar.

I found the comments on “Ramped Tasks” and “Incremental software design” good to think about. It seems that open-source programmers, since (in the majority of cases) they’re not getting paid for it anyway, feel free to ask other programmers for help on little problems holding them up – or to release any forward progress they may have made, then forget about it and switch to some other project. While proprietary code programmers (in my admittedly very little experience) often keep banging their head against the wall for weeks, because (a) they realize asking other programmers to give them help for free (on this for-pay project) is just wrong, but (b) it’s too much hassle (trying to figure out a “fair” amount to pay other programmers, various legal issues involving employee benefits, NDAs, etc.) to pay other programmers for help, and (c) because it’s the problem they were paid to work on, they don’t feel free to stop with what they’ve done so far and work on some unrelated project.

I wouldn’t feel right about asking people to donate a year’s worth of time to some project – but I don’t mind asking people to donate 5 minutes worth of time, since I don’t mind giving a person 5 minutes of my time.

Will “incremental software development” let me break everything down to the “don’t mind donating” point? (Well, not me in every case – perhaps I can persuade other people to spend 5 minutes to read the preliminary specs and refine them into the first requests for code, detailed enough that each one would require only about 5 minutes coding) (everything – not just code, but also editing manuals, running the test-cases on various hardware, etc).


The Software Bazaar wiki has moved from http://oddwiki.taoriver.net/wiki.pl/SoftwareBazaar/HomePage (which unfortunately went offline, but fortunately the data has been recovered) to http://communitywiki.org/odd/SoftwareBazaar/HomePage .

Please update your links. – DavidCary


I love the idea of a SoftwareBazzar?! It feels related to the free software programmers coop we’re starting to organize here in portland. Interested in the coop so far are BrandonCsSanders (IBESI), EthanMcCutcheon? (grasscommons), LewisHoffman? (grasscommons), WardCunningham (eclipse foundation), RaymondKing? (snapnames, aboutus), Lion a bit, … others? I want to start a wiki for planning the coop and would like a good name for it. Name ideas?

I don’t like the name commune because I don’t want to actually live at it, just nearby. Not sure I like the term coop either. Bazaar is great.

re Why it’s more fun to program for free, take a look at Alfie Kohn’s review of research that suggest that extrinsic rewards can dampen people’s intrinsic interest in an activity - http://bookshelved.org/cgi-bin/wiki.pl?PunishedByRewards

Thank you JohnAbbe for telling me about this book – I’ll have to check it out. I have heard something like this before (from Richard Stallman? Eric S. Raymond ?), but it sounded so counter-intuitive that I’ve been looking for more evidence.

“building and delivering a social source commons aimed at addressing these needs could be the unifying vision that shifts the nonprofit technology sector into something more resembling an actual movement.” – from Three Pillars of Social Source by Jon Stahl

There’s a “nonprofit technology sector”? I had no idea. Is there a “nonprofit transportation sector”?

I don’t want to actually live at it, just nearby. Yes, sometimes I wish there were something like the “open kitchens” on some colleges (or the reference section of the library). But instead of using the ovens and utensils and dish washer and trading recipes there (or reading the encyclopedias and other non-check-out-able stuff there, using the comfy chairs), it would have a place for people to get together to pair-program and trade tips, and perhaps store some shared tools – say, huge white boards, recovery CDs with virus checkers, etc. Is that what BrandonCsSanders is trying to build with the free software programmers coop?

Some people seem to think Skype + a CollaborativeEditor would give many of the benefits of pair programming. Plus it allows me to pair with a much larger pool of programmers around the world, rather than limited to the programmers here in my city, making it far more likely to find someone to pair with when I suddenly feel the need to program at 11pm.

Wow, that’s freaky cool, and draws so close to (what we’re now calling) "Saturday House," just with a lot of machining tools, and less interpersonal interaction.

SamRose, I hope to get to what you posted waaaaay up there.


See also:

CategoryOrganizedSociety?

(CommunityWikiFooter)

Define external redirect: McFly LewisHoffman PortlandProgrammersCoop CategoryOrganizedSociety RaymondKing SoftwareBazzar EthanMcCutcheon CultureOfSharing

EditNearLinks: PatrickAnderson WardCunningham ZhurnalWiki

Languages: