Re: [AD] 5.2 - What's needed?

[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]


My vision for 5.2 rests on largely abandoning the dual branch setup we have right now. Currently, we have many 5.0.x releases and many 5.1.x releases made from separate branches. The 5.0.x releases required a lot of work to make because 5.1 branch diverged so much from 5.0 branch. Not only that, this divergence meant that we couldn't make some refactoring in 5.1.x because it would make this backporting even harder. Lastly, because it was so hard, many bug fixes were not backported, causing the 5.0.x branch to be in practice buggier than the 'unstable' branch. With Allegro being somewhat undermanned, I personally think it is important to streamline the development process as much as possible.

What I envision is developing only on a single (master) branch. We would annotate some functions as unstable by wrapping them in ALLEGRO_UNSTABLE_FUNC which would require you define ALLEGRO_UNSTABLE before including allegro.h. This way we can screw around with that unstable API without breaking ABI compatibility (as long as you don't use the unstable API). Then, whenever we want to want to make a stable release, we'd branch off this master branch for a release branch (e.g. 5.2.0 itself) which would have a few release candidates and perhaps even emergency bug fixes. You would be able to use unstable API in the 5.2.0 release, but only if you opt into it like above. Most importantly, when the time comes to release 5.2.1 it would be branched off the master branch and *not* from the 5.2.0 branch. This way, there will not be this divergence that made it increasingly impossible to make stable releases, but we still are able to make important bugfixes to the stable release. I honestly think that (after some initial investment to annotate the API) this will be a lot easier to deal with.

Another advantage of the above setup is that we can release 5.1 as 5.2 *almost* as is, by simply marking the API we're not sure about as unstable. The only critical issue I see is the video addon, as it really seems that it might be 100% unstable, and that's just not very neat. In my mind, the most important thing to do now is to take a hard look at it and see what needs to be done on the API side. A critical issue which I don't think ever got resolved is that it was difficult or even impossible to get the audio and video to sync up. This very likely means we also need to look at the video and audio addons' implementation as well to make sure we have a way of doing it. Otherwise, the video addon also could use a proper vtable-based backend. I would also drop ffmpeg backend and replace it with webm/vp8 support (https://en.wikipedia.org/wiki/WebM). webm/vp8 is a lot better than theora as a file format, and is a lot easier to deal with than ffmpeg.

Aside from that, I don't think there's anything really critical that can't be done later. Here are some API-level things that could be fixed:

- The joystick API is a bit of a quagmire, but it'll also take a lot of work to fix. - I think we should be able to merge ALLEGRO_EVENT_DISPLAY_LOST and ALLEGRO_EVENT_HALT_DRAWING, as they are basically the same thing. - Everything Peter mentioned back in that old email is still probably true (I think the work I did on simplifying the bitmap conversion made it a more solid feature though, so I'm happy with it).

As we review the API to mark it stable/unstable, we'll probably find other issues. One note about deprecating API. In principle we always wanted to be source compatible with 5.0, so I don't think we should remove any API outright. Going forward, we can come up with some strategy to deprecate API without breaking ABI compatibility. I think this is possible, which is why I don't think the joystick stuff should hold up 5.2.

There's obviously tons of bugs around, but they are just bugs. I think the most annoying ones are the window placement bug on multiple monitors on Windows and GLES extension loading support (there's none right now).

Any opinion on this? I was going to send an email detailing the above later, but since you've asked I decided to write it up now.

-SL

On 06/12/2015 10:22 PM, Trent Gamblin wrote:
What do we need to get done before 5.2? I know tjaden posted about this but that was a long time ago and he's not around.

Not that we need to rush it, but if there are any priority things I might be able to find some time.

I haven't been working directly on games much lately so I'm not sure if there is anything out of sorts...
------------------------------------------------------------------------------





Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/