atlas-engineer / nyxt

Nyxt - the hacker's browser.
https://nyxt-browser.com/
9.64k stars 404 forks source link

Write the GUI in CL #3346

Closed daninus14 closed 4 months ago

daninus14 commented 4 months ago

DISCLAIMER: I am not associated with McCLIM in any way, nor am I writing any GUIs in CL. I just think this would be for the best both of Nyxt, lem, and the CL ecosystem.

Purpose of request:

Describe your proposed change:

Why do you believe this to be an improvement?

While McCLIM is not perfect and not finished, in the end, it will probably be much easier to continue development in any project based on it than having to deal with FFIs. Even if it's not electron because of the security vulnerabilities and slowness and other issues, and you decide to go with another toolkit, there will be technical costs in dealing with FFIs.

Whatever other issues exist with McCLIM, by Nyxt and lem developers contributing, the improvement will probably be tremendous for the CL community.

Additional context/User story:

I am not associated with McCLIM in any way, nor am I writing any GUIs in CL. I just think this would be for the best both of Nyxt, lem, and the CL ecosystem.

Contact McCLIM #clim @ libera.chat jackdaniel is currently in charge of the project and it is actively maintained.

I am sure there are tons of people that know more about this than I do. I know there will be a lot of people reading this who will think "I've used whatever CL GUI libraries and they #&!%", but that's the point. They may not be great, but they are advanced enough that with a serious contribution from active lispers involved in GUI development, they will not longer be bad. Furthermore, the McCLIM project is not only actively being developed, but it's open to contributions, so this would be a collaboration project rather than Nyxt simply being a client of some third party library. This will give you say and power in how to improve the library so that it suits your needs and is convenient to use.

Screenshots/Mock ups:


Pre-Build Checklist:

daninus14 commented 4 months ago

Link to the same proposal for lem: https://github.com/lem-project/lem/issues/1310

daninus14 commented 4 months ago

Just a clarification

The Goal of this proposal is to write the GUI using McCLIM.

The collaboration with McCLIM would probably be in terms of contributing bug fixes, posting issues, and making requests as you develop your application.

That in itself will probably benefit McCLIM greatly, and maybe if there are features missing that you discover you need as you are developing, you can probably also code them and push them as PR. This seems much easier than writing the FFIs for electron and dealing with the FFIs to begin with.

aadcg commented 4 months ago

Nyxt's goal is to be a platform on top of any web renderer. Since McCLIM isn't a web renderer, I don't see the relevance of this suggestion.

Would it be nice to have a web renderer in CL? Sure, see https://github.com/atlas-engineer/closure. Estimate the kind of resources needed to achieve such a goal, and the conclusion follows.

aadcg commented 4 months ago

Regarding lem, note it than runs on top of ncurses (TUI) and sdl-2 (GUI). I think it would be interesting to run lem on top of a web renderer and, in particular, in Nyxt. See https://github.com/lem-project/lem/issues/543 and https://github.com/lem-project/lem/issues/415.

daninus14 commented 4 months ago

Ok, thanks for replying and giving this some thoughts!