Table of contents
* Index
* News
* Screenshots
* Development
* Downloads
* Links
|
How to contribute
If you want to help develop Express, please check the
TODO and contact
Uwe Hermann or
Brian St. Pierre <bstpierre at users dot sourceforge dot net>.
You will be given CVS-access soon, and can then 'commit' your changes
directly into the CVS-repository.
You can of course always send patches, too.
Comments and suggestions are always welcome.
CVS
Express is available via CVS. Please check
these explanations
to learn how you can checkout the source.
You can also
browse the CVS-repository online
, if you wish.
Mailing-lists
There's a developer's mailing-list called
express-devel
, which is used for technical discussions, as well as (at the moment)
for announcements, user-questions etc.
express-cvs
is a mailing-list which is used to keep developers up-to-date with the
code. Every commit a developer does, is automatically reported
on this mailing-list.
Express Projectpage at Sourceforge
Besides CVS and mailing-lists, there are many other services available at
Sourceforge, such as forums or bug-tracking. You can check them all out at
the
Express Project-page
.
Coding Guidelines
If you indend to contribute code to Express, please stick to the following
coding guidelines:
-
indentation width is 2 spaces and brace style is K&R-like:
int foobar(char *filename) {
int i;
for (i=0; i<99; i++) {
foo();
bar(i, "blah");
}
}
-
don't put spaces between the parenthesis of function-arguments.
Correct: foobar(char *filename);
Wrong: foobar( char *filename );
-
do put a space after
if , for ,
while , switch etc.:
Correct: if (bla == NULL) ...
Wrong: if(bla == NULL) ...
-
put a line of asterisks before each function for better readability
- keep the files small(max. 300 lines of code per file)
- write only 80 characters/line where possible
-
procedure names should reflect what they do, function names should reflect
what is returned by them
-
if you can identify a function as returning a boolean from its name
(e.g isalpha()) then it should return TRUE or FALSE.
If the name doesn't sound like the function returns a boolean
(e.g. do_this_and_that()), then it should return 0 on success,
and -1 on errors.
Note: This coding-sytle if a mixture of my own preferred coding-style and the
one version 0.0.7 of Express had. This is work in progress, any suggestions
to improve the guidelines are welcome.
Todo
There are lots of things which need to be done:
- use the newer GtkItemFactory for the menus
- make back/forward buttons work properly
- find all bugs which cause segfaults
-
compile a list of goals for this project, i.e what should be included in
this browser, what shouldn't
- add proxy-support
-
multiple browser support with gtk-xmhtml(requires the "clicked" callback
to recognise which particular browser is being invoked)
-
remote image loading(apparently you can register data retrieval function
with gtk_xmhtml_set_image_procs, to allow remote images to be loaded as
such, rather than looking for local files
-
the lower toolbar should be the full width of the window, with the URL
entry stretched to fit.
- add some commandline-parameters, at least --version and --help
-
replace all sprintf/strcpy/strcmp with the safer snprintf/strncpy/strncmp
-
draw icons for the rest of the menu-bar-items (there's only one for 'open'
at the moment)
-
draw a spinning logo on the right of the window, which indicates network
traffic, if it is rotating
-
fix code to not only display local images, but also remote ones
-
add some more menu-entries or options, e.g. "show images y/n",
"render blink-tag y/n", "render animated gifs y/n" etc. to give the user
more freedom of what he/she wants to see.
-
The menu entry "Document Source" should open a new window and display the
source in there, instead of outputting it to stderr
- add a progress-bar for downloads and loading pages
-
check the return-value of every system-call and do a perror() if an
error occurs
-
use a config-file to save preferences, especially the user "Home"-URL,
which should not be hardcoded to "http://localhost/" but freely
chosen by the user
|