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

Rendering? #2

Open
FlorianRappl opened this issue Nov 24, 2016 · 24 comments
Open

Rendering? #2

FlorianRappl opened this issue Nov 24, 2016 · 24 comments

Comments

@FlorianRappl
Copy link
Contributor

See AngleSharp #26 for the full discussion.

The IRenderDevice will be part of that story, even though the CSS library won't build up a render tree. Nevertheless, the CSS library will contain everything to make style computations and empower a rendering library in the task to derive the render tree.

@bjorn-ali-goransson
Copy link

Hi. Nice work, amazing to see just 1 person doing all this (I mean the <#> project as a whole).

What did happen to the renderer idea? I'd like to tinker with a new Html>PDF converter, so came here from HtmlRenderer which as you know is more or less dead.

@FlorianRappl
Copy link
Contributor Author

Thanks for the encouraging post @bjorn-ali-goransson! Yeah, the idea is not dead, actually currently I am trying to allocate some time again for AngleSharp development. My current plan is to try to bring AngleSharp.Css up to speed which would allow me to release AngleSharp.Core v0.10 and AngleSharp.Css in v0.1.

After that I want to focus mostly on providing a (simple) renderer, which would be similar to the HtmlRenderer. Additionally, I am thinking of a project for a cross-platform GUI framework that uses the renderer + a React-like paradigm (so you would write C# code to declare components with a Render function that uses a DSL to specify what components to create / bring to the DOM). But all of it music of the future.

Regarding the timeline I cannot promise much, but hopefully somewhere between April and May I could be close / release the simple renderer.

@bjorn-ali-goransson
Copy link

bjorn-ali-goransson commented Jan 17, 2018 via email

@galvesribeiro
Copy link

@bjorn-ali-goransson the major reason I follow Anglesharp and gave up of htmlrenderer is that Anglesharp has a big potention of becoming a de-facto web runtime engine for .net/.net core.

I have huge need to develop UI for embedded devices in HTML but none of the web runtimes I've found (CEF, libchromium, webkit) are lightweight enough nor support embedded (ARM) devices.

So I would really love to have the core rendering working so I could render to a GFX device, like for example a byte[] as a pointer to a framebuffer.

Once we have basic rendering of the HTML, I would quickly integrate it with a drawing backend, like for example, Skia. From that point, it would be easier to have WPF/WinForms/UWP integrated with it...

@bjorn-ali-goransson
Copy link

bjorn-ali-goransson commented Jan 17, 2018 via email

@bjorn-ali-goransson
Copy link

bjorn-ali-goransson commented Jan 17, 2018 via email

@bjorn-ali-goransson
Copy link

bjorn-ali-goransson commented Jan 17, 2018 via email

@galvesribeiro
Copy link

The whole adapters folder is relevant. It contains functions for loading
fonts, measuring string dimensions (for text wrapping), drawing paths,
images and other things.

That is the work of the render @FlorianRappl was thinking of.

Also, on another note, rendering is not the same as having a web runtime.
That would be a separate, more complex package. I refer only to the
rendering of a snapshot of page, not reflecting updates to the dom nor
handling any events.

I know. Like I said, I would like to have AngleSharp as the HTML5/CSS core of a web engine. As much as it can parse/update a DOM in memory, I'm more than happy to implement the hooks for the DOM events on top of that, and later on, have the Drawing layer attached to it as well.

I'm not saying I would have a full blow browser (who knows?!?!?), what I'm saying is that I would like to have a web-like UI framework (i.e. like react) that you can write your JS/TS and works with the DOM.

@FlorianRappl
Copy link
Contributor Author

I'm really loving the discussion in here, maybe I should just upload what I already have (hopefully I'll find the time in the next 1-2 weeks to structure / push it) with the hope that it forms the basis for future collaboration. Fact is (and why AngleSharp stalled in the recent year) with me alone it cannot scale. Some people contributed, but we need a continuous / uniform approach here where a group of people maybe also has some online meetings and works out a roadmap together (such that we are on the same page).

No pressure here, just some thoughts. A would love to have a lightweight and extensible renderer. Performance-wise it could not compete with a webbrowser, but the mission would of course be to improve it then iteratively.

@bjorn-ali-goransson
Copy link

bjorn-ali-goransson commented Jan 17, 2018 via email

@bjorn-ali-goransson
Copy link

bjorn-ali-goransson commented Jan 17, 2018 via email

@galvesribeiro
Copy link

As we previously discussed on Skype @FlorianRappl, you can count on me as well to make this happen. I told you back last year that once you have pushed something to GH, we could see what is missing and start thinking on how to approach that.

Thanks

@bjorn-ali-goransson
Copy link

@FlorianRappl IMO just upload whatever you have got, however unready it may be. There's no harm in publishing anything unfinished.

“If you're not embarrassed when you ship your first version you waited too long.” –Matt Mullenweg

@prepare
Copy link

prepare commented Jan 22, 2018

CHEER!

@bjorn-ali-goransson
Copy link

@prepare What's this little thing you have here??? https://github.com/LayoutFarm/HtmlRenderer

@prepare
Copy link

prepare commented Jan 24, 2018

Hello, @bjorn-ali-goransson

What's this little thing you have here??? https://github.com/LayoutFarm/HtmlRenderer

check it out :)

@bjorn-ali-goransson
Copy link

I did! Looking good!

@bjorn-ali-goransson
Copy link

bjorn-ali-goransson commented Feb 4, 2018

@FlorianRappl you seem to be an amazing developer but I am noticing a lack of überblick here. We are all waiting because you want to release more complete functionality than what is currently in a working condition in your codebase. This is clearly not optimal.

As for what I'm concerned, I currently have a large client (39bn+ EUR annual turnover) who want's a better PDF renderer and if this is any better than Arthurs, we'll use it immediately. But neither do I want to privately fork that code (several additional projects in our compile pipeline), nor do I want to publish it as a NuGet package that will soon be abandoned, enlarging my OSS footprint with unnecessary garbage.

Let me propose the following roadmap which we can quickyl decide on, or I will have to move on.

Proposed roadmap

Phase 1

  1. Push @prepare s code to @FlorianRappl s new Renderer repo. Publish repo at once.
  2. Get rid of custom parser - use AngleSharp.
  3. Push to Nuget prerelease, 1.0-alpha.
  4. Improve continually at GitHub.

Then, we may start benefitting from an OS .NET PDF renderer today, from a project which is ALIVE and not dead. Seeing all the forks scattered from Arthurs code feels almost post-nuclear.

Phase 2

  1. Push @FlorianRappl s code to repo. Publish repo at once.
  2. In order not to break anything for upgrading users, take note of any functionality that is currently missing in @FlorianRappl s code that is implemented in 1.0-alpha.
  3. Implement any missing features from @prepare s code.
  4. Push to Nuget prerelease, 1.0-beta.
  5. Improve continually at GitHub.

Phase 3

  1. Make roadmap for 1.0.
  2. Push code from 1.0-beta
  3. Implement roadmap.
  4. Push to Nuget, 1.0.
  5. Improve continually at GitHub.

@bjorn-ali-goransson
Copy link

@prepare Would you be OK with me forking your repo and taking some PRs if I find any room for improvement? I really don't have time to wait for this disccussion to finish.

@FlorianRappl
Copy link
Contributor Author

@FlorianRappl you seem to be an amazing developer but I am noticing a lack of überblick here.

Thanks for the words, but I guess its not about the overview here. Time is the problem and actively contributing is currently an issue with family and other (mostly paid) projects having a higher prio. I guess thats understandable.

The proposals are all good, but at the end of the day the question is: Who will do the work? As you can already see with all the traveling and other things I am pursuing I can't even manage to find a couple of hours to get the old code base lifted from my PC to a public repo (and this is not about making it perfect - it's just about some basics; having it building again, have at least basic infos in a README and all that essential stuff).

Since we have a (sketched) roadmap the question is - what's the proposed timeline?

@bjorn-ali-goransson
Copy link

I was meaning with überblick, to say the overall, "birds-eye" view, in lack of a good word in english (my actual german is almost zero, but it's pretty close to swedish).

With this I mean that if you're lacking the time to make it build, then you may at least have the time to delegate 😁. I mean, phase 1 involves/requires no actual development work on your part.

What: Phase 1
Who: I'll do the development required (step 2 and 4), you will need to do step 1 and 3.
When: Personally, I need to have phase 1 done (steps 1-3) in maximum ~5 days time.

I won't bother you with lots of pushes to NuGet nor lots of PRs. I'll keep it at a minimum 1 or (hopefully not needed) 2.

@prepare
Copy link

prepare commented Feb 6, 2018

Hello @bjorn-ali-goransson,

Would you be OK with me forking your repo and taking some PRs if I find any room for improvement? I really don't have time to wait for this disccussion to finish.


Lets do it!

Please don't use any copyleft code =>
I will bring your improvement back to merge with my repo.
And I also welcome your PRs.

Cheer!

@bjorn-ali-goransson
Copy link

@prepare , your project seems extremely tangled and not fit for what I have in mind. The projects seem too intertwined and difficult to make out anything of (in my timeframe, at least).

What you are achieving though seems phenomenal.

I have to start out with Arthurs code however bad it may be.

@prepare
Copy link

prepare commented Feb 6, 2018

@bjorn-ali-goransson, It is OK :)


Arthurs code is not bad.

(I started from it.)

@FlorianRappl FlorianRappl removed this from the v1.0 milestone Jan 15, 2023
@FlorianRappl FlorianRappl added this to the vNext milestone Jan 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants