Here's a list of unallocated tasks we’ve identified that we'd like new developers to the project to help us with. Obviously as the project progresses this list will change considerably. Please contact us to let us know which task(s) you would like to have a go at, or suggest something else.
To help you decide which tasks to tackle, the developers who know the source code well have provided an approximate difficulty rating between 1 and 5 for some tasks. Choose tasks with a low number to break yourself in gently, or a high number if you fancy a challenge! The rating is shown in brackets after the task heading. There's plenty of advice available from the developers on the mail list, so if you have any questions or need more information about any of these areas, just email
.
Bug Fixing
One of the best ways for new developers to start working on Xara LX is to try fixing a bug or two. See the bug list in Bugzilla and see what you can do.
Filter Development
Xara LX supports a powerful mechansim that allows third parties to implement and test plug-in import and export filters, without building or changing Xara LX itself. Filters must convert data to and from the Xar format. We provide helpful example code (including a complete example filter), documentation and a helper library to make developing filters as easy as possible for external developers. See the filter development page for details.
These are just some of the file formats we'd like developers to work on:-
- EPS output, to support PS level 2 and 3 (this mostly works but does not exploit PS level 2 and 3) - Full native AI import / export (this mostly works). - PDF import and export (to replace current import-PDF-as-bitmap option) - SketchUp import / export -
Cairo
export (possibly import of
Cairo
metafiles) - RTF import filter (rich text import) - WMF and EMF import / export (we already have filter code that does 80% of this already) - Window
Vista
vector file format import / export
Mac Portability (3)
We’d like the Mac version of Xara LX to keep right up with the Linux version as the project progresses. But it's lagging behind at the moment so we really need some Mac help! So to start with, we’d like a developer that is familiar with the Mac to help with Mac-specific aspects. Currently on the Mac the application loads and renders documents but with some problems: There are still some byte-ordering problems when loading files, alpha channel bitmaps are not rendering correctly and the app has a "parent window" containing toolbars but document view windows are independent of the parent.
User Interface Work
The user interface of Xara LX is built using wxWidgets for portability. We want to make the interface as neat and compact as Xara X on Windows, whilst also achieving a native look on Linux and Mac as far as possible. A description of the Xara Xtreme user interface is here.
That’s the overall UI goal. Specifically, we’d like developers (ideally with wxWidgets experience) to get involved in the Xtreme project.
Dialog Redesign using sizers (1)
Nearly all the dialogs in Xara LX have been produced by converting the windows resources. These are fixed size dialogs, where the position of every item is recorded. What we should be doing is using wxWidgets' sizer system, so that dialogs will take any font, and any translation, and still look right despite the size of text changing. This should also allow some dialogs to be resizable, and will make many smaller by default. This task can be done by someone with little programming knowledge (though an understanding of the wxWidgets sizer system would be useful).
Document info dialog (2)
This displays various information about the currently active document, including a list of all the fonts referenced by it. Fonts that are referenced but not installed are flagged. The dialog also lists effects used in the design, but this is not required for Xara LX, at least for the first release. The dialog is displayed by selecting the Document Info option in the File menu. Requires kno
wledge of the Dialog resource system. This depends on a custom list control which requires reimplementation.
It's possible to legally download and install Microsoft core fonts (Arial, Times New Roman and Courier) on Linux. Since many existing XAR designs use these fonts, it's useful for Xtreme users on Linux to have them installed. So we'd like someone to build a separate autopackage that we can distribute to make it easy for users to get these fonts installed.
Enable Xara Xtreme's mechanism that allows clipart (XAR designs) to be downloaded and installed into the clipart gallery, making these designs easily available to all users. The same mechanism is used on Windows to download movies automatically. We need the same capability to be ported and enabled in Xtreme on Linux.
File Drag & Drop
Implement XAR file drag and drop, so that users can drag files from their desktop or file browser and drop them onto Xara Xtreme to open them. Needs to work on both KDE and GNOME desktops of course. Also drag and drop of all the file types that Xtreme will import, so that users can (for example) import a photo by dragging it from their file browser and dropping into an open Xtreme design.
[Enabled from 0.7, but needs testing on different distributions and desktops]
Cut, Copy & Paste (4)
Internal cut, copy and paste already work ok, but you can't paste in from other applications yet.
Depends on: selops subsystem (which is now working)
Can be done in phases: Phase 1 would be just to get the internal clipboard working within a single document. Phase 2 would be to get the internal clipboard working between docs. Phase3 would get clipboard realted functions such as Paste Attributes, Delete, and Clone working. Phase 4 would be to connect to the external (wxWidgets) clipboard.
You'll find a list of things we need to do before 1.0 here.
We disabled a lot of bits while porting the application. A list is being built in the file "portnotes" at the root of the XaraLX repository. You will see all the code bracketed by
#ifndef EXCLUDE_FROM_XARALX
... code ...
#endif
That construct means we disabled it, but want it renabled eventually. If you are disabling things that are temporarily broken, please use the same construct, and remember to document it in "portnotes". If you are reenabling things, remove the #ifndef, get it to work, and after you have patted yourself on the back, please fix up portnotes too.