FAQ -- what's a good place to start coding?

Paul Rohr (paul@abisource.com)
Fri, 17 Sep 1999 19:03:07 -0700


The AbiWord codebase has grown to the point that it's not always easy for
newcomers to figure out where to jump in and start making an immediate
difference. So, here are answers to a few frequently asked questions:

- I want to become an AbiWord developer. Where should I start?
- No, no, I want to really dig in & do something meaty. Where do I start?
- Wow, that's just too much choice. Can't you just pick something for me?
- OK, now I know what I want to work on. How do I get started?
- Who should I ask about a given section of the code?
- Hey, mind giving me some remedial programming advice while you're at it?

Enjoy!

Paul

======================
FAQ for new developers
======================

I want to become an AbiWord developer. Where should I start?
-------------------------------------------------------------
The usual way for most people to start is to grab a copy of the source code,
troll through Bugzilla or the feature roadmap, pick something they find
interesting, and just dive right in.

No, no, I want to really dig in & do something meaty. Where do I start?
------------------------------------------------------------------------
What kind of coding background do you have (or want to learn)? I'm figuring
you'd want to dig deep into a specific portion of the codebase, but not sure
which'd be most appealing to you out of the following set:

- dialogs
- graphics file formats
- document file formats
- pixel-twiddling GUI work
- nitty-gritty text formatting and layout

If you like doing dialogs, we've got a bunch of unimplemented ones, many of
which simply replicate existing toolbar or ruler functionality. From there,
you could move on to implementing core functionality which existing dialogs
expose, but don't support. (For example, the insert break dialog handles
page, column, and two kinds of section breaks, but we need a bit of
formatter work to support even/odd page section breaks.)

If you like messing with graphics file formats, we need importers to convert
various raster image formats (JPEG, GIF, BMP, etc.) to PNG. From there, you
could move on to dealing with vector graphics, building on Matt Kimball's
preliminary work with SVG and eventually adding WMF support.

Ditto for document file formats. Right now, we have pretty functional Word
and RTF importers which are being actively maintained, plus a minimal RTF
exporter which needs a maintainer. Minor tasks would be to help the current
maintainers flesh those out some more. More significant projects would be
to tackle a new importer (perhaps WordPerfect) or exporter (Word 97,
WordPerfect, etc.).

If you're a pixel-twiddling user experience kind of person, we need someone
to add code to toggle various UI elements on and off (toolbars, rulers,
status bars) and add more context-specific menus (say, for images). With
more work, the rulers could be enhanced to allow you to change the document
margins. Also, our page layout view doesn't currently support side-by-side
pages. Stuff like that.

Finally, if you want to really get into the guts of the word processor, we
need to do more complex formatting effects. You could start with something
simpler at the character level (say subscripts and superscripts), move on to
alignment stuff (tabs other than left-aligned) or perhaps full paragraph
justification. From there you could move on to more complex stuff, like
enhancing our existing basic support for styles or headers and footers, none
of which currently have any UI support for editing them. Beyond that,
there's lots of stuff still to do, including lists and tables.

Does that give you enough to pick from? :-)

Wow, that's just too much choice. Can't you just pick something for me?
-----------------------------------------------------------------------
Sure. Every week we post a new "Project of the Week" (POW) to the
abiword-dev mailing list, giving a fairly detailed description of one
high-priority task we need someone to tackle.

http://www.abisource.com/mailinglists/abiword-dev/99/September/0097.html

If this week's POW doesn't sound interesting, wait a week. Or, better yet,
scan backwards through the mailing list archives to see if there are any old
POWs which didn't get claimed.

OK, now I know what I want to work on. How do I get started?
------------------------------------------------------------
Dive in, start looking at the code, and ask questions when you get stuck.
Folks on the developer mailing list try hard to make sure that willing
coders get their questions answered in a timely fashion.

Who should I ask about a given section of the code?
--------------------------------------------------
Of course you can always send specific questions to the abiword-dev list,
but if you want to figure this out yourself, you have a variety of possible
cues, including:

- the CREDITS file,
- past traffic on the list, and
- Bonsai.

I'm particularly fond of the last tool, because when browsing a particular
file or change, you can determine who added a particular line of code and
why. (If you've never used cvsblame, it's really worth giving it a try.)

Hey, mind giving me some remedial programming advice while you're at it?
-----------------------------------------------------------------------
Probably, so be sure to ask nicely. :-)



This archive was generated by hypermail 1.03b2.