Following up on my previous post (in response to Dan and Sterling), Sterling and I had an interesting conversation regarding the rights and responsibilities of users and authors in OSS.
[15:13:03] <GeorgeS> I feel like writing 'the oss eula'
[15:13:23] <sterling> hehe :)
[15:13:40] <sterling> the only difference is i see no social contract
[15:13:56] <sterling> i don't owe the user diddly squat
[15:14:21] <sterling> the way i see it is you have to earn an equal part
[15:14:37] <sterling> for example, if you send me something - well, I know you, i like you, so I'll go ahead and look at
[15:14:40] <sterling> it
[15:14:48] <sterling> even if i am quite busy atm
[15:14:55] <sterling> but if its joe random user
[15:15:05] <sterling> i don't see that they have any rights to my time
[15:15:22] <sterling> unless I'm in a good mood, and I decide to help them
[15:15:51] <GeorgeS> well, I think if you have no plans to support your software you should either a) not release it or b) make it clear that it is 'abandonware'
[15:16:53] <GeorgeS> but I also get tired of uppity users.
[15:13:03] <GeorgeS> I feel like writing 'the oss eula'
[15:13:23] <sterling> hehe :)
[15:13:40] <sterling> the only difference is i see no social contract
[15:13:56] <sterling> i don't owe the user diddly squat
[15:14:21] <sterling> the way i see it is you have to earn an equal part
[15:14:37] <sterling> for example, if you send me something - well, I know you, i like you, so I'll go ahead and look at
[15:14:40] <sterling> it
[15:14:48] <sterling> even if i am quite busy atm
[15:14:55] <sterling> but if its joe random user
[15:15:05] <sterling> i don't see that they have any rights to my time
[15:15:22] <sterling> unless I'm in a good mood, and I decide to help them
[15:15:51] <GeorgeS> well, I think if you have no plans to support your software you should either a) not release it or b) make it clear that it is 'abandonware'
[15:16:53] <GeorgeS> but I also get tired of uppity users.
[15:16:59] <sterling> its not that
[15:17:04] <sterling> I'll support my software
[15:17:09] <sterling> but I'll do it on *my* time
[15:17:13] <sterling> not someone elses
[15:17:17] <GeorgeS> sure. of course.
[15:17:37] <GeorgeS> Thats sorta what the social contract says.
[15:17:42] <GeorgeS> at least my intention
[15:18:05] <sterling> ahh ok
[15:18:07] <GeorgeS> I agree to make my software work as it is 'supposed to'.
[15:18:27] <sterling> see, I just agree to make my software work for me
[15:18:32] <GeorgeS> :)
[15:18:34] <sterling> and if I have the time
[15:18:45] <sterling> then I'll make it work for other people too
[15:19:01] <sterling> but there are some periods of time
[15:19:08] <sterling> where I just can't do anything else but work
[15:19:25] <sterling> (or i don't want too)
[15:19:40] <sterling> i guess the difference is subtle
[15:19:45] <GeorgeS> yeah
[15:19:48] <sterling> and we might even mean the same thing
[15:19:55] <GeorgeS> I suspect so
[15:19:57] <sterling> what I object to is the *obligation*
[15:20:21] <sterling> my feeling is, "hey you're getting this for free, if you don't like it - don't use it."
[15:20:24] <GeorgeS> What I object to is the demand for personal service
[15:20:47] <GeorgeS> I'm fine with a general abstract obligation, just not one to any individual user
[15:20:47] <sterling> if it doesn't work the way you need it, change it, or use something else
[15:21:44] <GeorgeS> Sorta like the police. They are obliged to protect their community as a whole, but are not bound to protect any particular constituent.
[15:22:08] <GeorgeS> I've committed myself to making my software work, but not necessarily work for you.
[15:22:52] <sterling> yeah, but i see that more as a personal definition
[15:23:15] <sterling> a personal standard if you will
[15:23:19] <GeorgeS> sure, but it's _my_ personal definition
[15:23:19] <GeorgeS> :
[15:23:21] <GeorgeS> :)
[15:23:35] <sterling> right, but then how can you have an obligation
[15:23:49] <GeorgeS> how do you mean?
[15:24:05] <GeorgeS> I have an obligation to the community as a whole.
[15:24:05] <sterling> an obligation would imply to me
[15:24:20] <GeorgeS> Not to anyone in particular
[15:24:23] <sterling> that you have an obligation to your community to make it work to their personal definition of working
[15:24:34] <GeorgeS> no no no
[15:24:52] <GeorgeS> the obliogation is to the community to make the software run as I said it should run.
[15:25:19] <GeorgeS> Specific cases are easily exempted from this sort of general obligation.
[15:25:36] <sterling> but why are you obligated, is my question
[15:25:39] <GeorgeS> There is great precedence for this sort of abstract obligation.
[15:25:48] <sterling> in the commercial world i understand
[15:26:07] <GeorgeS> I obligated myself, by releasing a piece of software, saying it would do 'X', and encouraging people to use it.
[15:26:50] <sterling> I don't agree.
[15:26:54] <GeorgeS> thats why it's called a social contract. similar to the social contract we all enter into as part of a civilization.
[15:26:56] <sterling> users aren't doing you the service
[15:27:02] <sterling> you are doing *them* the service
[15:27:11] <GeorgeS> social contracts aren't necessarily about service
[15:27:20] <GeorgeS> they regulate the ays in which people interact
[15:27:27] <sterling> to me the whole point of open source is to shift that obligation
[15:27:32] <sterling> from the developer to the user
[15:27:45] <sterling> i actually had a discussion about this with sam ruby awhile ago
[15:27:47] <sterling> one sec
[15:27:52] <sterling> (weblog discussion)
[15:27:54] <GeorgeS> I think there's a slippery slope.
[15:28:28] <sterling> link
[15:30:41] <GeorgeS> which comments are yours?
[15:31:45] <sterling> click the link "responses"
[15:31:57] <sterling> 7th word
[15:32:31] <GeorgeS> ya
[15:33:00] <GeorgeS> I guess I disagree somewhat. I think if you want to dump code, thats cool - but you should say you're dumping it.
[15:33:23] <GeorgeS> Otherwise I think there's an implicit agreemnet to make it work at least as well as you said it did.
[15:33:57] <GeorgeS> you can always change it to be abandonware, if you decide that supporting it isnt something you want to do.
[15:34:34] <GeorgeS> This doesnt mean answering every users request. It may not even mean answering _any_ user requests. But it does mean that it should behave as expected.
[15:35:02] <GeorgeS> otherwise you're a liar. And we don't want to be liars, 'cause they are not good members of society.
[15:35:20] <sterling> well, right
[15:35:29] <sterling> but what i don't get is why I owe them?
[15:35:34] <GeorgeS> In that sense it has nothing to do with what the user is giving back to you. It means that we should all do the things we say we're going to do.
[15:35:36] <sterling> if i knew my users
[15:35:43] <sterling> like, for example, you
[15:35:51] <sterling> then i would feel a responsibility
[15:35:58] <sterling> but if its J. Random User
[15:36:02] <GeorgeS> thats my point about it being an obligation to the community and not any particular user.
[15:36:04] <sterling> why?
[15:36:19] <sterling> what is the community giving me
[15:36:25] <GeorgeS> because I'm your friend
[15:36:42] <sterling> right, which is why you'd get elevated support
[15:37:04] <GeorgeS> its not about what the community is giving you (capatilist swine). It's about the fact that you said you were giving something to the community. So it's about standing up to your word.
[15:37:31] <sterling> ahh
[15:37:37] <sterling> now I see where we differ
[15:37:41] <sterling> when i release software
[15:38:00] <sterling> i am saying "this works for me, in the way i use it, it might be interesting for you"
[15:38:16] <sterling> i am making no guarantees that it works for anyone else but me
[15:38:41] <sterling> if I do make such guarantees, than of course, I'll live up to them
[15:38:44] <sterling> or mark it otherwise
[15:38:58] <GeorgeS> which works fine if you post it on your blog. But when you include it as something that you know many people will use, (I think) you've implicitly agreed to make it work as you say it does.
[15:39:01] <sterling> but read some of the licenses more carefully :)
[15:39:31] <GeorgeS> it's not a license, it's a social contract - by nature ephemeral and prone to violation.
[15:40:07] <sterling> hrmm, it would be interesting to blog this ;-)
[15:40:37] <GeorgeS> all my code says that too ('if this breaks you can have both pieces'). But the intention, and what I feel is my obligation for offering up the software, is to make it work at least up to the level I said it would.
[15:40:52] <GeorgeS> I can c&p into my blog, if you don't mind.
[15:40:58] <sterling> yeah
[15:42:07] <sterling> well: yes and no. it depends how much importance you place on that contract
[15:43:25] <GeorgeS> I think that social contracts need to be honored for society to function.
[15:43:31] <sterling> i think that the relationship should be symbiotic
[15:43:45] <sterling> by using your software
[15:43:47] <GeorgeS> In a macro-sense, I agree.
[15:44:02] <sterling> i believe that the user also enters into that implicit social contract
[15:44:15] <sterling> when the source code is available, they become a partner
[15:44:16] <GeorgeS> I agree completely - they have many responsibilities.
[15:44:26] <GeorgeS> When they use it they become a partner, but yes.
[15:44:36] <sterling> as opposed to commercial development
[15:45:08] <sterling> if it doesn't work as you say it works, they have the toolkit
[15:45:34] <sterling> they have options: they can pay you, or they can fix it themselves
[15:45:49] <GeorgeS> Well, many users are not to the lvel of fixing their own software. I think the major responsibility of the user is in providing qa. If you cant take the time to generate a good bug-report and answer feedback, you don't deserve to get a fix.
[15:46:24] <sterling> again, that creates an unfair burden on the developer
[15:46:32] <GeorgeS> how so?
[15:46:48] <sterling> creating a reproducable test script
[15:46:54] <sterling> while it can take some time an effort
[15:47:07] <sterling> also might take a day or two to debug
[15:47:19] <GeorgeS> thats part of a 'good bug-report' afaiac
[15:47:49] <sterling> i mean: even with a good test script, core dump, etc.
[15:47:57] <sterling> it can take quite awhile to debug the software
[15:48:30] <GeorgeS> I think that if all PHP developers refused to maintain their code that PHP would die. s/PHP/any OSS profject/g
[15:49:11] <sterling> there it is. it wouldn't die
[15:49:16] <GeorgeS> If you aren't willing to maintain your code, you should label it as abandonware.
[15:49:20] <sterling> because developers and users share the same rights
[15:49:30] <sterling> the users *are* developers
[15:49:51] <GeorgeS> They are not developers of PHP though, they are developers with php (as the php-dev mantra goes)
[15:50:25] <GeorgeS> if they could all write their own embedded scripting language, everyone would have their own.
[15:50:45] <sterling> some have the technical skills
[15:50:55] <sterling> and if it was important to them, they could hire someone else
[15:51:03] <sterling> take ext/xslt for example
[15:51:11] <GeorgeS> they could. then it would be commercial software.
[15:51:11] <sterling> i said: "I'm not maintaining this shit anymore"
[15:51:11] <GeorgeS> ;)
[15:51:16] <GeorgeS> right.
[15:51:25] <sterling> after I said that
[15:51:31] <GeorgeS> I remember (and that's a responsible step, imho)
[15:51:34] <sterling> former users graduated to becoming developers
[15:51:46] <sterling> and the extension was given new life
[15:51:56] <sterling> the onus fell upon the users to maintain the extension
[15:52:00] <GeorgeS> sure, but you cant force that sort of role change on others.
[15:52:10] <sterling> i don't touch it anymore, but a group of former users have now become developers
[15:52:17] <sterling> i essentially did
[15:52:28] <sterling> i said, "it will die, or you will maintain it"
[15:52:39] <sterling> people needed it, so they went ahead and maintained it
[15:52:41] <GeorgeS> but I think if that happens universally the language would spiral down and die
[15:52:55] <sterling> not if its gained a critical mass
[15:53:25] <sterling> for example, if Zend was crashing for you
[15:53:36] <sterling> and Zeev and Andi said, "I'm not fixing it"
[15:53:39] <sterling> what would you do?
[15:53:47] <GeorgeS> But your proposition of no one having any reponsibility would mean a rapid deconstruction of that critical mass - as none of those people have a responsibility to maintain things either.
[15:53:52] <sterling> you'd dig through the Zend source, debug and fix the problem
[15:54:04] <GeorgeS> Sure. And that has been done.
[15:54:06] <sterling> no, i'm saying quite the opposite
[15:54:18] <sterling> I said: "everyone has equal responsibility"
[15:54:40] <sterling> i have no more, and no less responsibility than my users
[15:54:57] <sterling> unless, of course, i create such a systeem
[15:55:03] <sterling> s/systeem/system/
[15:55:36] <GeorgeS> I think you have more (again in the 'this is how a good society functions', not 'you are legally bound')
[15:56:17] <GeorgeS> When you create something, you have a responsibility to maintain it. Like creating a child. You cant just decide to leave it in a box because it's too much a hassle.
[15:56:37] <GeorgeS> Obviosuly software is different - and accordingly the social contract is much weaker.
[15:56:44] <GeorgeS> But it's still present.
[15:57:25] <sterling> the child analogy is bad
[15:57:35] <GeorgeS> I think it is weak, but not bad.
[15:57:42] <sterling> well it has too problems:
[15:57:50] <sterling> 1) The child is something that *needs* you
[15:58:09] <GeorgeS> the child needs people to survive, but not necessarily you
[15:58:10] <sterling> if you create a child, it has certain needs
[15:58:16] <GeorgeS> and adult will do.
[15:58:26] <sterling> well, right but it needs to consume resources
[15:58:38] <sterling> software has no such needs. and its not a person
[15:58:42] <GeorgeS> sure, and oss projects need labor and love to survive as well.
[15:58:47] <sterling> if it "dies," that's not a bad thing
[15:58:59] <sterling> right, but if a child dies due to neglect
[15:59:02] <sterling> that's a tragedy
[15:59:12] <sterling> if software dies, that isn't necessarily even a bad thing
[15:59:46] <GeorgeS> I think its a bad thing for software to die a stillborn death. That means that people wasted time and resources developing it.
[16:00:44] <sterling> well, some software should just die
[16:00:54] <sterling> for example, i wrote a rdbm awhile ago
[16:00:56] <GeorgeS> Obviously not as large a tragedy as a child, but like I said that is why (as I noted) the sc is weaker.
[16:01:01] <sterling> truly awful piece of crap
[16:01:05] <sterling> but it worked
[16:01:16] <sterling> it died a death a few years ago
[16:01:22] <sterling> because mysql was good enough for the job
[16:01:43] <sterling> 2) The child can have a negative effect on society if not properly raised
[16:01:53] <sterling> you make a child, and then let him loose on society at 14
[16:02:00] <sterling> watch out ;-)
[16:02:19] <sterling> with software, yes, shitty and insecure software reaks havoc
[16:02:27] <sterling> but you actively have to use such software
[16:02:42] <sterling> with a child, they'll do it even if you have nothing to do with the child
[16:03:33] <GeorgeS> well, you can become easily 'tied' to a bad piece of software.
[16:04:05] <sterling> but you can also easily fix it
[16:04:13] <sterling> quite a bit harder to fix a child :)
[16:04:39] <sterling> i think the main difference is if you create a child
[16:04:49] <GeorgeS> which is why the social contract is weaker. It can be very hard to decouple yourself from bad software though
[16:05:27] <GeorgeS> Imagine you have 1mm lines of php code and you realize that the language has become desuported because no one wants to support any of their code anymore. Now you need to switch to Perl. You're pretty well fucked.
[16:07:27] <GeorgeS> obviously no one 'has to' support their code. But mega-failures of large oss projects would destroy that society. It would restrict it's use to hobbyists. That is why these social contracts are important.
[16:08:23] <sterling> well
[16:08:26] <sterling> why are you fucked
[16:08:30] <sterling> if you've been using php
[16:08:34] <sterling> and the current version works
[16:08:41] <GeorgeS> maybe it doesn't
[16:08:42] <sterling> why not just stay with that current version
[16:08:50] <sterling> or use a heterogenous environment
[16:08:57] <sterling> well, then you have the source
[16:09:00] <GeorgeS> maybe when you need to use a feature that it says it supports but you never used you cant because it doesnt
[16:09:04] <sterling> you can fix that singular problem and move on
[16:09:39] <GeorgeS> I think many places don't have the resources to accomplish that.
[16:10:25] <GeorgeS> People turn to apache and php (and perl and python and [oss project x]) because they are well supported.
[16:10:49] <sterling> right. they've reached a critical mass
[16:11:07] <sterling> so it doesn't matter if their original authors (*cough* rasmus *cough*)
[16:11:13] <sterling> are actively developing it anymore
[16:11:34] <GeorgeS> yes. but there are still long-term developers who have provided smooth transition
[16:12:08] <sterling> again, a critical mass
[16:12:20] <GeorgeS> what you are proposing is an endorsement of the engine being open to whomever want to fuck with it, and no one ever maintaining their code. That would be chaos and would result in php being even worse than it is.
[16:12:28] <sterling> even if there is a social contract (which I'm still not sure on)
[16:12:31] <GeorgeS> that's different than a critical mass.
[16:12:44] <GeorgeS> that's a critical mass of core developers
[16:12:53] <GeorgeS> which is different than a critical mass of users.
[16:13:22] <sterling> well, say everyone on the core team
[16:13:27] <sterling> threw up their hands and said
[16:13:37] <sterling> "fuck this, I'm going to use asp.net, its good enough"
[16:13:50] <sterling> what do you think would happen?
[16:14:02] <sterling> (i refer to the project when I mean critical mass btw :)
[16:17:10] <GeorgeS> I think that either another team would pick it up (due to industry pressure since its in common use), or another commerical company would try and back it. But I think if that happened with any frequency at all, you would see the engine turned to spaghetti crap and the project would die.
[16:17:44] <GeorgeS> I think it could likely be a death knell though.
[16:23:10] <GeorgeS> Have you read the debian social contract?
[16:25:24] <sterling> yeah, but i need to refresh the memory
[16:26:51] <sterling> right
[16:26:57] <sterling> but the onus is always on the community
[16:27:18] <sterling> its the same concept of a democracy
[16:27:35] <sterling> we the people agree that if it breaks, we keep both halves
[16:31:36] <GeorgeS> actually the debian sc specifically states what the debian developer community promises its user community.
[16:32:31] <sterling> which is essentially "we will be open"
[16:33:28] <GeorgeS> and we will support our userbase (#4)
[16:38:00] <GeorgeS> As a side note, the idea of a social contract is entirely different than a warranty, as it speaks about intention, not about action. Which is how it is a general obligation and not one to particular users.
[16:38:42] <sterling> well look at what they promise
[16:39:09] <sterling> they don't promise to actually do anything
[16:39:19] <sterling> just that when they do things, they'll follow a certain method
[16:39:47] <GeorgeS> sure. Thats what a social contract is for. Thats why it's different than a warranty.
[16:39:52] <GeorgeS> It speaks to intentions.
[16:40:46] <sterling> not of obligations :)
[16:41:38] <GeorgeS> semantc difference. I've already said that the obligations are to the community and not to individuals.
[16:42:06] <GeorgeS> An abstarct obligation is little more than a formalized intention.