You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by "J. Patrick Bedell" <jp...@infoeng.org> on 2005/12/11 04:51:57 UTC

Modification to subversion to support information currency issuance - feedback requested

Hello,

 	I'm sending in this email the modification that I have made to the 
subversion command-line client and libsvn_client (which I'm referring to 
as information currency svn or icsvn).  I haven't written any 
documentation, and the code might run the risk of creating a BFI (bad 
first impression :), but I'm sending it in hopes of getting feedback (and 
perhaps even cooperation :).

 	The functionality of the patch is to generate information currency 
from the changeset resulting from a source code commit.  The functionality 
is implemented by a modification to subversion/svn/commit-cmd.c that calls 
a function,  svn_client_issuance(), that is implemented in 
subversion/libsvn_client/issuance.c (a new file).  I've also modified 
configure.in to look for the LibXML and XMLSec libraries necessary to 
use the XML digital signature functionality that is required for the 
current implementation.  In order to enable the new functionality, pass 
the --enable-certification flag to configure.  You must have the file 
icsvn in your ~/.subversion directory (i.e. ~/.subversion/icsvn) for the 
issuance to proceed.  If that configuration file is absent, the issuance 
function quietly returns without processing the changeset.

 	Information currency is a generic term for economic instruments 
representing "something like" property titles for information, which can 
be traded between market participants to enable a new form of economic 
calculation and economic incentives for the creation and management of 
information.  I have implemented and released the Information Currency Web 
Services system, which accepts specific XML messages signed with an 
authorized key and returns economic instruments representing the 
information.  A description of the document formats and operations 
involved in information currency can be found at 
http://infoeng.sf.net/information-currency-rfc.txt, and the latest release 
of the ICWS server is at 
http://prdownloads.sf.net/infoeng/icws-0.1.9.1.tar.gz .

 	I describe a use case below... hopefully I won't take too much 
space in your mailbox with this email, and hopefully you'll forgive if I 
do. :)  Thanks for your work on subversion!

 	Patrick
 	jpb@infoeng.org


Description of information currency subversion usage follows:

   I make a modification to two files in my working copy directory, and 
then commit the changes.  The diff corresponding to the changeset is

-=-=-=-=-=-=- begin diff representation -=-=-=-=-=-=-=-

Index: testsource.c
===================================================================
--- testsource.c	(revision 89)
+++ testsource.c	(revision 90)
@@ -9,7 +9,7 @@
     ZRHauFMI vMI YhMIalR Mv Fg

  vmB Xm MFiXYVb YtVmiraXYmt? IvmfSL FpfYdaSFtX mV 'LYVV -fiE' DF fIFL
-uq XyqwcWh HeWhyEchy kqy fcepEh GhyuckcGaucqe Xhy Gqvvcu, qy fFqHEW
+This is the changed line in testsource.c.
  AawI sjgA tA wATmjsjAS?

    dJKqoh EhjZJnJEaZJmK Zm zhqJK MJZl 
Index: secondsrc.c
===================================================================
--- secondsrc.c	(revision 89)
+++ secondsrc.c	(revision 90)
@@ -75,7 +75,7 @@

  OVbvb avb XVb jSggaBhI QB jSggQX.j obvJSvgbh?

-GCdGx wqt MGn vMztath aYc Gnqau vMztath 
+This is the changed line in secondsrc.c.

  bnvJnv Cnvuhvyb DEn MnvDgugMaDghU hu DEn bhFvMn MhAn aUA DvaUbygDb
  xCENOy yI VOlCHy, AtlVt VxCayCE a UlOC EsCVlUlVaOOW UIx ytC
-=-=-=-=-=-=- end diff representation -=-=-=-=-=-=-=-

 	In order to produce a digest representation of each file's diff,
the text from the "---" indicating the original file up to the "Index:" 
line for the next file is digested, producing the Base64-encoded digest 
values 34oAHCDUEPpxVJ5K5wOwNsKvYCs= (for the testsource.c diff) and 
sMOF10K/VhyZZBXoMUyzjX9FrQA= (for the secondsrc.c diff).
 	These digest values are used to create the following rdf 
describing the patch:

<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" 
xmlns:in="http://infoeng.org/2005/10/infoeng#" 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description 
rdf:about="file:///opt/svn/testrepository/testsource.c?changeset=89">
<in:SHA1DigestValue>34oAHCDUEPpxVJ5K5wOwNsKvYCs=</in:SHA1DigestValue>
</rdf:Description>
<rdf:Description 
rdf:about="file:///opt/svn/testrepository/secondsrc.c?changeset=89">
<in:SHA1DigestValue>sMOF10K/VhyZZBXoMUyzjX9FrQA=</in:SHA1DigestValue>
</rdf:Description>
<rdf:Description rdf:about="file:///opt/svn/testrepository?changeset=89">
<dc:date>2005-12-11T03:21:55.946548Z</dc:date>
<dc:creator>jpb</dc:creator>
</rdf:Description>
</rdf:RDF>

 	This rdf is used as the underlier for an issuance request that is 
transmitted to https://leucine.infoeng.org:8443/icws/services/ICWS to 
generate the information currency series attached to this email as 
ics-VeXFK7 and series-info-VeXFK7.

 	The patch above and the source tree are simply for testing. 
However, if the source code corresponded to an economically important 
software system (such as subversion :), and the patch was an important 
addition to the source tree, individuals or organizations wishing to 
incentivize the improvement of that software could purchase the 
information currency corresponding to the patch.

Re: Modification to subversion to support information currency issuance - feedback requested

Posted by Jim Blandy <ji...@red-bean.com>.
Okay.  Thank you very much for answering my question, Patrick.

However, I'm not sure I should have asked it in this forum.  The
charter of this mailing list says that it is meant for discussions
about the development of Subversion; any discussion about information
currency itself would be off-topic.  I'm sure I'd learn something, but
this isn't the place for that to happen.

It seems to me that support for information currency per se doesn't
belong in Subversion itself.  However, if you could suggest
client-side hooks, controlled by the per-user and site configuration
files, that would allow you to implement information currency support
outside of Subversion, and allow your users to simply drop the right
magic into their configuration files, AND if those hooks were
sufficiently simple and well-defined to invite other sorts of uses,
then I think that's something we should look into.

It seems like the phrase "client-side hooks" comes up from time to
time, but I can't yet see common characteristics to the motivating
situations that would suggest a simple strategy for making everyone
happy.  Maybe we need to let the idea stew while a few more feature
suggestions come down the pike.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org


Re: Modification to subversion to support information currency issuance - feedback requested

Posted by "J. Patrick Bedell" <jp...@infoeng.org>.
Hello,
 	Thanks for your question.  You can think of information currency 
as similar to conventional stock certificates, only in this case 
representing arbitrary digital information instead of a business 
corporation and its assets.  This will enable new economic organization of 
software development and other actions based on information creation.

 	In the case of this modification, a set of exchangeable 
instruments are generated for each subversion changeset (if you have an 
information currency server to issue IC for you).  I implemented it 
directly into the client to facilitate the usage of information currency 
economics in software development, although I am trying to figure out the 
most convenient way to realize this functionality.

 	The simplest possibility for usage of information currency is to 
pay software developers by purchasing the information currency they 
generate by writing software.  To illustrate, in today's world, many (but 
not all :) software developers have jobs where they are compensated for 
writing software.  In the simplest case, a developer is today paid, for 
example, $2000/week for being an employee, and their future pay and 
continued employment are dependent on the quality of their work, 
determined after they are paid.

 	Using the information currency system implemented in this patch, a 
developer who generates 20 changesets per week and receives 10 information 
currency units for each changeset, could obtain compensation for their 
work instead by selling each information currency unit that they receive. 
An employer wishing to purchase the work of the developer could guarantee 
a selling price of $10 for each information currency unit, and thereby 
compensate the developer the same $2000 that they would be paid in a job. 
In addition to this floor price set by the employer, there is the 
possibility that, if the software developer created really amazing 
software, they would find buyers for their information currency that would 
pay more than the floor price paid by their primary employer.

 	In order to transfer an information currency unit, the holder 
sends the information currency unit to the recipient, who then exchanges 
the icu.  For example, if the developer who received the information 
currency series wished to transfer a unit for $10 (transferred by some 
means not addressed here), they would send the last unit in the series 
attached to the original email:
<icu xmlns="http://infoeng.org/2005/10/ic#">
<sid>https://leucine.infoeng.org:8443/icws/seriesInfo?seriesID=93cc9daca99e3a9a63393ff0fb8f67f58c51fbbb</sid>
<ci>h6aomjpWLf10v39rC3ICa7HfW3nVvx8Oq3iat7apN8kDX+tgBAPhD0ezAoXLUlLtY8bfm88EBv5A
UVsrjCrSD/zMbE035mYtpsyc2sR2LFIhrAN5Da/tET9IMbYnAGhOu+QKlc7Y5HfkD725cvDfbzpR
Tl7nfL1ueJaDVmT7Ego=</ci>
<sig>R3xv7HbU7opjAHTeVUWywp+3lpbM2A9hafBdtsiYcm9c0Q+aH42J0N73PuBAupzwr2LaUTdePKCi
wD3YcbLgV6O4Hnnw5Iv6k8HmqVnBCzmODDCSSPVVYmavqr8Xqz+r8YPc1Iau1012/Uefw6TdHKTs
wfJGjA1wc1mbC8SuGFPY0FuKKwgSML0YgCJbJAGnVNkf1R9eopknpJ0V4/DANqHT18GgvacQs1xq
jElf/yEFT8Bq/VxjE279YCKQyzaESs1pa1p0JPK+3ik+vKPn6q2dBXbmi8/wj3wZirKc0/RThhT2
wCH9obeW0blOZWbLjLmLIME2dlnakbRMbPGCrw==</sig>
</icu>

 	When the recipient receives this icu, they immediately exchange it 
with the server at leucine.infoeng.org:8443, which invalidates the old 
information currency unit that the sender and receiver both have, and 
replaces it in the information currency series with a new information 
currency unit that is sent directly to the recipient who has just 
exchanged the old icu.  The old ICU is invalidated, and the new ICU, which 
is valid and is held only by the recipient, is
<icu xmlns="http://infoeng.org/2005/10/ic#"> 
<sid>https://leucine.infoeng.org:8443/icws/seriesInfo?seriesID=93cc9daca99e3a9a63393ff0fb8f67f58c51fbbb</sid> 
<ci>JSnvfvyqg1Kd7uOTA+7yW1Ec7OiwCfcvz7zPsUf0M23FRnTz44zA1xZFgCN/JEE07OasrANnX43T 
ks4rH2xZ5YTmyEfmcxnbPs/YE6QwZmrf49Wac6R7RntcASr2/WIkHHK/8kgOmwjx+19H9x9i/B1C 
9Gr9XLk2+rnpYqI56IU=</ci> 
<sig>TnwABE3Muc4LV8QMBFahwiU0c13rPnjHfmEaujsQQ4VF/oRjGWHWK//1kMqt8pH0ZYfrSnczDzS7 
NRSQKRXFIaPViaNLZz+w8YgjXQZSY8zB9zFR/K3by6JMW7WrHD/ReqWdkHDxetM8+ddGLQ7TEsJm 
Iw2KhoRxB0xGcbfGLZoQAgnNW0PUnFsFk8SosfdRpxotXW8FbioDcWne9pX0Hm/+03i/oYNXI6Dg 
YpAGmnWDdS4KhwV1VXRb0oYhxGZX42IMPfnzqSXdhFO0jDAByU/3Z0d3/f53tqFFgo6N6PyZA0ax 
EYcbS043doB1cG15/tRSpoqxMN0ab3P0AGyXHA==</sig>
</icu>

 	To recap this transaction, the software developer has sold for $10 
one of the nine information currency units that they received for their 
software.  The old information currency unit that the software developer 
transferred is no longer valid, and they have received $10 (transferred by 
some other means).  The purchaser of the information currency has received 
an information currency unit representing the changeset in question, and 
has used their $10 to motivate the software developer to create a useful 
changeset.  Furthermore, the purchaser can potentially re-sell the new 
information currency unit at a profit, if the market demand is sufficient.

 	There is a similiarity between the models to be enabled by 
information currency and the stock options that are an important part of 
the compensation of many technology developers.  If my explanation in this 
email is not very understandable by a young child, I would only remind you 
that calculating the value of a stock option might not be understandable 
by a young child... however, it has been extremely important for a number 
of software developers who must choose how to spend their working life. ;)

 	Patrick
 	jpb@infoeng.org


On Sat, 10 Dec 2005, Jim Blandy wrote:

> Do you have any references you could post that explain what in the
> world information currency is, in terms that a young child could
> understand?  I've read the text at infoeng.org, and read the
> introduction of the draft RFC, and I'm afraid I still don't get it.
>
> I'm not sure why this functionality needs to be included directly in
> the Subversion client.
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Modification to subversion to support information currency issuance - feedback requested

Posted by Peter Samuelson <pe...@p12n.org>.
[Jim Blandy]
> I'm not sure why this functionality needs to be included directly in
> the Subversion client.

Yeah from the explanation given here, it looks to me as though this
should be implemented as a process similar to 'diffstat', to which you
can pipe the output of 'svn diff'.

Re: Modification to subversion to support information currency issuance - feedback requested

Posted by Jim Blandy <ji...@red-bean.com>.
Do you have any references you could post that explain what in the
world information currency is, in terms that a young child could
understand?  I've read the text at infoeng.org, and read the
introduction of the draft RFC, and I'm afraid I still don't get it.

I'm not sure why this functionality needs to be included directly in
the Subversion client.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org