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

External service stores calendar in pod #68

Closed
pheyvaer opened this issue Aug 25, 2022 · 13 comments
Closed

External service stores calendar in pod #68

pheyvaer opened this issue Aug 25, 2022 · 13 comments
Assignees
Labels
challenge technical problem applied to a use case completion: approved ✅ proposal: approved ✅ report: done ✅ The report of the complated challenge/scenario is done.

Comments

@pheyvaer
Copy link
Contributor

pheyvaer commented Aug 25, 2022

Pitch

At the moment it's possible to request a calendar from a CSS instance through the use of a store. But this solution is coupled to the implementation of CSS. A better solution would be to have an external service that reads the original calendar and stores it in a pod using only the methods specified by Solid.

Desired solution

This can be a CLI tool that is executed periodically with a cron job on a server. Let's make this as lightweight as possible. Thus, do not use unnecessary frameworks for this.

Acceptance criteria

  • I install a service on a server, which can be different from the server that is running my pod.
  • I configure the service to read data from my ICS feed.
  • I configure the service to write the data to a specific resource on my pod.
  • I configure how often the calendar data is updated on the pod.
  • I log in with my WebID in the service so that it can write to private resources.
  • The service supports these manipulations.

Pointers

Scenarios

@pheyvaer pheyvaer added challenge technical problem applied to a use case proposal: pending ❓ labels Aug 25, 2022
@RubenVerborgh
Copy link
Contributor

RubenVerborgh commented Aug 25, 2022

More specifically, can we develop a universal technique (applied to the calendar use case) such that the 3 situations below can be implemented with the same code?

  • the calendar is a backend store to the pod
  • the calendar is an agent that writes to the pod (possibly with a read hook to write at the right time)
  • the calendar is an agent that has its own store; the pod replies by linking to it

@pietercolpaert has a single diagram that can be interpreted as the above 3 cases.

@jeswr
Copy link

jeswr commented Aug 26, 2022

FWIW I don't see the read hook as just an optimisation in the second case. It is necessary to guarantee consistency between to pod and the calendar whenever an app reads from the pod.

@RubenVerborgh
Copy link
Contributor

I don't see the read hook as just an optimisation in the second case

Ack. With "an agent that writes to the pod", I meant to say "an agent that writes to the pod every time there is a change in the backend". So if my calendar changes 1000 times, but there is only 1 read in that period, there would still be 1000 writes, 999 of which would be unnecessary. So there, read hooks are a bandwidth optimization.

However, that does not account for cases where there is no defined update frequency or notification. I've adjusted the language above

@pheyvaer
Copy link
Contributor Author

@RubenVerborgh Yes, it makes sense to look at other techniques and ideally it can be done with the same code, but for the sake of keeping challenge concise and solvable within 2-3 months I would stick to only one technique: "the calendar is an agent that writes to the pod". The other two techniques and optimizations are then put into separate challenges. What do you think?

@RubenVerborgh
Copy link
Contributor

Well, the objective should really be to find 1 method that works for all cases. I'm fine with this challenge only addressing 1 case, but the solution should be generic or it doesn't make sense to pursue it.

@pheyvaer
Copy link
Contributor Author

Sure, the fact that we use calendar data should be confined to only one part of the code and the rest of the code should ideally be readily available to be reused for other data as well.

@pheyvaer
Copy link
Contributor Author

pheyvaer commented Sep 2, 2022

@RubenVerborgh Are changes still needed here?

@RubenVerborgh
Copy link
Contributor

Okay for me if the method is portable to other cases.

@renyuneyun
Copy link

Comment as required to allow mentioning me :)

@github-actions
Copy link

github-actions bot commented Oct 6, 2022

Please provide a status update about this challenge. Every ongoing challenge needs at least one status update every 2 weeks. Thanks!

@pheyvaer
Copy link
Contributor Author

The code that @zimengzhou1 and @renyuneyun created is here, specifically in the folder core.

@github-actions
Copy link

Please provide a status update about this challenge. Every ongoing challenge needs at least one status update every 2 weeks. Thanks!

@RubenVerborgh RubenVerborgh removed their assignment Feb 21, 2023
@pheyvaer pheyvaer added report: ongoing 👷‍♂️ The report of the complated challenge/scenario is being written. and removed ongoing The challenge is actively being tackled. update-required labels Feb 22, 2023
@pheyvaer pheyvaer self-assigned this Feb 22, 2023
pheyvaer added a commit that referenced this issue Mar 13, 2023
@pheyvaer
Copy link
Contributor Author

You find the report for this challenge here.

@pheyvaer pheyvaer added report: done ✅ The report of the complated challenge/scenario is done. and removed report: ongoing 👷‍♂️ The report of the complated challenge/scenario is being written. labels Mar 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
challenge technical problem applied to a use case completion: approved ✅ proposal: approved ✅ report: done ✅ The report of the complated challenge/scenario is done.
Projects
None yet
Development

No branches or pull requests

5 participants