Skip to content

Migration from Notan #746

@Stoppedpuma

Description

@Stoppedpuma

Currently, Oculante is starting to fail to run and build on multiple systems, these in include the following:

  • (Run) Ubuntu >=24.04

  • (Run) Debian >=13 (GNOME)

  • (Run) Arch Linux (GNOME)

  • (Run) Anything using GNOME Wayland >=46 (Might affect earlier versions as well)

  • (Build) NetBSD (May fail to run next release, fails to build master)

  • (Build) NetBSD nasm >=3.0

  • (Build) Linux with CMake >=4.0 (Currently known to affect NixOS build system)

There's a big issue which I've learned of from #743, NetBSD does not support Vulkan. This means that NetBSD may or may not be unable to build notan/glsl-to-spirv because of CMake 4.0+, nor can NetBSD use notan/shaderc since it requires Vulkan. This leads to the next section of this issue.

Moving away from Notan:

Currently, there's been plans to move to Bevy, or to go without an existing engine, creating our own implementations. Bevy seems to be the preferred option and would solve all of our issues we are constantly hitting with Notan. We also wouldn't have to worry about it being abandoned any time soon since it's a large project with a source of income via sponsors. This is a good thing, Bevy is well backed, has desirable features, and makes development easier in the long term.

This seems perfect, right? Turns out, unfortunately not. @0323pin raised an issue at #743 regarding our current build issues and has tried to build a few Bevy examples and they will seemingly not run. This is our only major issue that we know of with a bevy implementation so far.

What moving away from Notan accomplishes:

Notan has been our existing backend, it's done well I would say. So what's the issue with it? Notan is practically deprecated and is at the point where it's just causing more issues than it's worth. To keep this already long enough issue a bit shorter, this mainly consists of Notan specific bugs which will likely never be fixed in it's current state, parts of the codebase becoming a mess from Notan, preventing us from updating egui, and causing issues when building.

Moving away from Notan solves a bunch of problems and makes a bunch of improvements such as:

  • A cleaner code base
  • Less hacks to solve Notans shortcomings
  • Being able to stay up to date with major dependencies like egui
  • Solving build and runtime issues
  • Fixes for Wayland
  • Performance improvements
  • Reducing build time

And probably a thousand more that I can't begin to think of until we make an implementation

Where this leaves us:

Oculante is probably the only project that does image viewing in an experience which I would describe as great or impressionable. I've introduced this project to several friends, all of which have fallen in love with Oculante. I would like this to run under as many operating systems as possible (within reason) for anyone to be able to use Oculante and experience this awesome program. The problem is, where do we go from here? Bevy seems to only run on the 4 major operating systems (Windows, macOS, Linux, FreeBSD). This prevents existing NetBSD users to continue use as well as from supporting other operating systems in the future.

So what do I think our options are? Well that's a bit of a handful. We could do any of the following as I see it:

  • Attempt to get Bevy to run on NetBSD
  • Create our own implementations
  • Use / create an implementation specifically for NetBSD
  • Drop NetBSD

If anyone reading this has anything to say on the matter, please feel free to leave a response!

The next release (0.9.3)

As of writing this, It's been 10 months and a day since the last release of Oculante. To summarise, there's been a shortage of time to work on Oculante, and this big task isn't helping. A release of 0.9.2.1 could technically release at any point with a few changes and fixes. The next major release on the other hand should have these changes and will take a while to get things perfect and make a bunch of the changes we want to like removing old useless dependencies.

Sub-issues

Metadata

Metadata

Labels

dependenciesIssues / PRs related to dependenciesecosystemnextrelease blockerMust be fixed before the next release is published. This should be used for critical issues.

Projects

Status

No status

Relationships

None yet

Development

No branches or pull requests

Issue actions