[GSoC 2023] .NET Developer Platform - Final Report | Haiku Project

“If there are no OS restrictions”.
On Haiku, my preferred tool to work with .NET is… PE.

Also, for Visual Studio Code, there might be a way to port its server (based on node.js) and then connect to it through the ssh from another computer, or through some kind of tunnel from the online browser-based frontend.

1 Like

The VSCodium fork is better, it doesn’t have telemetry and bloated stuff, it’s a better port candidate!

" binary releases of VS Code without MS branding/telemetry/licensing"

1 Like

I agree but that still doesn’t remove the Electron dependency. Electron is based on the Chromium browser sources. Chromium is not and will likely never be supported on Haiku. The closest we can hope for in Electron apps are something patched to use HaikuWebKit. The best we can hope for in .NET is Haiku GUI bindings.

1 Like

Vim/Neovim can be set up as a decent .NET development environment… but it’s not everyone’s cup of tea. There’s an OmniSharp plug-in that makes code completion work really well too. But the last time (it’s been years) I did any serious .NET development OmniSharp was still build on Mono. If it’s been ported to .NET 8.0, it might be possible to get it to work on Haiku aswell.

Most text editors (like gedit and Notepad++) have basic code highlighting for .NET languages.

I believe GNOME builder works well with C# but that’s likely GTK focused.

I’m not certain how feasible it would be to get Jetbrains Rider working on Haiku. I believe it’s a Java application so it might be made possible to get it to work on Haiku but it’s a paid tool so that’s not really an option.

VS Code (or variants) can be made to run in a browser so Electron would not be necessary per se… but I’m not certain how well Haiku browsers integrate with the features used in VS Code.

A native Haiku IDE with support for .NET languages would be awesome, eventually… even if it’s only code highlighting at first.

1 Like

Electrom can be replaced by Neutralinojs and using HaikuWebKit, Neutralinojs is lighter and easier to port:

“In Electron and NWjs, you have to install Node.js and hundreds of dependency libraries. Embedded Chromium and Node.js make simple apps bloaty — in most scenarios, framework weights more than your app source. Neutralinojs offers a lightweight and portable SDK which is an alternative for Electron and NW.js. Neutralinojs doesn’t bundle Chromium and uses the existing web browser library in the operating system (Eg: gtk-webkit2 on Linux). Neutralinojs implements a secure WebSocket connection for native operations and embeds a static web server to serve the web content. Also, it offers a built-in JavaScript client library for developers.”

Neutralinojs uses MIT license!

1 Like

The solution is to use browser or replace Electron.

2 Likes

Thanks for the link! Bookmarked on GitHub! If Nutralino can be fashioned into a full replacement for Electron, that’ll open many possibilities. There’s quite a few bugs listed in the issue tracker but it’s written in C++. Tauri might be out of reach of our Rust port but maybe that won’t matter.

3 Likes

OmniSharp is still the thing powering the C# extension for VSCode, so…

Also, unless some deprecated stuff are used like BinarySerializer, .NET 8 has quite good backwards compatibility, so many older .NET Framework/Mono-era binaries can still be run.

That was what I meant, if somehow the community is really reluctant to port Chromium and/or Electron.

In that case we would only need to port the Node.JS core of VSCode and then connect remotely there.

2 Likes

Thank you for your recommendation, but I intended Haiku specific solution.

So this is what I expected. VScode is MS official recommendation for OS which they don’t provide VS to.

Chromium based solution like Electron is not viable for near future, so VScode server with modern browser looks relatively feasible.

So sometimes I try vscode.dev with WebPositive but it doesn’t work well by WebSocket misbehavior. I couldn’t try epiphany these days (because dependency conflict with Firefox development environment). It seems more work to execute VScode frontend reliably.

Unix domain sockets support has been added, yet to be implemented in Webpositive. Solution would be to port Neutralinojs to Haiku, replacing Electron.

What would UNIX domain sockets be useful for in WebPositive? There certainly are no plans for that currently.
It may be useful for webkitgtk, but currently the goal for the Haiku port of WebKit2 is to use ports and BMessage for communication.

I don’t see how domain sockets would help with electron-like things, anyway?

Some application that makes use of socket in browser.

There are software that use socket in webkigtk.

In the case of Webkit2, it depends on the use and what it will run inside, you would have to carry out tests with popular applications to find out if you need a socket or not.

Alternatives to Electron use socket if they use webkit or webkitgtk.

As reported in the ticket, softwares uses IPC socket, this is an important issue, because without it, ports will not work properly!

https://dev.haiku-os.org/ticket/18204

As I just wrote, HaikuWebKit does not use and does not plan to use WebKit POSIX backend for this.

This is not accessible at all to “applications” in WebKitGTK. It is an internal thing to WebKitGTK, to communicate between the WebProcess and the NetworkProcess.

Has anyone thought about seeing if the open-source (ish) JetBrains IDE works on Haiku? It’s Java-based, has support for C# as well?

1 Like

Awesome job!
.NET is really needed on Haiku! And the fact that there are .NET bindings to Haiku UI is great!

1 Like

It implies many things: syntax highlighting, connecting to an LSP and providing code completion, jump to definition, support for MSBuild, debugging and more.
There are some code editors for Haiku (non-IDE) that might support C# syntax highlighting but this is as far as they get. We need a fully functional LSP based on Roslyn first. Then we might think of how to integrate it into an existing IDE.

I wish I could use VS Code but it’ not an option… What about contributing to Genio instead?
Assuming we have a running instance of Omnisharp, we should be able to implement syntax highlight for C# quite easily and with a few changes (hacks?) we could change the LSP (Genio uses clangd as of now).

3 Likes

You can install haiku packages into a different prefix if you want, install ephphany to say ~/epiphany/ or something, with it’s dependencies

Are you confusing socker with websocket? those are two very different things.

1 Like

I used socket in the context of the ticket in socket IPC, it depends on the language used in the software or applications that make use of websocket, but it depends on the language and software used to create applications.

This is what you said. UNIX domain sockets have nothing to do, at all, with websockets. Websockets have been supported in WebPositive for several years now.