Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Time bank use cases #74

Closed
fosterlynn opened this issue Jul 5, 2016 · 91 comments
Closed

Time bank use cases #74

fosterlynn opened this issue Jul 5, 2016 · 91 comments

Comments

@fosterlynn
Copy link
Contributor

Starting an issue so we can explore the use cases that time banks provide.

Ping @stevebosserman - let's figure out how best to do this.

@stevebosserman
Copy link

@fosterlynn
Thanks! I'll see if I can get my fellow timebank coordinator to register on GitHub and join our discussion on this issue. Meanwhile, I'll provide some background about how the timebank functions at this point and new territory (for us) we would like to explore. As I see it, value flows would be an integral part of this adventure.

@elf-pavlik
Copy link
Member

👍 time banks use cases

@stevebosserman to my understanding timebanks mostly work with services measured in hours, and don't manage material goods measured in liters, kilograms etc.

Does it work like mutual credit system, but using hours instead of credits? In that case sum of all accounts would always stay 0 (zero) and each account would have positive or negative number of hours. Sometimes accounts would have a limit on the negative side?

@stevebosserman
Copy link

@elf-pavlik:

@stevebosserman to my understanding timebanks mostly work with services measured in hours, and don't manage material goods measured in liters, kilograms etc.

Timebanks account for members' time spent in activities that can support production, service, or infrastructure. Timebanks in the US maintain a clear separation of time value from monetary value in order to avoid conflicts with federal and state tax agencies. For that reason, several of the use-cases I listed illustrate the distinction between time spent and associated costs for fixed and variable overhead.

Does it work like mutual credit system, but using hours instead of credits?

Yes. The value of time remains constant from one member to another irrespective of the activity and the degree of training and experience necessary to conduct it successfully. Other non-timebank systems may vary the multiplier of the credit based on role and qualifications or vary the value of the credit itself via market speculation.

In that case sum of all accounts would always stay 0 (zero) and each account would have positive or negative number of hours. Sometimes accounts would have a limit on the negative side?

Depends on the philosophy of the timebank. Some prefer to establish importance for the time credit by not allowing balances to run negative beyond a strict limit. This includes the timebank master account. Conversely, others prefer to minimize the importance of the time credit beyond documentation of time spent by a member in a specific activity. In this case, the timebank master account will perennially run negative as it "sponsors" activities deemed important for the timebank community,

Also, individual accounts can be allowed to run negative depending on circumstances. For instance, a time bank member who has a health issue needs help from other timebank members but has no opportunity to earn hours that can be credited to them for providing the needed service. The timebank will allow the account of the member needing help to go negative when crediting the accounts of those providing assistance.

@elf-pavlik
Copy link
Member

Thank you for explanations @stevebosserman !

Depends on the philosophy of the timebank. Some prefer to establish importance for the time credit by not allowing balances to run negative beyond a strict limit. This includes the timebank master account. Conversely, others prefer to minimize the importance of the time credit beyond documentation of time spent by a member in a specific activity. In this case, the timebank master account will perennially run negative as it "sponsors" activities deemed important for the timebank community,
Also, individual accounts can be allowed to run negative depending on circumstances.

Could you explain more the 'timebank master account'? Setup where sum of all the accounts always stays 0 makes a lot of sense to me, as mutual credit illustrated in https://youtu.be/TwmM5Nb6hiE?t=1h3m9s But that requires some accounts to go on minus for other to go on plus. Setup where sum of all accounts stays positive makes currently little less sense to me, I think services like https://timerepublik.com do it, they gave me +06:45h just for filling up profile, they also show banner "Help grow this amazing community, and earn 30 extra minutes for everyone who signs up.". Above makes me very skeptical about that service...

@stevebosserman
Copy link

@elf-pavlik:

Could you explain more the 'timebank master account'?

The moniker "master" is a misnomer so I'm dropping it. A better explanation is that the timebank has a membership account for itself so it can award and receive credits in exchanges with other members. This is important when a timebank first forms and new members have no credits with which to stimulate exchanges. In the case of CSTB, the timebank account credits members for joining, participating in monthly potlucks, helping with setup and cleanup at the potlucks, recruiting new members, etc. as a way to jumpstart their accounts so they can request services from others and credit them for delivery. And as you stated the timebank account goes negative when it transfers credits to the accounts of members, yet the sum of all accounts remains zero.

Setup where sum of all the accounts always stays 0 makes a lot of sense to me, as mutual credit illustrated in [The Money Fix-A Documentary for Monetary Reform]. But that requires some accounts to go on minus for other to go on plus. Setup where sum of all accounts stays positive makes currently little less sense to me, I think services like [TimeRepublik] do it, they gave me +06:45h just for filling up profile, they also show banner "Help grow this amazing community, and earn 30 extra minutes for everyone who signs up.". Above makes me very skeptical about that service.

I created an account at TimeRepublik and started following you. I'm skeptical as well, but maybe for a different reason. A strong sense of community and the trust it engenders among members is one of the foundation principles of timebanking. Members of local timebanks get to know and eventually trust one another. They can speak for the reputation of their fellow members who respond to requests posted by members of other timebanks that use the same global exchange platform. For example, CSTB is one of hundreds of timebanks in several countries that use the same Time and Talents platform provided by hOurworld. If a member of a timebank in the UK on the Time and Talents platform, posts an offer, I as a member of CSTB on the same platform can make a request for that person's offer and feel reasonably confident that they will deliver because we are both in the same system that honors the same principles and guidelines. It's no insurance policy, but it does start us on a higher level of trust than if that connection didn't exist.

Admittedly, I didn't dive very deeply into the details about TimeRepublik. In my initial scan, I don't yet see how one establishes a working trust with other TimeRepublik members when they are unknown and it is not immediately evident why the platform exists, how it works, and what one does to use it effectively. In contrast, you and I are building some measure of trust through our exchanges on the GitHub platform and the credibility of @bhaugen and @fosterlynn who "introduced" us through our mutual interest in a common topic. That's quite different than inviting one's friends to join a new platform like TimeRepublik where the principles behind it are not clear. But maybe they're there and I should look further. Thoughts?

@elf-pavlik
Copy link
Member

Much appreciated @stevebosserman 😺

I have one more question which maybe you could also address. I can quite easily see how time based accounting works for '1-on-1' services. But can also people use it in more complex services? For example

  • 1-on-many : a workshop where one mentor serves many students
  • many-on-1 : dental care where 2 doctors/nurses serve 1 patient
  • many-on-many : performance where a 8 people band serves 100 people crowd

BTW have you read by any chance book available online at http://peerconomy.org ? It describes concept of 'weighted labor model' I'll put a quote about it in #121

@stevebosserman
Copy link

stevebosserman commented Aug 13, 2016

@elf-pavlik:

I have one more question which maybe you could also address. I can quite easily see how time based accounting works for '1-on-1' services. But can also people use it in more complex services?

The short answer to your question is "Yes". One way I can illustrate how is by a screenshot of the CSTB webpage where one records an exchange (see below).

image

With the Time and Talents software, a timebank member may record hours provided or hours received. If provided, the member can state how many received the service. If received, the member can state how many provided it.

Applied to your examples, we have:

1-on-many: a workshop where one mentor serves many students

The workshop mentor would indicate the number of members in the session. Once done, a drop down list opens with blank fields to be filled in with the names of those members in attendance which correspond to the total entered in the previous field. Once the mentor fills in the "category" and "service" fields, the accounts for attendees are debited as "payment" and the mentor's account is credited for the time spent conducting the session.

If the timebank "sponsors" the session (examples include attendance at an orientation or a potluck), attendees have their accounts credited for time in attendance. The account for the mentor (or presenter) still receives credit for delivery. Also, the presenter / moderator can be credited for time spent preparing materials through a separate exchange.

many-on-1: dental care where 2 doctors/nurses serve 1 patient

The same report form noted above would be used. The patient would state that s/he received service from two members, give their names, fill-in the category and service, leave a comment (if desired), and record the transaction.

many-on-many: performance where a 8 people band serves 100 people crowd

In this case, each band member would need to submit an individual report to assure proper credit to his / her account. But in terms of audience, the same process applies as in the workshop example above. Bear in mind that the number of people in the audience that feature in this transaction are those who are members of the timebank AND whose names are listed in the drop down fields. So, let's say 100 people attend the concert, but only 40 of them are timebank members. The band members would enter "40" in the "To/from how many members?" field then, fill-in their names. If they only know 25 by name, they would have to adjust the number to correspond to the names of members they can remember. Conversely, each timebank member in attendance can fill out the form individually and state that s/he received the service of a 2-hour concert from 8 members of the band that performed. Of course, that would mean that each member would have to accept responsibility for reporting their attendance. Sometimes that could be a challenge!

I would like to experiment with how to apply the Time and Talents system to projects AND on-going operational processes. It may require significant recoding by the hOurworld software team that supports it to make it work, but it would be a conversation worth having with them. Stephen Beckett, the lead programmer, setup a separate timebank configuration on Time and Talents for folks like me to play with projects and processes. If you or anyone else reading this would like to play, too, just let me know and we'll get you started.

BTW have you read by any chance book available online at http://peerconomy.org ? It describes concept of 'weighted labor model' I'll put a quote about it in #121

I have not read the book, but it's now on my reading list - THANKS! I have some ideas about how to take advantage of the parallels between the peer economy behaviors and timebanking that I would like to explore. As I asked in my comment on #121, please let me know which "issue" to use.

@bhaugen
Copy link

bhaugen commented Aug 20, 2016

@stevebosserman forgive me if this has been asked and answered.

If I understand correctly, one of the principles of at least some time banks is "an hour is an hour". That is, everybody's hours have the same value.

How does a time bank deal with exchanges where the provider brings their own resources to the job in addition to their time? Like lawn mowing, where the mower brings their own equipment, or transportation of people and goods where the driver brings their own vehicle.

@stevebosserman
Copy link

@bhaugen when a timebank member offers a service that requires the use of equipment / tools and consumable materials to complete, the two parties agree beforehand about a cash payment for wear and tear, transporting, and operating the equipment as well as reimbursement for cost of materials in the job. So, in the case of lawn mowing where the member doing the work provides the mower, the two would agree on the cost of transporting the mower, gas to operate it, and any "depreciation" expense which seems fair. Upon completing the mowing job, the member would then get cash per the agreement and be credited for the time spent transporting the mower as well as mowing the yard. The same process would apply in the transportation service where there would be cash payment for gas and "overhead" plus credit for time spent.

@bhaugen
Copy link

bhaugen commented Aug 20, 2016

Thanks, Steve.

@fosterlynn
Copy link
Contributor Author

fosterlynn commented Nov 27, 2016

@stevebosserman hi!

I'm going to start working (off and on) on the timebank use case. But - we never got your use case work back over to valueflows! I found it in your repository. Do you know how to make a pull request? If not, let's figure it out together. Or, I'll just copy and paste..... :) (with your permission of course)

@fosterlynn
Copy link
Contributor Author

fosterlynn commented Nov 27, 2016

@stevebosserman could you also provide a print screen and/or some information on how the offer / request part works? I don't think I want to address the conversations and agreements right now, but I'm interested in what the offers / requests look like, and how the categorization and descriptions works. And how the offer/request part connects to the recording of the work - i.e. does anything get fulfilled, or marked as complete, or similar? Do you differentiate between one time intents and ongoing ones (like "I offer plumbing in general")?

@fosterlynn
Copy link
Contributor Author

The workshop mentor would indicate the number of members in the session. Once done, a drop down list opens with blank fields to be filled in with the names of those members in attendance which correspond to the total entered in the previous field. Once the mentor fills in the "category" and "service" fields, the accounts for attendees are debited as "payment" and the mentor's account is credited for the time spent conducting the session.

@stevebosserman In the cases where more than one member receives a service that took 2 hours, does the provider get 2 hours logged as a credit? Does each recipient get 2 hours logged as a debit? Or does the provider get 2 hours for each recipient?

And just a note.... no rush on all of this, even though I'm bombarding you with questions, I'm just starting to think about it....

@fosterlynn
Copy link
Contributor Author

@elf-pavlik here is a VERY preliminary attempt at thinking about the timebank use case. Understanding I don't know how the requests and offers really work, I'm sure there can be a lot more development there. Your skills work may apply.

You'll see I didn't really find a reason to record actual work. And that the structure of a transfer changed from our last conversation. So, all very much in process! It would be nice to see an actual data model of the app.

Intents

'@context': https://w3id.org/valueflows/v1
'@id': https://timebank.example/rf789f7f#offer
'@type': vf:Offer
'vf:category': http://www.productontology.org/id/Plumber
'vf:agent': https://timebank.example/Paul#agent
'@context': https://w3id.org/valueflows/v1
'@id': https://timebank.example/r456456f#request
'@type': vf:Request
'vf:category': http://www.productontology.org/id/Plumber
'vf:agent': https://timebank.example/Mary#agent

Resources before

'@context': https://w3id.org/valueflows/v1
'@id': https://timebank.example/d89ads#Mary-account
'@type': vf:Resource
'vf:category': http://www.productontology.org/id/Personal_account
'vf:quantity':
  '@type': qudt:QuantityValue
  'qudt:unit': unit:Hour
  'qudt:numericValue': 10
'vf:currentAgentResourceRelationship':
  - 'vf:relationshipType': Owner
    'vf:agent': https://timebank.example/Mary#agent
'@context': https://w3id.org/valueflows/v1
'@id': https://timebank.example/d88877#Paul-account
'@type': vf:Resource
'vf:category': http://www.productontology.org/id/Personal_account
'vf:quantity':
  '@type': qudt:QuantityValue
  'qudt:unit': unit:Hour
  'qudt:numericValue': -2
'vf:currentAgentResourceRelationship':
  - 'vf:relationshipType': Owner
    'vf:agent': https://timebank.example/Paul#agent

Recording the results

'@context': https://w3id.org/valueflows/v1
'@id': https://tiebank.example/818f30f4#transfer
'@type': vf:Transfer
'skos:note': simple timebank transfer
'vf:givetake':
  - '@id': '#give-1'
    '@type': vf:TransferEvent
    'vf:action': vf:give
    'vf:resource': https://timebank.example/d89ads#Mary-account
    'vf:eventQuantity':
      '@type': qudt:QuantityValue
      'qudt:unit': unit:Hour
      'qudt:numericValue': 4
    'vf:provider: https://timebank.example/Mary#agent
    'vf:request': https://timebank.example/r456456f#request
    'skos:note': 'Paul did a great job, I would recommend him.'
  - '@id': '#receive-1'
    '@type': vf:TransferEvent
    'vf:action': vf:receive
    'vf:resource': https://timebank.example/d88877#Paul-account
    'vf:eventQuantity':
      '@type': qudt:QuantityValue
      'qudt:unit': unit:Hour
      'qudt:numericValue': 4
    'vf:receiver: https://timebank.example/Paul#agent
    'vf:offer': https://timebank.example/rf789f7f#offer

Resources after

'@context': https://w3id.org/valueflows/v1
'@id': https://timebank.example/d89ads#Mary-account
'@type': vf:Resource
'vf:category': http://www.productontology.org/id/Personal_account
'vf:quantity':
  '@type': qudt:QuantityValue
  'qudt:unit': unit:Hour
  'qudt:numericValue': 6
'vf:currentAgentResourceRelationship':
  - 'vf:relationshipType': Owner
    'vf:agent': https://timebank.example/Mary#agent
'@context': https://w3id.org/valueflows/v1
'@id': https://timebank.example/d88877#Paul-account
'@type': vf:Resource
'vf:category': http://www.productontology.org/id/Personal_account
'vf:quantity':
  '@type': qudt:QuantityValue
  'qudt:unit': unit:Hour
  'qudt:numericValue': 2
'vf:currentAgentResourceRelationship':
  - 'vf:relationshipType': Owner
    'vf:agent': https://timebank.example/Paul#agent

@elf-pavlik
Copy link
Member

elf-pavlik commented Nov 29, 2016

'vf:quantity':
  '@type': qudt:QuantityValue
  'qudt:unit': unit:Hour
  'qudt:numericValue': -2

IMO unit should stay specific to a timebank, AFAIK one can NOT transfer hours between different timebanks, so for example:

'vf:quantity':
  '@type': qudt:QuantityValue
  'qudt:unit': https://timebank.example/units#Hour
  'qudt:numericValue': -2

Give & Take for Transfer still doesn't make sense to me, you can't have different quantities in Give & Take so no reason to specify it twice! We need to specify in unambiguous way who transfers what to who

'@context': https://w3id.org/valueflows/v1
'@id': https://tiebank.example/818f30f4#transfer
'@type': vf:Transfer
'skos:note': simple timebank transfer
'vf:offeredBy': https://timebank.example/Mary#agent # who
'vf:acceptedBy': https://timebank.example/Paul#agent # who
'vf:origin': https://timebank.example/d89ads#Mary-account # what
'vf:destination': https://timebank.example/d88877#Paul-account
'vf:transferredQuantity': # what
    '@type': qudt:QuantityValue
    'qudt:unit': https://timebank.example/units#Hour
    'qudt:numericValue': 4
'sec:signature': # proof
  - # Mary's signature (bank will not move funds without it!!!)
  - # Paul's signature

It still doesn't specify in explicit way that we transfer ownership, it seems implied so currently we can only use it to transfer ownership. Also since we want to have possibility to Transfer ownership of resources without them moving between 'stocks'. We possibly may want to have separate events to express the delivery of resource. In this case we have very simple delivery so for a person it may come easy to 'make sense' of it but even for all kinds of CurrencyResource we may need to handle various ways of 'shipping' it. To avoid modifying your snippets to much I just added vf:origin & vf:destination but possibly we should see such Transfer as permission for Paul to vf:issue transferred quantity from Mary's account and vf:receive it to his account. I added signatures so that Transfer looks more like a signed check - an agreement based on which Bank runs a process to move funds between accounts:

Transfer

an agreement between agent about ownership of particular resource

'@context': https://w3id.org/valueflows/v1
'@id': https://timebank.example/818f30f4#transfer
'@type': vf:Transfer
'skos:note': simple transfer of timebank hours
'vf:offeredBy': https://timebank.example/Mary#agent # who
'vf:acceptedBy': https://timebank.example/Paul#agent # who
'vf:resource': https://timebank.example/d89ads#Mary-account # what
'vf:transferredQuantity': #what
    '@type': qudt:QuantityValue
    'qudt:unit': https://timebank.example/units#Hour
    'qudt:numericValue': 4
'sec:signature':
  - # Mary's signature (bank will not move funds without it!!!) # proof
  - # Paul's signature

now Paul owns 4 timebank hours still deposited on Mary's account

Process (virtual)

executed by bank based on transfer agreement above

'@context': https://w3id.org/valueflows/v1
'@id': https://timebank.example/234824923#process
'@type': vf:Process
'skos:note': moving hours between accounts
'vf:io'
  - '@id' https://timebank.example/dfa98379h2#event
     'vf:action': vf:issue
     'vf:resource': https://timebank.example/d89ads#Mary-account
     'vf:affectedQuantity':
         '@type': qudt:QuantityValue
         'qudt:unit': https://timebank.example/units#Hour
         'qudt:numericValue': 4
  - '@id' https://timebank.example/fa98f7a986a#event
     'vf:action': vf:receive
     'vf:resource': https://timebank.example/d88877#Paul-account
     'vf:affectedQuantity':
         '@type': qudt:QuantityValue
         'qudt:unit': https://timebank.example/units#Hour
         'qudt:numericValue': 4

now Paul moved those 4 hours to his account

@bhaugen
Copy link

bhaugen commented Nov 29, 2016

just commenting on this assertion:

AFAIK one can NOT transfer hours between different timebanks

  1. This project is doing so now: https://www.community-exchange.org/
  2. That's where this initiative is going: http://creditcommons.net/

@elf-pavlik
Copy link
Member

elf-pavlik commented Nov 29, 2016

In this case:

  • 'qudt:unit': https://www.community-exchange.org/units#Hour
  • 'qudt:unit': http://creditcommons.net/units#Hour

I'd like to hear from @stevebosserman what kind of agreements between timebanks he would expect to participate in transferring hours between timebank he works on and other timebanks. And does it differ in any way from merging into a single timebank?

@stevebosserman
Copy link

stevebosserman commented Nov 29, 2016 via email

@fosterlynn
Copy link
Contributor Author

fosterlynn commented Nov 29, 2016

IMO unit should stay specific to a timebank, AFAIK one can NOT transfer hours between different timebanks,

I wasn't trying to make these from different timebanks, they are all in the context of the one timebank. Sorry the yaml wasn't clear. At the same time, there will be lots of units of measure that will be used across contexts, and "timebank-hours" are one. They are different from "hours" in my understanding. Will clarify in the yaml. As I see is clarified more in the further comments.

Give & Take for Transfer still doesn't make sense to me, you can't have different quantities in Give & Take so no reason to specify it twice! We need to specify in unambiguous way who transfers what to who

It will be interesting when Steve clarifies how the 1:m, m:m, and m:1 scenarios are handled.

But the reason I separated into 2 events is to keep the event model consistent: they affect one resource, and they include a quantity. Then they can be processed more easily. And then they form proper edges in a graph: Resource > Give > Transfer > Receive > Resource.

Also since we want to have possibility to Transfer ownership of resources without them moving between 'stocks'. We possibly may want to have separate events to express the delivery of resource.

Yes we still need this too. I'm good with separate events.

I'm toying with the idea of eliminating the "transfer" altogether, and making this some kind of "issue" and "receive" "process" with the transfer assumed, since the deed is done (accounts are incremented and decremented). [edit] I see this is exactly what you did with your Paul virtual move. Maybe then we don't need the transfer.

now Paul moved those 4 hours to his account

I don't want to complicate it more than it is. Paul can't "own" a part of Mary's account. And in fact, he doesn't do any "moving" of those timebank-hours. In Steve's screen shot, only one of them does anything. In the Madison timebank (different software), my understanding is that the one who received the help is the one who records it.

@fosterlynn
Copy link
Contributor Author

fosterlynn commented Nov 29, 2016

I would really appreciate you walking me through how to make a pull request so I am more confident with the process. But in the interest of expediency, if you would prefer to do a copy and paste, you have my permission to do so

@stevebosserman well, I don't know how to do the pull request from a fork, would have to look it up. So I may wimp out and do the copy paste...

[edit] And I hope you will feel comfortable just putting your use cases (etc) directly into VF. We do lots of things in process here. ☺️

@stevebosserman
Copy link

stevebosserman commented Nov 29, 2016 via email

@stevebosserman
Copy link

stevebosserman commented Nov 29, 2016 via email

@fosterlynn
Copy link
Contributor Author

There is a tutorial for timebank coordinators provided by the hOurworld staff that explains about how to use the platform. Would that be more useful?

@stevebosserman sure the tutorial would be great.

I guess I don't want to be a member since I don't want to offer my work in Ohio....

@fosterlynn
Copy link
Contributor Author

fosterlynn commented Nov 29, 2016

Can I delete the fork and do a pull request?

No, don't do that! You'll lose your use cases. I'll move them over later today...

@stevebosserman
Copy link

stevebosserman commented Nov 29, 2016

@fosterlynn asked:

Could you also provide a print screen and/or some information on how the offer / request part works? I don't think I want to address the conversations and agreements right now, but I'm interested in what the offers / requests look like, and how the categorization and descriptions works. And how the offer/request part connects to the recording of the work - i.e. does anything get fulfilled, or marked as complete, or similar? Do you differentiate between one time intents and ongoing ones (like "I offer plumbing in general")?

In the first part of my response, below are three screenshots - one for the menu to select from when adding an offer:
add to my offers

and one for what an offer looks like when posted:
posted offers

The posted offers are listed in a weekly email notification to all CSTB members and they are displayed on the CSTB home page under "New Requests & New Offers" as well as on the "All Offers" page, which is shown below:
all offers menu

The second part of my response concerns requests which mirror offers in many respects. In the sequence of screenshots below, the first one shows the menu to select from when making a request:
add to my requests

And the second one shows what a request looks like when posted:
posted requests

And like offers, requests are listed in the weekly email notification, show up on the home page when first posted, and are included in the "All Requests Menu" below:
all requests menu

Details for each offer or request entry vary according to what the member feels like including. But each will have basic information: name of the member with the request / offer linked to that person's profile as s/he created it (profile has contact information), approximate distance from the address for the member making the inquiry, and time left before the request / offer expires (some are set never to expire).

Again, the idea is that if one sees a potential match, one should initiate contact with the other party so that negotiation can ensue about expectations, time and timing, provision of necessary materials and tools, reimbursement for out-of-pocket expenses, etc.

@stevebosserman
Copy link

@fosterlynn asked:

In the cases where more than one member receives a service that took 2 hours, does the provider get 2 hours logged as a credit? Does each recipient get 2 hours logged as a debit? Or does the provider get 2 hours for each recipient?

This is not cut and dried, but negotiable. For instance, when CSTB offers its monthly Orientation Session for prospective members, the account for the presenter is credited one hour for time spent leading the session and another hour for onsite prep / cleanup before and after the session. The presenter would be credited for any additional time spent to prepare materials for the session. The time bank account would be debited for the total hours credited. Then, if an attendee joins the time bank afterward, that new member's account will be credited one hour for attending the Orientation Session and the time bank account will be debited one hour.

Now, let's say a CSTB member offers a workshop to other time bank members on how to do a fork or navigate through a pull request process on GitHub. The instructor would be eligible for credit to cover time spent preparing materials beforehand, managing logistics for securing the meeting space including setup and tear-down, and conducting the session. Since such a session would probably not be sponsored by the timebank, the total amount to be credited to the instructor's account would be divided into equal amounts among attendees and their accounts debited accordingly.

@stevebosserman
Copy link

@elf-pavlik asked:

I'd like to hear from @stevebosserman what kind of agreements between timebanks he would expect to participate in transferring hours between timebank he works on and other timebanks. And does it differ in any way from merging into a single timebank?

The hOurworld platform allows the exchange of hours between members of different time banks. This is particularly useful when members offer skills that can be easily delivered virtually (like Lynn conducting a seminar on how to use GitHub for members of multiple time banks in the hOurworld network) or when the product one member might make for another (say, a doily my mother-in-law crochets!) can be readily shipped at reasonable cost and the materials are relatively inexpensive. So, that's an effective process I can offer as an example.

A majority of exchanges among timebank members occur within the boundaries of a local community and are not conducive to more regional or global transactions. For that reason, it would be prudent to make sure the exchange / transaction functionality supports local activity, first, then scale it to cover a broader geography - preferably by treating timebanks as nodes in a larger, interconnected network - as a secondary measure. The other way around would not be attractive to those trying to work through localized resource constraints and people would vote it down with their feet.

@stevebosserman
Copy link

@fosterlynn observed:

In Steve's screen shot, only one of them does anything. In the Madison timebank (different software), my understanding is that the one who received the help is the one who records it.

Just to clarify, the protocol for who enters exchange information in the system as established by the Dane County Timebank (which uses Community Weaver by TimeBanks USA) is basically the same for the Care and Share Time Bank (CSTB) on hOurworld's Time and Talents platform. CSTB members can choose whether the receiver or the provider enters the information, although they are encouraged to have the receiver do it.

@fosterlynn
Copy link
Contributor Author

@stevebosserman another question: Is there always a request and an offer that get matched? Or if I'm looking for a plumber, could I just check the offers and contact one of them without posting my request?

@fosterlynn
Copy link
Contributor Author

fosterlynn commented Nov 29, 2016

Here is another version, with some additions and corrections, per @elf-pavlik and @stevebosserman comments.

Also,I'm trying out making the transfer a process with issue and receive. I'm not sure this totally sits right with me, as there was no actual change in the resource. But I like it better than a process plus a transfer, too complicated for what timebanks are recording. Also, with accounts tied to people, and with the issue and receive, there is no need to change any agent-resource-relationships, which is how we were thinking about transfers in the case of non-stock-type resources.

Intents

'@context': https://w3id.org/valueflows/v1
'@id': https://timebank.example/rf789f7f#offer
'@type': vf:Offer
'vf:category': http://www.productontology.org/id/Plumber
'vf:agent': https://timebank.example/Paul#agent
'@context': https://w3id.org/valueflows/v1
'@id': https://timebank.example/r456456f#request
'@type': vf:Request
'vf:category': http://www.productontology.org/id/Plumber
'vf:agent': https://timebank.example/Mary#agent
'vf:expiration': 2016/12/31

Resources before

'@context': https://w3id.org/valueflows/v1
'@id': https://timebank.example/d89ads#Mary-account
'@type': vf:Resource
'vf:category': http://www.productontology.org/id/Personal_account
'vf:quantity':
  '@type': qudt:QuantityValue
  'qudt:unit': https://timebank.example/units#TimebankHour
  'qudt:numericValue': 10
'vf:currentAgentResourceRelationship':
  - 'vf:relationshipType': Owner
    'vf:agent': https://timebank.example/Mary#agent
'@context': https://w3id.org/valueflows/v1
'@id': https://timebank.example/d88877#Paul-account
'@type': vf:Resource
'vf:category': http://www.productontology.org/id/Personal_account
'vf:quantity':
  '@type': qudt:QuantityValue
  'qudt:unit': https://timebank.example/units#TimebankHour
  'qudt:numericValue': -2
'vf:currentAgentResourceRelationship':
  - 'vf:relationshipType': Owner
    'vf:agent': https://timebank.example/Paul#agent

Recording the results

'@context': https://w3id.org/valueflows/v1
'@id': https://tiebank.example/818f30f4#process
'@type': vf:Process
'skos:note': moving hours between accounts
'vf:io':
  - '@id': '#issue-1'
    '@type': vf:IPOEvent
    'vf:action': vf:issue
    'vf:resource': https://timebank.example/d89ads#Mary-account
    'vf:eventQuantity':
      '@type': qudt:QuantityValue
      'qudt:unit': https://timebank.example/units#TimebankHour
      'qudt:numericValue': 4
    'vf:provider: https://timebank.example/Mary#agent
    'vf:request': https://timebank.example/r456456f#request
    'skos:note': 'Paul did a great job, I would recommend him.'
  - '@id': '#receive-1'
    '@type': vf:IPOEvent
    'vf:action': vf:receive
    'vf:resource': https://timebank.example/d88877#Paul-account
    'vf:eventQuantity':
      '@type': qudt:QuantityValue
      'qudt:unit': https://timebank.example/units#TimebankHour
      'qudt:numericValue': 4
    'vf:receiver: https://timebank.example/Paul#agent
    'vf:offer': https://timebank.example/rf789f7f#offer

Resources after

'@context': https://w3id.org/valueflows/v1
'@id': https://timebank.example/d89ads#Mary-account
'@type': vf:Resource
'vf:category': http://www.productontology.org/id/Personal_account
'vf:quantity':
  '@type': qudt:QuantityValue
  'qudt:unit': https://timebank.example/units#TimebankHour
  'qudt:numericValue': 6
'vf:currentAgentResourceRelationship':
  - 'vf:relationshipType': Owner
    'vf:agent': https://timebank.example/Mary#agent
'@context': https://w3id.org/valueflows/v1
'@id': https://timebank.example/d88877#Paul-account
'@type': vf:Resource
'vf:category': http://www.productontology.org/id/Personal_account
'vf:quantity':
  '@type': qudt:QuantityValue
  'qudt:unit': https://timebank.example/units#TimebankHour
  'qudt:numericValue': 2
'vf:currentAgentResourceRelationship':
  - 'vf:relationshipType': Owner
    'vf:agent': https://timebank.example/Paul#agent

@fosterlynn
Copy link
Contributor Author

Here is an attempt to map the @matslats web service to VF:

  • A currency ID if you are sharing a ledger (unit on the event)
  • A payer ID (id of the provider agent on the event)
  • A payee ID (id of the receiver agent on the event)
  • An amount, probably stored as an integer and interpreted elsewhere. (numbericValue on the event)
  • Timestamp for creation. (we don't have that - but could be a good idea)
  • Transaction workflow state (I think you have this as 'done' or 'pending', not sure how this maps in VF as we haven't done much work on the protocol side)

and then optionally

  • description, probably just one line is enough. (name on the intent?)
  • one or many categories, which probably relate to another resource. (categories on the intent)
  • Timestamp for last edited (we don't have that, but we could)
  • Transaction type (pertaining to workflow) (not sure what that one is)
  • Group id, if you want to group transactions together. (not familiar with the use case of grouping tx's)
  • Comments could be attached, but probably should be a separate resource. (note from the intent and/or event)

and not

  • Ratings - because we'll never agree on a data format.

👍 and also because it is a difficult topic; and easy to game;

@elf-pavlik
Copy link
Member

  • A currency ID if you are sharing a ledger (unit on the event)
  • A payer ID (id of the provider agent on the event)
  • A payee ID (id of the receiver agent on the event)

Why IDs of agents and not accounts? Does it make assumption that for each currency one agent has one account? agent 1:1 account (per currency)

@matslats
Copy link

matslats commented Mar 8, 2017 via email

@enricostano
Copy link

enricostano commented Mar 8, 2017

I don't think GitHub issue comments are the best place to work on a RFC (or any other standard document). I think we should do 2 things:

  • decide which entity / workflow we want to work on first (time transaction, etc)
  • someone should open a PR somewhere with a draft so everybody can comment and contribute

EDIT: as an example give a look at https://github.com/rust-lang/rfcs

@elf-pavlik
Copy link
Member

Thank your for your suggestion @enricostano W3C also uses https://github.com/w3c/ heavily for writing spec. For a while I think about after we release 0.1 to ask for feedback and contributions to VF on https://www.w3.org/community/economy/

In https://github.com/rdfjs/representation-task-force we just worked together on one Markdown file and as the work gets finalized now we will convert it to common format used by W3C specs - ReSpec.

One of the challenges I see with VF - we work on general model where credit currencies come as special case with mutual credit and timebanking coming as even more specific cases. At the same time I think we took quite a lot of time for the general part and we could collaborate together on RFC / spec more specific to transactions between accounts in timebanks & mutual credit systems. We could start dedicated repository for that and start gathering inputs from existing implementations. With https://www.timeoverflow.org, http://communityforge.net/ and https://hourworld.org we already have 3 implementations (2 opens source and one proprietary). We would just focus in that mini spec on how to describe various variants of mutual credit and timebank (eg. if it keeps sum of all balances 0 or not) and how to represent transactions between accounts and possibly 'credit exchanges' (eg. if we do 'home swap' with someone using https://www.homeexchange.com or sth. can we also swap some mutual currency credits or timebank hours without need to joining it as 'full member')
At the same time I think we should keep concerns of 'intent casting' / 'classified ads' and Exchange Protocos separate since for the same offers-requests agents can find matches using mutual credit / timebanks, ISO4217 currencies, Faircoin, Bitcoin, FooBarCoin, direct barter, multi party (network) barter etc. so 'open marketplaces' may stay agnostic to what currencies participants want to involve as options or or only exchange goods and services directly or as part of barter chains.

@fosterlynn
Copy link
Contributor Author

I don't think GitHub issue comments are the best place to work on a RFC (or any other standard document)

Thanks for the nudge @enricostano . Maybe that would help us get to agreement more quickly. :) Especially at this point where we have discussed a lot of concepts and a lot of use cases.

At the same time I think we took quite a lot of time for the general part and we could collaborate together on RFC / spec more specific to transactions between accounts in timebanks & mutual credit systems.

I would welcome a focused effort on timebanks and mutual credit, as I could use something like that for work starting for the Mutual Aid Network in Madison.

@elf-pavlik 's description of the situation is helpful though, because it is a minimal vocabulary intended to cover a lot of territory - part of the elegance of the model. But at the same time, we have very much appreciated particular use cases as an essential tool to get there.

At the same time I think we should keep concerns of 'intent casting' / 'classified ads' and Exchange Protocos separate since for the same offers-requests agents can find matches using mutual credit / timebanks, ISO4217 currencies, Faircoin, Bitcoin,

I don't know, that is a big part of the flow in a timebank, and many times that is not true, the intent is cast just within the trusted group based on that agreement. It will be just one particularity of Intent.

@elf-pavlik
Copy link
Member

I don't know, that is a big part of the flow in a timebank, and many times that is not true, the intent is cast just within the trusted group based on that agreement. It will be just one particularity of Intent.

In some cases people may choose to run tightly coupled together 'marketplace' and timebanking or mutual credit system. In other cases people may choose to have them loosely coupled, in other cases both 'integrations' will coexist together. If we make sure to keep those concerns decoupled, it will allow to combine them in different ways depending requirements of a different use cases. For that reason I suggest to focus just one the operations on accounts as distinct concern, while keeping it composable with other concerns in VF ecosystem (composable but not tightly coupled).

@fosterlynn
Copy link
Contributor Author

If we make sure to keep those concerns decoupled, it will allow to combine them in different ways depending requirements of a different use cases. For that reason I suggest to focus just one the operations on accounts as distinct concern, while keeping it composable with other concerns in VF ecosystem (composable but not tightly coupled).

Yes, completely agree on not tightly coupling, we can keep that in mind. I would like to see the relationship between the credit moving event and the intent that eventually resulted in that, however.

@matslats
Copy link

matslats commented Mar 9, 2017 via email

@fosterlynn
Copy link
Contributor Author

@matslats thanks!

Value flows might be a sort of container for the mutual credit system, insofar as you want property represented on the ledger.

VF can definitely be a sort of container for the mutual credit system. I am very confident that VF can represent what you have been doing in this domain, although as we have discussed elsewhere, it will be more generalized, and more normalized / less flattened out. There is a mutual credit issue here valueflows/exchange#33 to make sure this happens.

To clarify, in terms of "property", we want to support coordinating the production/creation of things and services, in addition to exchanging them and accounting for them. In other words, the whole (solidarity) economy in a connected ecosystem. So all "resources" that are useful and part of that, we want to represent, as well as their life cycle.

@fosterlynn
Copy link
Contributor Author

Separation of accounting and intent-casting, and rejoining at the user- experience level. I guess that's what we mean by loosely coupled

Concretely, I picture a data reference from the credit transaction to the intent that eventually led to it. (If it is available, of course.) Then people can tell what the movement of credits was about. So I picture them easily de-couple-able, having their own identity and properties, but also connectable. This gives a lot more information to the community on what it is doing for each other economically, what else might be needed, etc. (This is the direction the MAN in Madison wants to go with this info.)

@bhaugen
Copy link

bhaugen commented Mar 9, 2017

@matslats you wrote upthread:

  • Mutual credit should be the starting point, and I can show how that
    works for everything we need.

That would be really interesting. I have read a lot of your mutual credit writings, but have not read anything about how mutual credit would work for production. We touched on that lightly in a conversation with Stephanie of the Mutual Aid Networks, and I have been thinking about whether mutual credit would work for Peerconomy. I mean, if everything in a community economy runs on mutual credit, would that essentially be the same as Peerconomy?

(Hmmm, I should ask @ChristianSi what he thinks about that...)

@matslats
Copy link

matslats commented Mar 9, 2017 via email

@bhaugen
Copy link

bhaugen commented Mar 9, 2017

The link there doesn't say much about what peerconomy is

There's a book:
http://peerconomy.org/wiki/Main_Page#The_Book

But don't feel obligated to read it now. I've read it and will go thru it again and write up how I think mutual credit might fit. Or maybe I was dreaming and it won't...

@elf-pavlik
Copy link
Member

elf-pavlik commented Mar 9, 2017

Separation of accounting and intent-casting, and rejoining at the user- experience level. I guess that's what we mean by loosely coupled

As an example, while some particular mutual credit instance can have some 'default' online marketplace for casting all kinds of intents. At the same time more specific marketplaces, like https://openfoodnetwork.org/ can just configure that mutual credit instance as one of its 'payment processors'. So if someone selects food product offered in exchange for that mutual credit units, OFN instance will allow to make payment using that mutual credit instance.
People should have full freedom to what web marketplace services they use to cast their intents and which currencies they can involve in exchanges that fulfill their intents. Of course any web marketplace service can allow/disallow any currency or focus just on some specific category of intents (like OFN - food).

Once we deploy OFN .mx instance I will also connect more with people working on local currencies in and around Mexico City and work with them in enabling those currencies on local OFN instance. Later in the future, food producers and processors can cast intents for work they need help with and in addition to mutual credit, also support barter (food for work) and timebank hours (maybe one day also more peereconomy style arrangements). To compose such deployments with many complementary currencies (and direct barter) I see need of keeping all those currencies loosely coupled and having possibly to deploy them as web services interoperating with other web services (like web marketplaces where people can cast intents and do Conversation for Action)

@fosterlynn
Copy link
Contributor Author

@elf-pavlik that is also a good point, and maybe where @matslats was going in terms of decoupling, I don't know. Intent-casting is a different function, and could be done across many settings.

@matslats
Copy link

matslats commented Mar 10, 2017 via email

@bhaugen
Copy link

bhaugen commented Mar 10, 2017

@matslats

If somebody wants to build it, I've written function requirements for a
mutual credit REST accounting service

Passed on to the scuttleverse:
https://viewer.scuttlebot.io/%25%2F4DahnKDhVioNV4oaDdcUqpPCUYd98eCxsBldlHXEXE%3D.sha256

@cel is working on it:
https://git.scuttlebot.io/%25S2HuUuDNIYnmNAK%2FcNmnhSzhrALoeBEXY4BJwOBTz9s%3D.sha256

@matslats
Copy link

That does indeed look close, yes. Is it NoSQL and wouldn't that cause performance problems? Are there any restrictions or wierdnesses that come from scuttlebot as a context?

@elf-pavlik
Copy link
Member

Is it NoSQL and wouldn't that cause performance problems?

Not sure if I understand why you refer to NoSQL. Whatever persistence solution particular web service uses it should stay as its internal implementation detail. For the Web API only the public interface matters and here I would suggest to pay attention to https://www.w3.org/TR/webarch/

@matslats
Copy link

matslats commented Mar 11, 2017 via email

@bhaugen
Copy link

bhaugen commented Mar 11, 2017

That does indeed look close, yes.

Will have some logical resemblance anyway.

Is it NoSQL and wouldn't that cause performance problems?

Yes.

Are there any restrictions or wierdnesses that come from scuttlebot as a context?

Yes. More below.

Or maybe I should regard this project as a prototype?

Yes. Actually, more of an experiment.

Maybe its only a couple of days work for him?

I don't know how serious he and the scuttlers are about this.

Maybe he's not even building it with me in mind?

Only partly. Definitely not your large use cases. This gang loves to do experiments. They have been talking a lot about economic relationships, and mutual credit plus your credit commons writings has part part of the conversation (brought in by me), which they like a lot. They also have several worker coops in the scuttleverse.

The sbot "database" is a merkle tree that each node keeps for themselves. It's an append-only log. There is no global/central db, it's all radically decentralized, which is one of their main focuses, along with privacy.

Each node keeps copies of all of the messages they have exchanged with all of the nodes they follow, and all of the messages that all of their followers keep. That's the distributed gossip base.

So for mutual credit, there would be no global shared ledger. Just each node's transactions with other nodes.

They can also have "pubs", which are nodes where many other nodes congregate. The pub would have a log of all transactions among pub members. And they are figuring out how to do groups. So those could be the "community" nodes where a shared ledger could exist.

I hope that all makes sense. I'll ping @cel and see if he wants to say more.

@clehner
Copy link

clehner commented Mar 11, 2017

cel from ssb here. i started on that implementation independent of reading the Functional-Requirements document, but informed by the credit commons documents, and some issue threads here. ssb-mutual is intended for use with ssb networks. whether it will be useful in a broader context, aside from API inspiration, i expect will become apparent as we gain experience using it.

@matslats you are right about the performance issue. this can be optimized by implementing a materialized view for balances.

i am also interested in the next paradigm - perhaps i'll give peer-economy a read.

@bhaugen
Copy link

bhaugen commented Mar 11, 2017

@clehner

perhaps i'll give peer-economy a read.

If you do, be aware that the author, @ChristianSi , has been rethinking some of it. Might be worth another thread somewhere. Or invite him into the scuttleverse...?

@elf-pavlik
Copy link
Member

If I want to build a table showing the running balances of 20 users from
a log of 10,0000, which, with the data structure proposed means 20
queries of the form
SELECT SUM(amount) FROM table WHERE *payer* = $user_id - SELECT SUM(amount) FROM table WHERE *payee* = $user_id
is performance a concern?

No one stops you from having internal to your service some denormalized structures, indexes, materialized views or whatever you want to do to make optimizations for performance. I think this presentation shared by @ahdinosaur includes some very well thought reflection on such aspects of databases https://www.confluent.io/blog/turning-the-database-inside-out-with-apache-samza/

@clehner 👋 I wonder if you have possibility to implement in your approach, a common requirement where accounts have a limits for negative balance. In many common nowadays deployments, where particular service provides a shared ledger for mutual credit or timebank, this service may reject requests for transfers if they would make an account go below agreed negative limit. Looking at your documentation I understand that balances on all the accounts stay publicly known, so during negotiation of exchange the party that would receive currency transfer can check the current balance on the 'origin' account and reject proposal of exchange if considers the resulting balance after transaction on the origin account to low. But this removal of the authority which stays responsible for ensuring accounts don't go bellow certain limit, seems to move that responsibility on all the participants.

@clehner
Copy link

clehner commented Mar 12, 2017

@bhaugen

be aware that the author, @ChristianSi , has been rethinking some of it. Might be worth another thread somewhere. Or invite him into the scuttleverse...?

good to know. do you have any links for this? i feel i should familiarize myself with the existing work before asking for more...

hi @elf-pavlik,

in the current design, there isn't an explicit accept/reject step, but participants could do this negotiation at a higher level - especially if one is considering whether to convert credits in the system to something external to the system.

@bhaugen
Copy link

bhaugen commented Mar 12, 2017

@clehner

do you have any links for this? i feel i should familiarize myself with the existing work before asking for more...

Here's the book: http://peerconomy.org/wiki/Main_Page#The_Book

Here's his website: http://www.siefkes.net/
and collaborative blog: http://keimform.de/
For example:
http://keimform.de/2016/eine-welt-in-der-alle/
(use the translator if needed)

@elf-pavlik elf-pavlik transferred this issue from valueflows/valueflows Jan 30, 2019
@almereyda
Copy link
Member

We have moved the ValueFlows organization from GitHub to https://lab.allmende.io/valueflows.

This issue has been closed here, and all further discussion on this issue can be done at

https://lab.allmende.io/valueflows/forum-valueflo-ws/-/issues/74.

If you have not done so, you are very welcome to register at https://lab.allmende.io and join the ValueFlows organization there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants