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

[Announcement] Moving forward / New releases #102

Open
galvesribeiro opened this issue Feb 17, 2021 · 2 comments
Open

[Announcement] Moving forward / New releases #102

galvesribeiro opened this issue Feb 17, 2021 · 2 comments

Comments

@galvesribeiro
Copy link
Member

galvesribeiro commented Feb 17, 2021

Hello folks! Long time no see!

So, we've gathered Today a few PRs that would unblock some use cases and will make a release of the Canvas package updating it to Blazor stable version pre-.Net 5. This should unblock some people that was holding its usage or having to have private builds. I hope that help!

Moving forward we decided to reimplement this package using a different approach for both the 2D and the WebGL(2) contexts.

2D Context

This will support both the server-side and the WASM Blazor by having the component and its interfaces fully async (i.e. returning Task).

WebGL Context

We've asked around to some hardcore users of this library what are their current use cases and what would they like to have.

It turns out that the majority of them prefer to have a client-only mode because for performance reasons. Unlike in other client-side frameworks, Blazor to be truly 100% at the client and leverage the machine hardware acceleration, you need to run on WASM mode. Even though it is technically possible to have the WebGL instructions send over the SIgnalR transport to the client in Blazor Server side, it would neglect any performance benefits of use WebGL and would make practically unusable in certain scenarios like for example, games.

Because of all those reasons, we would reimplement the WebGL context APIs using the Blazor's Unmarshalled APIs which are only available at the WASM side. The reason for that, is because it avoid serialization of the types passed from/to C#/JS by sharing "pointers" to data structs across WASM and .Net worlds, similar to what you can do with P/Invoke in regular .Net applications and native code.

How it is gonna work?

We will first implement a very minimal API surface where you can basically issue command to those low level APIs directly with minimal .Net structs being implemented. This will be the foundation for the (almost) full .Net API around both contexts to support the HTML Canvas APIs.

Once we have that foundation working, we will start to implement strongly typed interfaces that will be more familiar to all .Net developers, which will be built on top of the low-level foundation.

When it is gonna happen?

Like I said here, we've just merged a bunch of PRs that unblocks some scenarios and will also update it to latest Blazor with .Net 5 so the package gets to an usable state again soon.

We don't expect to have another year of delay for a new release, but you know, life happens and COVID as well, which is making things to go slower, but now we will start to organize things to get back on track and follow the plan.

We'll try to put together a list of issues and a GitHub project to track milestones and new releases for this package. We can't carve in stone dates or timeframes since this is an open source project that we maintain on free time but as always, community contributions are ALWAYS Wellcome.

So, keep an eye on the issues and PRs from now on and we should have more updates relatively soon.

Thanks!

@Thaina
Copy link
Contributor

Thaina commented Feb 17, 2021

Could you please include this in release?

#100

@galvesribeiro
Copy link
Member Author

galvesribeiro commented Feb 17, 2021

https://www.nuget.org/packages/Blazor.Extensions.Canvas/1.1.1 is out.

Please note that it is not a .Net 5 package yet. This is using the latest stable Blazor version before .Net 5 release.

We will make the .Net 5 package later one.

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

2 participants