WEBVTT

00:00.000 --> 00:23.000
Hello, this is Jessel from Private Ownership to Open Governance.

00:23.000 --> 00:29.900
So first, Huawei, I'm Leo, soft engineer Dino working on Jessel, particularly

00:29.900 --> 00:32.900
the dog generation aspect.

00:32.900 --> 00:33.900
Yeah, I'm Luca.

00:33.900 --> 00:34.900
I also work Dino.

00:34.900 --> 00:39.900
I also do standards work on TC309, so on JavaScript itself.

00:39.900 --> 00:44.900
And I work on various aspects, various web specs, like fetch.

00:44.900 --> 00:47.900
Yeah.

00:47.900 --> 00:49.900
So first off, what does Jessel say?

00:49.900 --> 00:54.900
I mean, how many people here know what Jessel is?

00:54.900 --> 00:56.900
A fair amount of what's there about a third?

00:56.900 --> 00:59.900
How many people have used Jessel?

00:59.900 --> 01:01.900
Half of that, okay, fair enough.

01:01.900 --> 01:04.900
So Jessel is our modern JavaScript registry.

01:04.900 --> 01:08.900
So similar to MPM, for example, that supports TypeScript after box.

01:08.900 --> 01:11.900
So you don't need to transpile to JavaScript first.

01:11.900 --> 01:13.900
You can just upload TypeScript directly.

01:13.900 --> 01:17.900
And consumers of those packages can just import without problem.

01:17.900 --> 01:21.900
But it does not replace MPM, it lives alongside it.

01:21.900 --> 01:26.900
So you can, for example, use MPM dependencies in your Jessel packages.

01:26.900 --> 01:31.900
And if works across different run times, be it Dino, no Jess, bun,

01:31.900 --> 01:35.900
Cloud for workers, you name it.

01:35.900 --> 01:40.900
As long as it supports Package Jason and no modules folder.

01:40.900 --> 01:42.900
And yes, M.

01:42.900 --> 01:43.900
And yes, M.

01:43.900 --> 01:44.900
And yes, M.

01:44.900 --> 01:47.900
Yeah, because that's all the thing.

01:47.900 --> 01:49.900
Yes, M is required in Jessel.

01:49.900 --> 01:51.900
You cannot use CJS.

01:51.900 --> 01:53.900
We don't like it.

01:53.900 --> 01:59.900
So, and it's completely open source in free.

01:59.900 --> 02:01.900
So it's not like MPM that's close source.

02:01.900 --> 02:04.900
It has like a pay tier if you want to do private packages.

02:04.900 --> 02:07.900
It's completely open source in free.

02:07.900 --> 02:10.900
And so why?

02:10.900 --> 02:12.900
Well, complexity.

02:12.900 --> 02:14.900
Poplishing to MPM is too complex.

02:14.900 --> 02:18.900
I mean, as mentioned earlier, TypeScript just works with MPM.

02:18.900 --> 02:22.900
You first have conference pilot generated DTS files, et cetera.

02:22.900 --> 02:24.900
And it's just not a clean process.

02:24.900 --> 02:27.900
And in terms of just setting that up, it's hours of work.

02:27.900 --> 02:28.900
Yeah.

02:28.900 --> 02:29.900
So you're export maps.

02:29.900 --> 02:30.900
You're like dependencies.

02:30.900 --> 02:32.900
You know, the difference between dependencies, peer dependencies,

02:32.900 --> 02:35.900
optional dependencies, optional peer dependencies, like all these things.

02:35.900 --> 02:37.900
No, you don't want to know.

02:37.900 --> 02:38.900
Yeah.

02:38.900 --> 02:39.900
And innovation.

02:39.900 --> 02:43.900
Well, MPM really hasn't changed anything in the past years.

02:43.900 --> 02:45.900
They don't add new features.

02:45.900 --> 02:50.900
They don't really interact much with the community.

02:50.900 --> 02:54.900
So that's why we want to change that.

02:54.900 --> 02:57.900
And we have a quick question to the audience.

02:57.900 --> 03:02.900
Like who of you knows what the last feature is that MPM shipped?

03:02.900 --> 03:03.900
Raise your hand.

03:03.900 --> 03:04.900
Go ahead.

03:04.900 --> 03:06.900
Work spaces?

03:06.900 --> 03:07.900
Good guess.

03:07.900 --> 03:09.900
I mean, it's like about that age.

03:09.900 --> 03:11.900
It's the little like blue TypeScript icon.

03:11.900 --> 03:14.900
At the top left of the package that tells you whether a package has types.

03:14.900 --> 03:16.900
That was like three years ago.

03:16.900 --> 03:19.900
So.

03:19.900 --> 03:20.900
And yeah.

03:20.900 --> 03:23.900
I mean, we all know like the JavaScript ecosystem.

03:23.900 --> 03:25.900
Oh, and you framework every day.

03:25.900 --> 03:27.900
Well, so it's really, really fast.

03:27.900 --> 03:31.900
But MPM is just holding back or not changing anything.

03:31.900 --> 03:34.900
So yeah, we want to address that.

03:34.900 --> 03:38.900
And well, our values, which unlike MPM is owned by Microsoft,

03:39.900 --> 03:41.900
so it's completely open.

03:41.900 --> 03:47.900
And so yeah, open source community and open governance are the core principles.

03:47.900 --> 03:51.900
Again, we, for example, having the case of MPM,

03:51.900 --> 03:55.900
it's just it's known that they don't really interact with the community.

03:55.900 --> 03:59.900
They don't really care about issues in the community.

03:59.900 --> 04:03.900
Like let's say there's a package that someone else should have,

04:03.900 --> 04:05.900
but they don't transfer it.

04:05.900 --> 04:08.900
There's been problems like that all over the place with MPM.

04:08.900 --> 04:11.900
So these are things that we also try to address.

04:11.900 --> 04:14.900
So I guess it's time of time.

04:14.900 --> 04:15.900
Yeah.

04:15.900 --> 04:18.900
I guess like better than us explaining it is just show you how it works.

04:18.900 --> 04:20.900
So this is the JSON website.

04:20.900 --> 04:22.900
JSON radio to start publishing a package.

04:22.900 --> 04:23.900
You go here.

04:23.900 --> 04:24.900
You sign in.

04:24.900 --> 04:25.900
And you click publisher package.

04:25.900 --> 04:26.900
I'm already signed in.

04:26.900 --> 04:28.900
So I'm just going to go to a published package.

04:28.900 --> 04:31.900
So this one interesting thing about JSON.

04:31.900 --> 04:34.900
So unlike MPM, which has these top level packages,

04:34.900 --> 04:35.900
that everybody can sort of squat.

04:35.900 --> 04:36.900
JSON doesn't have this.

04:36.900 --> 04:38.900
It JSON every package isn't a scope.

04:38.900 --> 04:40.900
And you're limited with a number of scopes.

04:40.900 --> 04:41.900
You can register.

04:41.900 --> 04:43.900
So you can't like just register in the entire world.

04:43.900 --> 04:46.900
And then get people to pay you to release those packages.

04:46.900 --> 04:47.900
Right?

04:47.900 --> 04:49.900
Like you cannot squat packages on JSON.

04:49.900 --> 04:50.900
It's explicitly against our policy.

04:50.900 --> 04:52.900
And if you do see someone do it.

04:52.900 --> 04:53.900
Tell us.

04:53.900 --> 04:55.900
Well, we'll fix it.

04:55.900 --> 04:58.900
So I'm not going to create a new scope because I already have one.

04:58.900 --> 05:00.900
But usually you can just click here and create one.

05:00.900 --> 05:03.900
But I'm going to select an existing demos scope.

05:03.900 --> 05:08.900
And I'll call it foster 2025.

05:08.900 --> 05:09.900
Yes.

05:09.900 --> 05:10.900
So we'll create the package.

05:10.900 --> 05:13.900
What this will do is it will just like tell JSON.

05:13.900 --> 05:14.900
Hey, I'm about to publish this package.

05:14.900 --> 05:17.900
It'll give you some instructions for how to do it.

05:17.900 --> 05:21.900
So you're going to get this little JSON file that just contains

05:21.900 --> 05:23.900
the package name, the conversion of the package.

05:23.900 --> 05:26.900
What license it is, and then an export field.

05:26.900 --> 05:29.900
And the export field is not the same export field that you have in package

05:29.900 --> 05:30.900
that's much simpler.

05:30.900 --> 05:32.900
It does not support conditional exports.

05:32.900 --> 05:33.900
You don't have to specify types in there.

05:33.900 --> 05:35.900
You don't have to specify seed JS versus ESM.

05:35.900 --> 05:38.900
All of these things, because JSON supports ESM.

05:38.900 --> 05:41.900
And you can publish types out of the box.

05:41.900 --> 05:45.900
So yeah, this is the short-hand syntax where we're just exporting mod.ts.

05:45.900 --> 05:50.900
Leo's going to copy that into a repository.

05:50.900 --> 05:52.900
So I have an empty directory here.

05:52.900 --> 05:55.900
I'm just going to create a JSON.

05:55.900 --> 06:04.900
And then we're going to just create a index.

06:04.900 --> 06:05.900
Or what is it?

06:05.900 --> 06:07.900
Mod.ts file.

06:07.900 --> 06:08.900
No package JSON.

06:08.900 --> 06:10.900
No TypeScript configuration.

06:10.900 --> 06:11.900
Nothing.

06:11.900 --> 06:12.900
Just a TypeScript file.

06:12.900 --> 06:13.900
And start exporting something.

06:13.900 --> 06:15.900
So let's write like a simple function.

06:15.900 --> 06:17.900
I don't know adding numbers, I guess.

06:17.900 --> 06:19.900
That's a good example.

06:19.900 --> 06:23.900
We're going to take two arguments, A and B, return, A plus B.

06:23.900 --> 06:24.900
And this is TypeScript.

06:24.900 --> 06:27.900
So we can actually annotate this with types.

06:27.900 --> 06:30.900
So you can do A is a number.

06:30.900 --> 06:32.900
He is a number.

06:32.900 --> 06:33.900
Returns a number.

06:33.900 --> 06:34.900
I know.

06:34.900 --> 06:36.900
Crazy, right?

06:36.900 --> 06:38.900
And then let's also add some docs.

06:38.900 --> 06:42.900
Because JSON can actually generate documentation automatically from your code.

06:42.900 --> 06:45.900
And for this, we're just going to use the regular JSON docs syntax.

06:45.900 --> 06:48.900
Yeah, I guess what does this function do add two numbers.

06:48.900 --> 06:52.900
Yeah, at least.

06:52.900 --> 06:55.900
This is the most popular package tomorrow.

06:55.900 --> 06:56.900
I don't know.

06:56.900 --> 07:00.900
We're going to go really all out documenting this year.

07:00.900 --> 07:01.900
Yes.

07:01.900 --> 07:02.900
Cool.

07:02.900 --> 07:04.900
So yeah, that's about it.

07:04.900 --> 07:07.900
So we have a package now.

07:07.900 --> 07:09.900
Let's publish it.

07:09.900 --> 07:12.900
So to publish it, you can either use the JSON RCLI.

07:12.900 --> 07:14.900
You can use that through.

07:14.900 --> 07:16.900
And actually, can you go back to the JSON website?

07:16.900 --> 07:19.900
You can either publish with npxjs or publish.

07:20.900 --> 07:23.900
Or whatever your favorite package manager is, or you can use, you know, publish.

07:23.900 --> 07:25.900
It's built right into Dino.

07:25.900 --> 07:27.900
I'm using your Dino installed.

07:27.900 --> 07:28.900
You're considering you work there.

07:28.900 --> 07:30.900
So maybe use Dino publish.

07:30.900 --> 07:33.900
It's exactly the same thing.

07:33.900 --> 07:35.900
So let's do that.

07:35.900 --> 07:39.900
You know, publish.

07:39.900 --> 07:42.900
And then here's another interesting thing you're going to see.

07:42.900 --> 07:45.900
JSON does not have tokens.

07:46.900 --> 07:50.900
That process to your local machine, because there's a lot of security vulnerabilities that come with that.

07:50.900 --> 07:52.900
Namely, people can steal those tokens.

07:52.900 --> 07:58.900
So when you publish locally, you actually interactively authorize publishing by clicking the link in the CLI.

07:58.900 --> 07:59.900
It sends it to the website.

07:59.900 --> 08:00.900
You click on approve.

08:00.900 --> 08:02.900
And then it publishes.

08:02.900 --> 08:07.900
And that way, we can make use of two factor authentication and all that kind of thing.

08:07.900 --> 08:08.900
So now it's going to publish.

08:08.900 --> 08:09.900
We're going to wait here for a second.

08:09.900 --> 08:10.900
That was pretty fast.

08:10.900 --> 08:12.900
And the package is published to JSON.

08:12.900 --> 08:14.900
Okay, you can all see it now.

08:14.900 --> 08:17.900
JSON.io slash at demo slash, fast in 2025.

08:17.900 --> 08:18.900
No, Docs don't.

08:18.900 --> 08:19.900
We don't have a read me.

08:19.900 --> 08:22.900
And we don't have any documentation in the index of the module itself.

08:22.900 --> 08:26.900
But we can look at the documentation for the ad function.

08:26.900 --> 08:30.900
So if you hit the Docs tab, you'll immediately see these are all the exports from the module.

08:30.900 --> 08:33.900
You see the documentation here that.

08:33.900 --> 08:34.900
Leo wrote.

08:34.900 --> 08:38.900
And if you click on the ad function, you'll see the parameters obviously the return type.

08:38.900 --> 08:42.900
And then all the documentation that we wrote for those parameters.

08:42.900 --> 08:44.900
Obviously, for an ad function, not so important.

08:44.900 --> 08:48.900
But as you can imagine, this gets very useful if you have large packages.

08:48.900 --> 08:52.900
And then on the right there, you can see how to import these packages.

08:52.900 --> 08:55.900
So you can use this with all kinds of different things.

08:55.900 --> 08:57.900
With Dino and PM, yarn, PM, bun.

08:57.900 --> 08:59.900
We remember what option you chose there.

08:59.900 --> 09:01.900
So if you, like, often use bun.

09:01.900 --> 09:04.900
For example, you can select that while we show you the bun instructions.

09:05.900 --> 09:08.900
But yeah, so what we're going to do now is just demonstrate that this is actually working.

09:08.900 --> 09:10.900
You're just going to copy that second thing right there.

09:10.900 --> 09:12.900
This doesn't actually require an installation step.

09:12.900 --> 09:14.900
If you know it just works out of the box.

09:14.900 --> 09:17.900
And I think you're just going to start a repule.

09:17.900 --> 09:21.900
And import directly from this ad function.

09:21.900 --> 09:22.900
I'm just sorry.

09:22.900 --> 09:23.900
I'll download it.

09:23.900 --> 09:26.900
You can have an ad function and let's hope it works.

09:26.900 --> 09:27.900
It does.

09:27.900 --> 09:28.900
Woo!

09:28.900 --> 09:29.900
We can add numbers.

09:29.900 --> 09:34.900
Cool.

09:34.900 --> 09:35.900
Yeah.

09:35.900 --> 09:37.900
So that's publishing.

09:37.900 --> 09:41.900
If we have time at the end also you have the publishing or how to consume this in

09:41.900 --> 09:42.900
MPM.

09:42.900 --> 09:46.900
But the other really cool thing about JSR is that we score your package with some automatic metrics.

09:46.900 --> 09:50.900
And you can use this to sort of judge from the search for example,

09:50.900 --> 09:55.900
whether a package is like really something you want to be using.

09:55.900 --> 09:58.900
For example, doesn't have documentation.

09:58.900 --> 09:59.900
Does it have a description?

09:59.900 --> 10:02.900
Does it mark which run times it uses all these things?

10:02.900 --> 10:03.900
Score is currently 58.

10:03.900 --> 10:04.900
We can improve this.

10:04.900 --> 10:05.900
We don't have time though.

10:05.900 --> 10:08.900
So we'll do this some other time.

10:08.900 --> 10:12.900
This is probably going to impede us to being the number one package tomorrow.

10:12.900 --> 10:13.900
But oh well.

10:13.900 --> 10:14.900
Cool.

10:14.900 --> 10:16.900
So let's move on to some other features.

10:16.900 --> 10:17.900
Yeah.

10:17.900 --> 10:18.900
Token was publishing.

10:18.900 --> 10:19.900
I mentioned that before.

10:19.900 --> 10:21.900
But actually we also do this from CI.

10:21.900 --> 10:27.900
So you can publish directly from your CI machine without having to set up any tokens in that CI machine.

10:27.900 --> 10:30.900
For example, on GitHub actions, there's OIDC tokens.

10:30.900 --> 10:34.900
These are sort of a standard authentication mechanism coming from CI

10:34.900 --> 10:38.900
Avengers that allows you to publish without having to configure any static tokens.

10:38.900 --> 10:39.900
They can be leaked.

10:39.900 --> 10:41.900
In JSR, you can just specify this is to get a repository.

10:41.900 --> 10:43.900
I'm going to be publishing from.

10:43.900 --> 10:46.900
And then add, you know, publish or JSR publish to your GitHub actions and

10:46.900 --> 10:47.900
it just works.

10:47.900 --> 10:49.900
You don't have to set up anything else.

10:49.900 --> 10:50.900
Score provenance.

10:50.900 --> 10:56.900
So when you publish, we publish a sort of manifest that describes what you've

10:56.900 --> 11:05.900
published from where with what hash is into a public registry.

11:05.900 --> 11:07.900
That is type of proof.

11:07.900 --> 11:12.900
So you can actually see that any given package who was published by when it was

11:12.900 --> 11:15.900
published where it was published from what repository it was published.

11:15.900 --> 11:21.900
So you can sort of follow the supply chain to make sure that not some random person is

11:21.900 --> 11:24.900
publishing something that they shouldn't have been.

11:24.900 --> 11:27.900
And then the documentation generation, you saw that a second ago.

11:27.900 --> 11:28.900
Yeah.

11:28.900 --> 11:31.900
I mean, we just generate documentation for all the typeings and functions that you

11:31.900 --> 11:35.900
export and try to make it as good looking as possible.

11:35.900 --> 11:39.900
But now, the actual thing that the name of the title of the focus

11:39.900 --> 11:41.900
governance.

11:41.900 --> 11:42.900
Yeah.

11:42.900 --> 11:48.900
So obviously, we cannot compete with NPM on the thing of open governance

11:48.900 --> 11:50.900
if we don't have an open governance structure.

11:50.900 --> 11:51.900
And so far, we haven't.

11:51.900 --> 11:54.900
So far, JSR has been completely open source.

11:54.900 --> 11:56.900
It's been like source.

11:56.900 --> 12:01.900
This source has been available and we've been taking PRs from contributors.

12:01.900 --> 12:06.900
And again, for both the backend, the CLI and sort of anything that is touched

12:06.900 --> 12:07.900
by that.

12:07.900 --> 12:12.900
But we now want to expand to actually have an open governance where we have

12:12.900 --> 12:16.900
member, we have a board, a governance board, consisting of members from all kinds of

12:16.900 --> 12:19.900
different companies in the JavaScript ecosystem that can control this without any

12:19.900 --> 12:24.900
specific company having, like, undo influence over the project.

12:24.900 --> 12:27.900
So yeah, why do we want to do this?

12:27.900 --> 12:31.900
We don't, like, JavaScript itself is not controlled by a single company, right?

12:31.900 --> 12:35.900
JavaScript is standardized in T339 in a standards group with many different

12:35.900 --> 12:39.900
companies, all the browser vendors, many stakeholders of

12:39.900 --> 12:41.900
JavaScript.

12:41.900 --> 12:45.900
And we don't really want the registry that JavaScript

12:45.900 --> 12:47.900
is used to be any different from that.

12:47.900 --> 12:51.900
It should be controlled, not by one company, but by a group.

12:51.900 --> 12:54.900
JavaScript implementations are also open source, like,

12:54.900 --> 12:59.900
V8, JavaScript core, spider monkey, these are all open source.

12:59.900 --> 13:01.900
So why shouldn't the registry be open source too?

13:01.900 --> 13:05.900
And we've seen in the past that NPM being closed source is very

13:05.900 --> 13:06.900
unfortunate.

13:06.900 --> 13:10.900
It means there's no way for the community to force innovation other than

13:10.900 --> 13:13.900
in package managers, we've seen this in package managers like when

13:13.900 --> 13:17.900
the yarn came out NPM, the CLI got a lot better because

13:17.900 --> 13:21.900
GitHub was forced to do something, but there has been no competition in the

13:21.900 --> 13:23.900
actual registry space itself, so like the back end.

13:23.900 --> 13:27.900
So GitHub hasn't been forced to innovate there.

13:27.900 --> 13:31.900
Yeah, so JavaScript needs to be a source covered by the community and open

13:31.900 --> 13:32.900
to innovation.

13:32.900 --> 13:34.900
So the board members.

13:34.900 --> 13:35.900
Evan, you?

13:35.900 --> 13:36.900
Isaac Fluter?

13:36.900 --> 13:37.900
James Snell?

13:37.900 --> 13:38.900
This guy?

13:38.900 --> 13:40.900
And Brian Del.

13:40.900 --> 13:44.900
Yeah, Evan, you are the creator of V and of you.

13:44.900 --> 13:45.900
You may know him.

13:45.900 --> 13:49.900
He is currently starting a new startup called Voy0.

13:49.900 --> 13:52.900
Isaac Fluter, the original creator of NPM.

13:52.900 --> 13:56.900
Now, co-founder of Volt, which is a package manager,

13:56.900 --> 13:58.900
tool for NPM.

13:58.900 --> 14:01.900
That's not quite launched yet, but it's getting their

14:01.900 --> 14:03.900
James Snell and Node.js, TSE members.

14:03.900 --> 14:05.900
So this is the technical steering committee of Node.js.

14:05.900 --> 14:07.900
And he's a principal engineer at CloudFlare.

14:07.900 --> 14:09.900
Me already told you who I am.

14:09.900 --> 14:12.900
And then Ryan Del, who is the original creator of Node.js,

14:12.900 --> 14:16.900
and also the creator of you.

14:16.900 --> 14:18.900
So what does this board actually do?

14:18.900 --> 14:22.900
We oversee the thing that we want to do is move

14:22.900 --> 14:26.900
JSR through a foundation, a foundation being something like

14:26.900 --> 14:30.900
the Linux foundation or something like that.

14:30.900 --> 14:32.900
And the board is going to figure out how this works.

14:32.900 --> 14:35.900
So how this works in practice, obviously, but also figuring out

14:35.900 --> 14:38.900
whether we need to split up our own foundation or whether we can move

14:38.900 --> 14:40.900
to an existing foundation, like the Linux foundation,

14:40.900 --> 14:46.900
or the, or, yeah, Open.js, for example,

14:46.900 --> 14:49.900
we will set the general direction of the project.

14:49.900 --> 14:52.900
This is not like the day-to-day operations of like,

14:52.900 --> 14:55.900
what PR gets merged and what PR doesn't, but it's more like,

14:55.900 --> 14:57.900
this is the direction we want to go.

14:57.900 --> 14:59.900
So like, we don't want to support Common.js because of

14:59.900 --> 15:01.900
these reasons.

15:01.900 --> 15:04.900
Or maybe in the future, there's some new dialect of

15:04.900 --> 15:07.900
JavaScript like TypeScript that we may want to support.

15:07.900 --> 15:10.900
The board is the group that will decide this.

15:10.900 --> 15:13.900
Yeah, the second thing is sort of that same.

15:13.900 --> 15:16.900
We will obviously determine how the governance board evolves

15:16.900 --> 15:18.900
and moving forward, like whether we need to add more members,

15:18.900 --> 15:22.900
whether there's members that I don't know what to leave.

15:22.900 --> 15:24.900
We will also establish a moderation group.

15:24.900 --> 15:28.900
So another part of the problems with NPM is the fact that

15:28.900 --> 15:32.900
moderation happens by GitHub and by Microsoft sort of with their own

15:32.900 --> 15:34.900
policies that are not really public.

15:34.900 --> 15:37.900
And it's very arbitrary, honestly.

15:37.900 --> 15:40.900
And we will establish an open moderation group that anybody

15:40.900 --> 15:44.900
from the community can join will be like voted into the group.

15:44.900 --> 15:47.900
And they will determine what the moderation policy is,

15:47.900 --> 15:49.900
and actually enforce the moderation.

15:49.900 --> 15:52.900
So determining, for example, whether a package is actually squatting

15:52.900 --> 15:55.900
or not, whether a package should be moved from one owner

15:55.900 --> 15:59.900
to another because it is on maintain, things like that.

15:59.900 --> 16:02.900
And then we will figure out how to actually do the day-to-day

16:02.900 --> 16:05.900
of reviewing contributions to the project,

16:05.900 --> 16:08.900
and then obviously how to do funding.

16:08.900 --> 16:10.900
This is a very big question.

16:10.900 --> 16:15.900
How do you publicly host what is effectively content delivery network

16:15.900 --> 16:17.900
in an open source context, right?

16:17.900 --> 16:21.900
This is like, you're having people download very large pieces

16:21.900 --> 16:23.900
of code, essentially, from the internet.

16:23.900 --> 16:25.900
Somebody has to pay for this.

16:25.900 --> 16:27.900
And how exactly this works, we don't know.

16:27.900 --> 16:30.900
Dino is in a state right now where we can absolutely pay for this,

16:30.900 --> 16:33.900
and we are going to, and we're willing to.

16:33.900 --> 16:37.900
But in the future, we will have to figure out whether this involves

16:37.900 --> 16:39.900
other companies, also sponsoring JSR,

16:39.900 --> 16:43.900
whether this involves us working with CDN vendors,

16:43.900 --> 16:46.900
like CloudFlayer or Fastly to pay for bandwidth,

16:46.900 --> 16:49.900
or whether this is something else entirely that we could do.

16:49.900 --> 16:53.900
And we would be very interested to hear your thoughts on this.

16:53.900 --> 16:56.900
Dr. Clarify on that, we also had a first meeting,

16:56.900 --> 17:00.900
and just to quickly skip to one point is that there is

17:00.900 --> 17:04.900
the discussion of operation cost, which we reviewed,

17:04.900 --> 17:07.900
and networking being a notable expense, as Luca just mentioned.

17:07.900 --> 17:09.900
And it was an interest from exploring cash and solution,

17:09.900 --> 17:13.900
and CloudFlayer potentially supporting to help mitigate the cost.

17:13.900 --> 17:17.900
So technically, we already potentially have CloudFlayer taking that over.

17:17.900 --> 17:19.900
And then there was discussion about moving JSR,

17:19.900 --> 17:23.900
to an open structure, just to make sure that it's actually independent,

17:23.900 --> 17:27.900
and not just run by Dino, like it is currently.

17:27.900 --> 17:29.900
Adoption trends were shared internally,

17:29.900 --> 17:32.900
the need for better tracking of active usage,

17:32.900 --> 17:35.900
and download metrics were noted,

17:35.900 --> 17:38.900
and technical challenges were discussed.

17:38.900 --> 17:42.900
Like meta-interability with MPM, being able to self-host,

17:42.900 --> 17:47.900
having private packages, improved package manager support,

17:47.900 --> 17:52.900
so being able to have better integration with the likes of MPM,

17:52.900 --> 17:54.900
yarn, et cetera.

17:54.900 --> 17:59.900
And enabling direct H2PS imports, which has been a relatively popular request,

17:59.900 --> 18:03.900
being able to just import a JSR package in the browser we H2PS URL,

18:03.900 --> 18:06.900
but that obviously opens the big concern of cost,

18:06.900 --> 18:10.900
because then you're just turning into just the liver,

18:10.900 --> 18:12.900
and that's not cheap.

18:12.900 --> 18:16.900
Yeah.

18:16.900 --> 18:21.900
So, any questions?

18:21.900 --> 18:31.900
Yeah.

18:31.900 --> 18:35.900
Yeah.

18:35.900 --> 18:39.900
I certainly commend tenor of open source project.

18:39.900 --> 18:42.900
What is my strategy if I want to support JSR,

18:42.900 --> 18:45.900
like, but I still want to help MPM users,

18:45.900 --> 18:48.900
to support it to the boss platform,

18:48.900 --> 18:53.900
or like, this is a easy way to, from not users to use.

18:53.900 --> 18:59.900
Ah, just like, what do you suggest for my intelligence of open source projects?

18:59.900 --> 19:01.900
Very happy you asked this question.

19:01.900 --> 19:03.900
Do you want to do the demo of importing from MPM?

19:03.900 --> 19:04.900
Sure.

19:04.900 --> 19:05.900
If it works.

19:05.900 --> 19:08.900
The demo is here that we apparently have time for.

19:08.900 --> 19:10.900
So, it's a great question.

19:10.900 --> 19:11.900
Like, if you have an existing package,

19:11.900 --> 19:14.900
that maybe is already a public MPM, how do you publish that to JSR?

19:14.900 --> 19:16.900
So, you have two solutions.

19:16.900 --> 19:19.900
Either you do a publish to both MPM and JSR.

19:19.900 --> 19:20.900
You can do that.

19:20.900 --> 19:21.900
That's perfectly reasonable.

19:21.900 --> 19:24.900
But JSR actually supports people from,

19:24.900 --> 19:26.900
like, with the MPM package manager or yarn,

19:26.900 --> 19:28.900
or MPM importing your package.

19:28.900 --> 19:32.900
And if you go to the website, Leo,

19:33.900 --> 19:36.900
and we go to the site bar and click on,

19:36.900 --> 19:38.900
use with MPM.

19:38.900 --> 19:40.900
Awesome.

19:40.900 --> 19:44.900
You can actually see here this MPX JSR ad.

19:44.900 --> 19:46.900
Command.

19:46.900 --> 19:50.900
So, I can just delete the package itself.

19:50.900 --> 19:51.900
We don't need it anymore.

19:51.900 --> 19:53.900
Just noise.

19:53.900 --> 19:57.900
And I guess, do you need to create a package JSR?

19:57.900 --> 19:58.900
No, no, no.

19:58.900 --> 20:01.900
Yes.

20:01.900 --> 20:02.900
Sure.

20:02.900 --> 20:06.900
Oh.

20:06.900 --> 20:08.900
Out of one package.

20:08.900 --> 20:09.900
Yep.

20:09.900 --> 20:13.900
You can see there's a no-module folder that has the package inside.

20:13.900 --> 20:18.900
And this is sort of the MPM translation output of the package.

20:18.900 --> 20:21.900
So, if you publish any package to MPM in TypeScript,

20:21.900 --> 20:25.900
we will automatically translate two JavaScript for you for MPM users.

20:26.900 --> 20:29.900
And users can just import it using JSX and MPM,

20:29.900 --> 20:32.900
or sorry, MPX JSR, whatever.

20:32.900 --> 20:34.900
And actually, in the future,

20:34.900 --> 20:38.900
we're hoping to sort of have more native integration with package managers like MPM,

20:38.900 --> 20:42.900
so that users can just specify a JSR colon something,

20:42.900 --> 20:45.900
something in their dependencies rate in their package JSON,

20:45.900 --> 20:48.900
and just have it installed out of the box.

20:48.900 --> 20:50.900
Yeah, we'll see where that goes.

20:50.900 --> 20:52.900
Does that answer your question?

20:52.900 --> 20:53.900
Cool.

20:53.900 --> 20:54.900
Anyone else?

20:54.900 --> 20:57.900
Yes.

20:57.900 --> 20:58.900
Yes.

20:58.900 --> 20:59.900
It's fine.

20:59.900 --> 21:03.900
You can publish the package just now on JSR.

21:03.900 --> 21:05.900
Thank you very much.

21:05.900 --> 21:06.900
Yes.

21:06.900 --> 21:08.900
All right.

21:08.900 --> 21:12.900
Perfect.

21:12.900 --> 21:15.900
Anyone else?

21:15.900 --> 21:16.900
Anyone else?

21:16.900 --> 21:17.900
Anyone else?

21:17.900 --> 21:18.900
Anyone else?

21:18.900 --> 21:19.900
Anyone else?

21:19.900 --> 21:20.900
Anyone else?

21:20.900 --> 21:23.900
Publish a package suddenly?

21:23.900 --> 21:24.900
Cool.

21:24.900 --> 21:26.900
If you have any other questions, feel free to reach out to us.

21:26.900 --> 21:31.900
You can join our weekly open working group meetings and office hours.

21:31.900 --> 21:32.900
Ignore this dinner.co link.

21:32.900 --> 21:34.900
We don't have a redirect service on JSR.

21:34.900 --> 21:37.900
It's domain, but yeah, this is like an open meeting on discord,

21:37.900 --> 21:40.900
where you can join every two weeks.

21:40.900 --> 21:41.900
I think on Thursday.

21:41.900 --> 21:46.900
And yeah, you can just chat with folks using JSR.

21:46.900 --> 21:48.900
And yeah, if you want to try JSR yourself,

21:48.900 --> 21:51.900
and if you want to contribute, or just see you look at the source code.

21:51.900 --> 21:52.900
JSR.

21:52.900 --> 21:54.900
That's how you're always slash JSR on GitHub.

21:54.900 --> 21:55.900
Cool.

21:55.900 --> 21:56.900
Thank you very much.

