flxzt / rnote

Sketch and take handwritten notes.
https://rnote.flxzt.net
GNU General Public License v3.0
8.14k stars 280 forks source link

please make current and future non-essential features optional compile-time options #213

Open herrsimon opened 2 years ago

herrsimon commented 2 years ago

Hello,

first of all, thanks a lot for this great piece of software, I'm test driving it since a few weeks and plan to switch completely (from xournalpp) once the file format is stable. This is not a feature request, but just a polite wish for adopting a dependency-conscious mindset when developing. It's great when new features are added, but it would be even nicer if these could be introduced as optional compile time options (and hence with optional build time and run time dependencies) if non-essential.

I'm particularly talking about things like sound support, pdf support (poppler), svg support, latex rendering support and, as it will sooner or later come up, video support (embedded in the file), explicit dependencies on udev or dbus (hopefully this will never happen) etc.

Of course there are certainly more important things to do at the moment, but at some point already existing features mentioned above should be refactored so that they can be disabled at compile time.

Even though most users don't care about dependencies and just install everything from their package managers, there are actually people who do build themselves and value simplicity.

Clearly treating non-essential features and their dependencies as optional (enabled by default if deemed useful for the majority of users)

I hope this post does not come across in a negative way, I don't want to lecture or point fingers here. My (in part of course selfish) hope is that rnote stays lightweight and simple enough to be fully understandable by non-core developers in a reasonable amount of time.

TeiVDK commented 2 years ago

I agree wholeheartedly. Altough not being a developer myself, I do not completely know how much more difficult this compartmentalised approach is. But if it is doable without much effort on flxzt's part, I would also like it be implemented in some way.

Rnote as it is right now, bar the (somewhat) unstable file format and some missing features, is basically all I need. So being able to decide, during building, which features to disable would be amazing :)

On a side note: Some applications like zim and joplin have taken a plugin based approach. That may or may not be more desirable and/or easier to implement.

Kreijstal commented 2 years ago

It would argue it's better to make a plugin interface rather than compile time flags. Because of testing issues. and simplicity of building.