From a182f6608f018032e470e9490a941bb2778a1017 Mon Sep 17 00:00:00 2001 From: Michiel de Jong Date: Thu, 12 Sep 2024 09:33:10 +0200 Subject: [PATCH 1/2] Meeting notes 2024-09-11 --- meetings/2024-09-11.md | 125 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 meetings/2024-09-11.md diff --git a/meetings/2024-09-11.md b/meetings/2024-09-11.md new file mode 100644 index 00000000..756c128b --- /dev/null +++ b/meetings/2024-09-11.md @@ -0,0 +1,125 @@ +# W3C Solid Community Group: Weekly + +* Date: 2024-09-11T14:00:00Z +* Call: https://meet.jit.si/solid-cg +* Chat: https://matrix.to/#/#solid_specification:gitter.im +* Repository: https://github.com/solid/specification +* Status: Draft + + +## Present +* [Michiel de Jong](https://michieldejong.com) +* Rahul +* [elf Pavlik](https://elf-pavlik.hackers4peace.net) +* [Pierre-Antoine Champin](https://champin.net/#pa) +* Grace Elcock +* Maxime Lecoq-Gaillard +* [Rui Zhao](https://me.ryey.icu) +--- + +## Announcements + +### Meeting Guidelines +* [W3C Solid Community Group Calendar](https://www.w3.org/groups/cg/solid/calendar). +* [W3C Solid Community Group Meeting Guidelines](https://github.com/w3c-cg/solid/blob/main/meetings/README.md). +* No audio or video recording, or automated transcripts without consent. Meetings are transcribed and made public. If consent is withheld by anyone, recording/retention must not occur. +* Join queue to talk. +* Topics can be proposed at the bottom of the agenda to be discussed as time allows. Make it known if a topic is urgent or cannot be postponed. + +### Participation and Code of Conduct +* [Join the W3C Solid Community Group](https://www.w3.org/community/solid/join), [W3C Account Request](http://www.w3.org/accounts/request), [W3C Community Contributor License Agreement](https://www.w3.org/community/about/agreements/cla/) +* [Solid Code of Conduct](https://github.com/solid/process/blob/main/code-of-conduct.md), [Positive Work Environment at W3C: Code of Conduct](https://www.w3.org/policies/code-of-conduct/) +* Operating principle for effective participation is to allow access across disabilities, across country borders, and across time. Feedback on tooling and meeting timing is welcome. +* If this is your first time, welcome! please introduce yourself. + + +### Scribes +* elf Pavlik +* Michiel de Jong + +### Introductions +* + +--- + +## Topics + +### Demo: Semantizer library and a React-Admin app +* Maxime Lecoq-Gaillard / lecoqlibre: I would like to make a quick demo of Semantizer, a lib I'm working on to make Solid apps. +* MLG: The demo will be in the domain of agriculture. Let's starts with taking a look at the datasets in my POD. All starts from the WebId profile of a person (representing a food producer). In its profile, the producer is affiliated to some enterprises. Enterprises have their own profile in which they list catalogs which are linked to some products (catalog items). The demo will show the catalogs of the producer being fetched from its WebId. The demo will also make use of extended profiles (defined in the person and the enterprise profiles). +* MLG: First we can see the React-Admin app and later the code. We can see in the network console of the browser that the app is fetching my WebId, then the extended profile, then the enterprise and its extended profile where it finds links to the catalogs. On the interface of the app, we can see a list of catalogs. We can click on a catalog to see the contained catalog-items. In the code it is really simple, we load the documents in the order explained above. +* MLG: Once I fetch/load the first dataset (profile), I can use mixins. Mixins use RDF/JS dataset. With mixin I have access to methods I can call on the dataset to access to data in an easy way. With only few lines I can easily query the pod. I can also show you another example. A bit of code I'm working on for Startin'Blox which shows the usage of the TypeIndex mixin: I can get the TypeIndex by simply call the `getPublicTypeIndex` method. Then I can directly access to a registration instance with the dedicated method `getRegistratedInstanceForClass`. +* eP: Can you show us how you define those mixins. +* MLG: Mixin are very easy to define. It is just a mixin function in TS. You just define have to define some methods which you want to add to your dataset. You also have to export a factory to create and load easily instances of those mixins (an helper is available). +* eP: Do you have an example of using multiple mixins on the same resource +* MLG: The SolidWebID mixin uses the WebIDMixin and the DatasetMixin. The DatasetMixin is the base mixin which adds the URI of the dataset. +* eP: Could you use WebID mixin and Vcard mixin together for example? +* MLG: Yes, mixins can be mixed like wanted. +* eP: How do you compare it to LDO and the class based approach used by Noel? +* MLG: LDO only defines properties to access underlying data (defined from a shape). If you want to add methods to LDO objects you have to do it by yourself. Semantizer can be used to do so. Semantizer adds mixin, which supports RDFJS datasets and all the RDF data model (blank nodes also). +* MLG: Semantizer can be used to add some methods to LDO objects. For example to lint, add logic or compute some values. +* MdJ: Is this code public? +* MLG: Yes but not stable yet. It will be released under MIT license. We have a TS version, but also Ruby and PHP (which are not aligned with the TS version and should not be used yet). It was first created for the Data Food Consortium project. We have a generator that generates different languages from an UML model. +* TS version: https://github.com/assemblee-virtuelle/semantizer-typescript/tree/dataset +* eP: Organize a special topic meeting? How does this fit/compare with Noel's and Jackson's tools +* MdJ: With Data Modules we also try to provide code like that, for different frameworks it would be opinionated. + +### LWS WG + +* PAC: I can talk a bit about our plan for the LWS WG +* https://www.w3.org/groups/wg/lws/ +* PAC: first meeting planned for probably second week of october +* PAC: In the meantime, with TPAC happening in two weeks, we have proposed a breakout session there. Link: https://github.com/w3c/tpac2024-breakouts/issues/66 +* PAC: The idea is to bring together a wide range of people who intend to participate, and to hear about their use case, on the problem that LWS pretends to solve. We think this is an important first step, opening it to a broader community. +* eP: lately we found a lot of activity related to Solid but not to the CG, like Solid Community AU for instance. Should we invite them to join too? +* PAC: Absolutely. The scope is possibly wider than Solid, as long as it contributes to solving the same problems. If they're not a member, they can maybe consider becoming a member. If you can think of someone who fits that bill but is not already in the coordination section of the charter, please point us to them. +* PAC: remember that the public mailing list of the WG is open. +* Grace: I just wondered about the comms, I asked Amy but she said W3C would not be doing a press release. Will there be an email going out? Tim is keen to promote it, but would prefer to be amplifying something that was already going out. +* eP: question for Michiel, should we announce it via NLnet? +* PAC: We haven't planned it yet but I was already asked. +* eP: There are quite few project funded via NLnet working on Solid, is there a channel that we could announce creation of the WG there? +* MdJ: I announced WG on the Unhosted mailing list. I didn't also post on the Solid forum. Thinking that WG chairs might want to announce it. +* PAC: We still need to pick the date for the first WG meeting. +* MdJ: I'll put it on LinkedIn as well. It would make sense if either PAC or the WG chairs announced something. +* PAC: I will coordinate it with them. +* eP: prepare to start handing off the proposed reports there. +* MdJ: We always said we just keep going until WG gets formed. Would the CG stop working on the core spec? I think that would make sense. +* PAC: Formally there is specific version of the Solid Protocol that is mentioned in the charter. It makes sense not to update that report. Some nit-picky people might object taking a more recent version. We don't need this kind of discussion. I think this is only one that should be frozen. The rest is mentioned as tentative and WG will decide as they go. +* PAC: WG will first focus on the Use Cases and prioritize what we work on basd on that. There were some remarks that the user stories github repo didn't evolve. +* PAC: I expect thta WG will be synchronizing with the CG, we will have some joined meeting. Except for the Solid protocol I don't see a reason to stop work on other reports. +* MdJ: I see 0.11 or ED of Solid Protocol + +PROPOSAL: CG stops working on the Solid Protocol draft +* MdJ: +1 +* eP: +1 +* PAC: +1 + +RESOLUTION: CG stops working on the Solid Protocol draft + +* PAC: You said for 2 years, WG is very open. Anyone can make a PR with some restrictions on copyright and patent commitments. Feel free to chime in even if you are not WG participant. Anyone in CG can still participate in this open process. The governance changes but we still hope the CG will contribute. +* MdJ: There is still a mailing list. I guess the matrix channel can still be used but CG meetings shouldn't be about the core protocol. But it can be about the dependencies. +* PAC: CG can still have the collective opinion about the working draft, just the WG has the final decision. + +* MdJ: Charter also mentions various depencencies: WAC, ACP, Solid Notifications, WebId +* PAC: This was a tricky point and part of the objections on the original charter. Formally W3C recommendations can't depend on documents which are not at the same level of maturity. So REC can't depend on CG reports. We had to explain how we want to deal with this issue once the Solid Protocol becomes a recommendation. Those dependencies can become additionals deliveries. Also WG can develop an alternative on its own. In my personal opinion it would be better to adopt those drafts as well. Still I don't see a reason for the CG to stop working on them. +* eP: we haven't been doing a rapid progress on the dependencies as well. client-client is out-of-scope for the WG, we can focus on outside-in, like solid apps interop. +* eP: and then we can see where we meet in the middle, as the WG works inside-out from the core protocol spec. + +### TPAC +* VB: Agenda for 2024-09-27 (TPAC), please review and suggest topics: https://github.com/solid/specification/pull/681 +* VB: Live minutes: https://hackmd.io/1QInJs0-QS62qHPQbUTV-Q +* MdJ: It will be hybrid in-person and online meeting. + +### Plans for Q4 +* eP: we could take some time to start planning the CG focus for Q4 +* MdJ: I will be working on the migration to Pivot (hopefully including Braid) and a launcher+podfixer app for our minimal interop demo. +* MdJ: We plan to migrate solidcommunity.net +* MdJ: I think it needs a launcher+podfixer that makes sure that files are added to the typeindex +* eP: I miss the Friday meetings about UX/DX, there was a post on the forum about DX. Maybe we can dedicate some CG and/or special topics meetings on that. +* eP: And the implementers' feedback we receive. Also on app dev matrix channel, Jacopo emphasised the feedback is quite interesting. +* MdJ: The friday meeting was created since I wanted to discuss off-topic for CG topic. +* MdJ: We can put the report from Rosano on the agenda +* eP: https://pdsinterop.org/practice/ and discussion in solid/app-development we can have at least one meeting on that +* eP: we should reconsider the timeslot for the special topics meetings, and add the practitioners meeting on the CG agenda https://doodle.com/meeting/participate/id/dRw5m3Re +* MdJ: We should discuss it with Jeff, there is also a Solid Team and it is more of a team activity. +* MdJ: I decided to become co-chair to work on UX and DX but it was marked as off topic. I think we can have broader and more practical discussions now in CG. From 59d28010622d44928935e6f92672cccd584a6f58 Mon Sep 17 00:00:00 2001 From: Maxime Lecoq Date: Thu, 12 Sep 2024 10:56:09 +0200 Subject: [PATCH 2/2] Update 2024-09-11.md (#683) Added details into the Semantizer demo part. --- meetings/2024-09-11.md | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/meetings/2024-09-11.md b/meetings/2024-09-11.md index 756c128b..65d9d09f 100644 --- a/meetings/2024-09-11.md +++ b/meetings/2024-09-11.md @@ -44,23 +44,22 @@ ## Topics -### Demo: Semantizer library and a React-Admin app -* Maxime Lecoq-Gaillard / lecoqlibre: I would like to make a quick demo of Semantizer, a lib I'm working on to make Solid apps. -* MLG: The demo will be in the domain of agriculture. Let's starts with taking a look at the datasets in my POD. All starts from the WebId profile of a person (representing a food producer). In its profile, the producer is affiliated to some enterprises. Enterprises have their own profile in which they list catalogs which are linked to some products (catalog items). The demo will show the catalogs of the producer being fetched from its WebId. The demo will also make use of extended profiles (defined in the person and the enterprise profiles). -* MLG: First we can see the React-Admin app and later the code. We can see in the network console of the browser that the app is fetching my WebId, then the extended profile, then the enterprise and its extended profile where it finds links to the catalogs. On the interface of the app, we can see a list of catalogs. We can click on a catalog to see the contained catalog-items. In the code it is really simple, we load the documents in the order explained above. -* MLG: Once I fetch/load the first dataset (profile), I can use mixins. Mixins use RDF/JS dataset. With mixin I have access to methods I can call on the dataset to access to data in an easy way. With only few lines I can easily query the pod. I can also show you another example. A bit of code I'm working on for Startin'Blox which shows the usage of the TypeIndex mixin: I can get the TypeIndex by simply call the `getPublicTypeIndex` method. Then I can directly access to a registration instance with the dedicated method `getRegistratedInstanceForClass`. +### Work in Progress: Semantizer library and a React-Admin app demo +* Maxime Lecoq-Gaillard (lecoqlibre): I would like to make a quick demo of Semantizer, a TypeScript library I'm working on to make Solid apps (it could be used to create non-Solid apps too). Semantizer is based on the RDFJS interfaces and use mixins. Users can define their own mixins very easily to add methods to manipulate their data. Currently some mixins already exist like the WebId, the SolidWebId and the TypeIndex ones. I will also add a Comunica mixin soon to run SPARQL queries directly on the data. +* MLG: The demo will be in the domain of agriculture. Let's starts with taking a look at the datasets in my POD. All starts from the WebId profile of a person (representing a food producer). In its profile, the producer is affiliated to some enterprises. Enterprises have their own profile in which they list catalogs which are linked to some products (catalog items). The demo will show the catalogs of the producer being fetched from its WebId. The demo will also make use of extended profiles (linked in the person and the enterprise profiles). +* MLG: First we can see the React-Admin app and later the code. We can see in the network console of the browser that the app is fetching my WebId, then the extended profile, then the enterprise and its extended profile where it finds links to the catalogs. On the interface of the app, we can see the list of catalogs of the producer. We can click on a catalog to see the contained catalog-items. In the code it is really simple, we load the documents (datasets) in the order explained above. +* MLG: Once I fetch/load the first dataset (profile), I can use mixins. With mixin I have access to methods I can call on the dataset to access to data in an easy way. With only few lines I can easily query the pod. I can also show you another example. A bit of code I'm working on for Startin'Blox which shows the usage of the TypeIndex mixin: I can get the TypeIndex by simply call the `getPublicTypeIndex` method. Then I can directly access to a registration instance with the dedicated method `getRegistratedInstanceForClass`. * eP: Can you show us how you define those mixins. -* MLG: Mixin are very easy to define. It is just a mixin function in TS. You just define have to define some methods which you want to add to your dataset. You also have to export a factory to create and load easily instances of those mixins (an helper is available). -* eP: Do you have an example of using multiple mixins on the same resource -* MLG: The SolidWebID mixin uses the WebIDMixin and the DatasetMixin. The DatasetMixin is the base mixin which adds the URI of the dataset. +* MLG: Mixin are very easy to define. It is just a mixin function in TS in which you define some methods you want to add to your dataset. You also have to export a factory to create and load instances of your mixin (an helper is available). +* eP: Do you have an example of using multiple mixins on the same resource? +* MLG: Yes, for instance the SolidWebID mixin uses the WebIDMixin and the DatasetMixin. The DatasetMixin is the base mixin which adds the URI of the dataset. * eP: Could you use WebID mixin and Vcard mixin together for example? -* MLG: Yes, mixins can be mixed like wanted. +* MLG: Yes, mixins can be mixed like wanted to add an unlimited number of methods to manipulate the data. * eP: How do you compare it to LDO and the class based approach used by Noel? -* MLG: LDO only defines properties to access underlying data (defined from a shape). If you want to add methods to LDO objects you have to do it by yourself. Semantizer can be used to do so. Semantizer adds mixin, which supports RDFJS datasets and all the RDF data model (blank nodes also). -* MLG: Semantizer can be used to add some methods to LDO objects. For example to lint, add logic or compute some values. +* MLG: LDO only defines properties to access underlying data (defined from a shape). If you want to add methods to LDO objects you have to do it by yourself. Semantizer can be used to do so as it can work with any RDFJS compatible dataset. Semantizer can be used to add some methods to LDO objects for example to lint, add logic or compute some values. Semantizer also supports blank nodes (which the lib of Noël does not). * MdJ: Is this code public? -* MLG: Yes but not stable yet. It will be released under MIT license. We have a TS version, but also Ruby and PHP (which are not aligned with the TS version and should not be used yet). It was first created for the Data Food Consortium project. We have a generator that generates different languages from an UML model. -* TS version: https://github.com/assemblee-virtuelle/semantizer-typescript/tree/dataset +* MLG: Yes but not stable yet. It will be released under MIT license. We have a TS version, but also Ruby and PHP (which are not aligned with the TS version and should not be used yet). It was first created for the Data Food Consortium project. We have a code generator that generates different languages from an UML model. +* TS version: https://github.com/assemblee-virtuelle/semantizer-typescript/tree/dataset (not stable, should not be used yet, no upated docs). * eP: Organize a special topic meeting? How does this fit/compare with Noel's and Jackson's tools * MdJ: With Data Modules we also try to provide code like that, for different frameworks it would be opinionated.