List of Tasks
From Gnash Project Wiki
Developing a large project like Gnash takes financial support if we ever hope to become more compatible. We have a number of tasks that really take a full-time development focus that we've listed. Please consider helping us achieve these goals.
- If you have any interest in helping out as a developer, contact rob at openmedianow.org, or email the Development Mailing List at email@example.com.
- If you'd like to donate money via Paypal, please use the links on the donations page and mention which task you are interested in supporting, so the funds can go to the right developer.
Petter Reinholdtsen started a pledge on http://www.pledgebank.com/gnash-avm2 to try to raise funding to get AVM2 support into Gnash, and it is open until December 24th, 2010. As he succeeded in raising the $1400USD that was his goal, now we're looking for someone to sign up for this task.
We're sponsoring 4 senior CS students from the university of Colorado at Boulder for two semesters, introducing them to both free software, and distributed project development. To be successful, this task needs a lot of time to manage. It would be nice to have some funding to cover expenses during these many months, as this task is currently unfunded, but we're doing it anyway. More information on the CU_Sr_Project is available on that link.
To properly work well on mobile devices, as well as the current generation of desktop systems, Gnash shouldn't be using AGG and software rendering by default. This task is to add renderer support for both OpenVG and OpenGLES2, as both of these use hardware acceleration if present, and drop back to software rendering if not. This task is currently funded till Feb, but to be truly finished, will take several more months.
We try to do a release before the code freezes for Ubuntu and Fedora, and this is a very time consuming task. It takes about 3 weeks of full time effort to do a release correctly. This task has usually been unfunded, which makes it hard to put time into quality releases.
We currently use buildbot for automated builds and testing. The primary person person maintaining this would like some funding to cover the time involved in keeping it all working. This task takes a daily commitment, often followed by hours of fixing bugs.
ActionScript 2 compatibility
Various parts of the ActionScript 2.0 API are still unimplemented, including blend modes, bitmap filters, some BitmapData functions, Microphone and Camera classes and RTMP NetStreams. Other elements would benefit from an overhaul, particularly text handling. See also benjaminwolsey.de for more details.
Improved control and output
Gnash is useful to manipulate and output SWFs as screenshots, videos, audio tracks etc. Gnash currently has the ability to generate screenshots in JPEG and PNG format, and to produce a raw video rendering of the SWF as it's played.
Improvements could include a python interface to control SWF playback (including mouseclicks, key presses and other user input) and output directly in video formats such as OGG theora.
Performance improvements: rendering
Most of the times rendering of an SWF content is the first CPU time consumer in a Gnash run. One development branch (hwaccel) is focused on improving that by delegating some rendering operations to specialized hardware, but there are also other possible optimizations:
- Rendering only invalidated regions. This is teoretically already implemented but needs to be regress-tested and improved (0.8.9 shipped with any gotoAndPlay operation triggering full-rerender no matter changes) --strk;
- Rendering only at a user-configured rate. Rendering is currently done whenever the stage changes (based on InvalidatedRegions detection). In turn, stage may also change on user event like mouse-move, resulting in even higher rendering loop rates --strk;
- Optionally rendering to a smaller buffer and scale-up in a single operation (optionally done by hardware, but should improve performances even if done by software). This used to be partially implented under the name of XV hwaccel, but disappeared in recent code tree --strk;