Rolling out a major version release is always an opportunity to rethink everything. Here’s a start of some random thoughts I have WRT LWJGL.
Some term definitions:
java: any JVM language
developer: a LWGL internals developer
user: programmer using LWJGL & java (and generally not doing any custom native side coding)
Choose a baseline compatibly version and nuke everything older then that.
Goals: reduce long-time developer time commitment and reduce noise presented to users.
Arguments against:
- It’ll break my program.
A) No it won’t. Version 2.x will still available. Upgrade or don’t. Choosing a library isn’t some e-peen achievement system. - I can’t scale my program as well to different targets.
A) The statistically zero percent of people where this is a concern and can actually do so will have zero problem supporting both and loading the appropriate version at runtime. - What about folks that want to use the old-school API as a learning tool?
A) Version 2.x is possible, but a better solution is to use a mid to high level API instead. Programming to a graphics API basically older than the average JGO member isn’t a fantastic idea.
The thing to remember is that you don’t need to think about today…nor even when V3 is considered usable, but when you guess that more users are writing against LWJGL 3.x instead of 2.x. Personally 3.0 is probably the furthest back in history I’d think about.
Lose functionality writable in java
No reason to be in the main repo unless they are considered important to base functionality (aka support for using the low-level…but not things like look at matricies) or used internally. One or more companion libraries (hosted by LWJGL or 3-party) should cover this functionality.
I have a fair number of other ideas, but spreading them out across time probably is better than one meta-post.