Comments (9)
@pospi has proposed dividing things into phases, so we should be sure that the data we need for this is present in the phase where we need it.
I'm not sure "phases" means the same thing to both of us so I will leave that out of the discussion unless my updates in the other thread leave you still thinking it is relevant here.
I've been thinking we should have record of every change made to anything, and thought that was a tenet of HC too
Yes, we have that. "What was updated" is available too. We probably don't need things like "dateModified" because the "dateCreated" of the updating record will tell you when the original was updated / overwritten.
from hrea.
Holochain keeps a source for each data element (including "overwritten" records, deleted records, and links). The source is the hash of the HoloAgent that did the operation. Is there a need for more, e.g. date modified? What else should be a part of these records?
If we do something similar to HoloObject
, that might be the best place to insert properties for it.
from hrea.
This is going to tie in with the ongoing discussion on the fate of the core abstractions, I believe. @pospi has proposed dividing things into phases, so we should be sure that the data we need for this is present in the phase where we need it.
from hrea.
The source is the hash of the HoloAgent that did the operation. Is there a need for more, e.g. date modified? What else should be a part of these records?
Does that mean that what we know about successive updates to something is the agent who did it but not what was updated? I've been thinking we should have record of every change made to anything, and thought that was a tenet of HC too. But up for discussion...
I'll have to catch up to you all on the "phases" thing,
from hrea.
Indeed, no data is ever lost on the DHT. It gets marked "deleted" or "replaced", but we can load up every single version of the data (along with who is responsible for it) at any time. If we don't need any additional fields, this is a solved problem.
However, let's first consider that the source
field is only the individual holo-agent that did the CRUD. The only way to record something like onBehalfOf
for representatives taking action as the group agent is to use a further abstraction. Conversely, if we want to hide the individual on the DHT and designate the group agent as source
, we must have actual holo-agents for group agents.
I.E. if that capability is really important, we have our answers about group agents.
from hrea.
If we don't need any additional fields, this is a solved problem.
What does it mean "additional fields"? We would want all the data that was created or changed. I suppose we would want who changed it (you said we have that - it would be a person or user, not a group). And timestamp of the CRUD. The group will be elsewhere on the record, assuming we get groups properly represented as an agent, so that should be fine. No need for onBehalfOf
.
If we got that, I'll close this. Or you can if you like.
from hrea.
Holochain is going to record only a timestamp and one agent that is the source of the CRUD. If we do integrate group agents as de facto agents, then the source will only be recorded as the group agent, not the individual. If group agents are an abstraction of some sort, only the individual agent will be recorded.
Additional fields would mean metadata above and beyond what Holochain records on its own, such as onBehalfOf
to indicate a group agent, or a field to record the individual who acted on behalf of the group, if group agents are de facto agents.
from hrea.
This flows into my comments on group agents, which I don't think are recorded anywhere yet... but I think:
Holochain is going to record only a timestamp and one agent that is the source of the CRUD
Agreed.
If we do integrate group agents as de facto agents, then the source will only be recorded as the group agent, not the individual. If group agents are an abstraction of some sort, only the individual agent will be recorded.
I see that differently- I think both need to be recorded. The individual should be recorded as the agent who made the transaction (not sure if we need to do this, or whether Holochain does it for us); but the group agent should be recorded as the "owner" of any created records.
I'm using "owner" loosely- other roles & relationships will no doubt be required, and how onBehalfOf
is treated will be up to whatever makes sense for each individual action.
from hrea.
I'm closing this, the original issue is answered. And I think we have alternate issues for other things that came up along the way.
from hrea.
Related Issues (20)
- Cut new vf-graphql release & update for compatibility HOT 1
- "Invalid outputs specifier" in Nix environment CI setup HOT 6
- implement `imageList` for `Intent`, `EconomicResource` and `ResourceSpecification`
- Update zome API structs to use strings for passing numerical values, avoiding potential value truncation HOT 1
- Test process is too slow to execute on Github CI HOT 2
- Implement `corrects` property for `EconomicEvent` HOT 1
- Resolve semantic integrity issues related to `Unit` records HOT 2
- Publishing lib crates independantly to crates.io HOT 7
- ERROR: [HOLOCHAIN 0.0.162] kitsune_p2p_types::tx2::framed: writer closing due to error e=KitsuneError(TimedOut("FramedWriter::write")) HOT 5
- Implement Agent.proposals query
- Multiple creations of the same data across a partitioned network results in repeat results in query APIs HOT 2
- Custom extension resolvers are unable to pass base64-encoded Holochain identifiers to thirdparty zomes
- Implement validation logic for indexing zomes
- npm start results in error caused by outdated GraphiQL client in "explorer" app HOT 6
- Add field `substitutable` to ResourceSpecification
- retrieving nonexistent agreement record breaks resolver HOT 2
- Update Action list
- graphql-client module not importable
- Investigate possible performance problems
- Import to Holochain Launcher HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hrea.