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

2024-05 dev log #14

Closed
michielbdejong opened this issue Jan 6, 2025 · 25 comments
Closed

2024-05 dev log #14

michielbdejong opened this issue Jan 6, 2025 · 25 comments

Comments

@michielbdejong
Copy link
Owner

michielbdejong commented Jan 6, 2025

(edited)

Two presentations to give! Should probably focus on the narratives and demos.
See #15 for bigger picture of goals I want to work on this week.

@michielbdejong
Copy link
Owner Author

michielbdejong commented Jan 27, 2025

I hope I can complete my Solid MVP today, and talk about it at LoFi tomorrow.

It would just be a demo of Unhosted+Solid, using ACP-flavoured current Solid with solid-client-authn-js and the rebuild of the launcher-exploration app.

I could use Wed/Thu to adapt it to the bookmarks modules and rs-js and present that at FOSDEM in the weekend.

@michielbdejong
Copy link
Owner Author

michielbdejong commented Jan 27, 2025

Hosts I need:

@michielbdejong
Copy link
Owner Author

michielbdejong commented Jan 27, 2025

solid.pondersource.com is at 5apps: https://5apps.com/deploy/apps/5dcc2692c299bd0c41884df6/settings (git@5apps.com:vinnl_launcher-exploration.git)

@michielbdejong
Copy link
Owner Author

Getting this error in the pivot logs:

2025-01-27T13:31:56.319Z [DPoPWebIdExtractor] {Primary} warn: Error verifying WebID via DPoP-bound access token: The access token issuer doesn't match its associated WebID's trusted OIDC issuers.
Actual:
Expected: https://pivot.pondersource.com/

@michielbdejong
Copy link
Owner Author

Making progress! it's now sending the right clientId, and discovering the type indexes. But I seem to have a syntax error somewhere in my data:

2025-01-27T14:18:48.509Z [HandlerServerConfigurator] {Primary} info: Received GET request for /settings/publicTypeIndex.ttl
2025-01-27T14:18:48.517Z [DPoPWebIdExtractor] {Primary} info: Verified WebID via DPoP-bound access token. WebID: https://asdf.pivot.pondersource.com/profile/card#me, client ID: https://solid.pondersource.com/clientid.jsonld, issuer: https://pivot.pondersource.com/
2025-01-27T14:18:48.588Z [StreamUtil] {W-???} warn: Piped stream errored with Undefined prefix ":" on line 7.
2025-01-27T14:18:48.589Z [StreamUtil] {W-???} warn: Piped stream errored with Undefined prefix ":" on line 7.
2025-01-27T14:18:54.628Z [WrappedExpiringReadWriteLocker] {Primary} error: Lock expired after 6000ms on https://asdf.pivot.pondersource.com/settings/publicTypeIndex.ttl

@michielbdejong
Copy link
Owner Author

I'm getting close to editing the ACR, that would be enough to record a simple demo.

@michielbdejong
Copy link
Owner Author

Talk for local-first:

tree-based sync and keep-or-revert events

the audience is not thinking of data portability, they are thinking of web/native app development. They expect a lot of functionality from a sync lib, such as queries. rs-js doesn't have that.
It just allows you to sync file trees.
A quick look at tree-based sync and keep-or-revert events.

bring your own data

What makes rs-js unique is that:

  • it has multiple storage server backends: remoteStorage protocol, GoogleDrive, Dropbox, Solid protocol
  • these storage server backends are personal data stores instead of application data stores
  • it therefore also includes the storage discovery widget, which feels a lot like SSO

data scopes

We never really got to build enough unhosted web apps (yet) to build a good list of data modules.
They are remotestorage-module-mymodulename on npm. Apps are expected to either use these npm modules or to be compatible with them (code is leading). Each module is a folder on the storage, and apps can request read-only or read-write access to it.

The Solid project also promises a "bring your own data" approach to web apps, but it's less strict on where data lives, and less strict on how data is written down. It uses ACLs but doesn't define how these should be set. There is a consent dialog, but it is unable to display any relevant data to the end-user. A lot of implementations get it wrong. We have https://pdsinterop.org/conventions and Solid Data Modules but the reusable code isn't working very well (not even within the Solid Data Modules team).

The Future

We should not leave data portability as optional. That just means a personal data store becomes a zipfile export.
Maybe declarative data modules, using shapes languages or lens languages?
I look forward to more research on that in the future.

@michielbdejong
Copy link
Owner Author

To know whether to display 'Launch' or 'Install' I will also need to read the ACRs. So I'll include a cache. It will be like a mini rdflib :) but all still in 100 LOC.

I added Bulma to solid.pondersource.com too. Now test-driving the demo.

I'm puzzled why Poddit can't access my public type index

@michielbdejong
Copy link
Owner Author

ok, fixed. recording the Solid MVP now, take 1. :)

@michielbdejong
Copy link
Owner Author

Published! :) https://lists.w3.org/Archives/Public/public-solid/2025Jan/0042.html

Next up: complete the rest of #15

@michielbdejong
Copy link
Owner Author

I got it using solid-client-authn and to the point where it's trying to fetch the profile.
I'll see if I can fix solid-contrib/pivot#76
And then open up my bookmarks.ttl so I can test markbook on localhost:3000.

@michielbdejong
Copy link
Owner Author

michielbdejong commented Jan 29, 2025

  • bookmark titles are not displaying
  • still have to add clientid.jsonld
  • disconnect button is not working

@michielbdejong
Copy link
Owner Author

There is a nice opportunity to show the use of data modules in michielbdejong/markbook@9042aee.

@michielbdejong
Copy link
Owner Author

michielbdejong commented Jan 29, 2025

I have to see how I can use solid-data-modules in both apps.

  • add a profile data module
  • create a built bundle
  • use in markbook
  • use in poddit
  • use in launcher
  • record demo

@michielbdejong
Copy link
Owner Author

@michielbdejong
Copy link
Owner Author

x = await bookmarks.Bookmark.getAll(session.fetch, session.info.webId)

@michielbdejong
Copy link
Owner Author

I'll extract the profile and typeIndex fetching code from poddit, markbook and launcher.

The first two are rdflib-based and the third one could be.

So I could use https://github.com/solid-contrib/data-modules/tree/main/utils/rdflib

@michielbdejong
Copy link
Owner Author

export interface Bookmark {
  url: string;
  title: string;
  created: Date;
};

vs

export interface Bookmark {
  /**
   * ID of the bookmark
   */
  uri: string;
  /**
   * The human-readable title of the bookmark
   */
  title: string;
  /**
   * The URL the bookmark refers to
   */
  bookmarkedUrl: string;
}

@michielbdejong
Copy link
Owner Author

in need markbook to show up in the launcher as a second app.

@michielbdejong
Copy link
Owner Author

If I add https://github.com/solid-contrib/data-modules/tree/main/bookmarks/soukai as a third bookmarks app then I can claim solid-contrib/data-modules#45 at the same time.

@michielbdejong
Copy link
Owner Author

@michielbdejong
Copy link
Owner Author

Getting Engine must be initialized before performing any operations. on https://sosobo.5apps.com/. I want to check if the userSession is connected and bootSoukai is called before Bookmark.getInstance is called, but it's a production vite build without source maps, so I'll see if I can debug from localhost.

@michielbdejong
Copy link
Owner Author

oh, it works on localhost! fascinating.

@michielbdejong
Copy link
Owner Author

markbook is including the query param in the redirect_uri and pivot rejects that.

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

1 participant