Dear Andreas,

Thank you very much for your message. Comments and proposal for how to 
proceed are after your message (quoted in its entirety since I'm cc-ing 
the xournal-devel mailing-list). Please read through and let me know 
what you think.

On 01/01/2011 04:06 PM, Andreas Butti wrote:
> Dear Denis Auroux
>
> I am a computer science student from Switzerland, before I did an
> apprentice as developer.
>
> I use Xournal since more then 3 years, more ore less all day, if I have
> school, and I really like it. But since a year there are no changes any
> more, are you still working on Xournal?
>
> Because there are no changes any more I decided to create my own Version
> of Xournal. I used your version as base and wrote my own Xournal, the
> user interface looks more ore less the same (it is complete
> customizeable, all toolbar configuration are read from configfiles, and
> there are different layout, so I can switch if I rotate my tablet).
>
> I wrote the complete backend in C++, and try to optimize the memory
> usage: your version uses much memory if you open large PDFs, because you
> hold all rendered pages in memory, this needs for a 150 page PDF about
> 500MB, my version only holds the needed pages in memory, so it needs
> about 40MB.
>
> The complete rendering is done with cairo, instead of gnome canvas. My
> version handles bookmark, and has a full-text search (through PDF
> background and Xournal contents).
>
> I first thought I will create my own project (a fork of Xournal, GPL),
> but now I'm not sure any more. Maybe we can work together? My version is
> more ore less a copy of yours, and has additional things, like
> bookmarks, search etc. but its for the same target: a free Journal
> application.
>
> I have attached some screenshots from my work. I'm working since more
> then 3 or 4 months on this, but now its nearly finished, I think I have
> more than 80% of all working...
>
> What do you think?
>
>
> ps. there is also a Chinese student which started a fork of your
> Xournal, because it has no bookmark handling etc:
> http://code.google.com/p/exournal/
>
> Yours sincerely
> Andreas Butti

*** FIRST IMPRESSIONS

The screenshots look quite impressive. I don't feel I'm completely done 
with Xournal, but work has been keeping me very busy, and you seem to 
have more free time and more energy than I do.

 From your description about using C++ rather than plain C and not using 
gnome-canvas, it sounds like this is a major code rewrite.

Am I right to assume that the internal data structure of the journal 
(items, layers, etc.) and algorithms to manipulate them (e.g. the 
eraser, the shape recognizer, etc.) remain essentially the same, and 
that most of your work concerns the rendering and interface? Is your 
version backwards compatible in terms of file formats? (this would be 
desirable to maintain for a while at least).

There's a few visible English spelling mistakes; no big deal, I or 
someone else will be happy to help.

*** IMMEDIATE PLANS FOR XOURNAL (or lack thereof)

I am likely to remain quite busy for at least a few more months, and the 
only things I'll have time to do on the existing code base will be 
maintenance, namely:

- fixing any important bugs that come up (high priority),

- if time allows: reading through carefully, fixing and incorporating 
some popular patches or often-requested features, especially "insert 
images", "autosave" are the top two, then "multicolumn + lasso" and 
"ortho/snap"; and a few others (perhaps SVG export, ...).

*** PLEASE NOTE: BUGFIXES SINCE 0.4.5; PORTABILITY

Please note: there's already been some bugfixing and other small updates 
to xournal since 0.4.5, it's all in the CVS code base on 
sourceforge.net. From the ChangeLog:

- win32 portability code (contributed by Dirk Gerrits)
- fix bug in PDF export code on 64-bit systems (by Robert Buchholz)
- fix hand tool bug when exiting canvas (#2905711)
- translations: Italian (Marco Poletti), German (Stefan Lembach), 
Spanish (Alvaro), Brazil Portuguese (Marco Souza), Czech (David 
Kolibac), Dutch (Timo Kluck)
- fix save bug with text boxes containing > 4095 characters
- fix crash upon unplugging input devices
- change close dialog box default to "save" (patch by Kit Barnes)
- option to force PDF background rendering via cairo (slower but nicer)

At least the bugfixes and win32 portability should be included (if you 
started from the main 0.4.5 tar.gz instead of the CVS version). The 
"diff -r" between 0.4.5 and CVS is still relatively small and manageable 
(if you exclude the translation files) to sort through by hand quickly.

An important other thing to keep in mind is portability. I understand 
that Xournal runs reasonably well (though not perfectly at all) on 
Windows and on MacOS, and that it has a very active community on the 
Maemo platform (Nokia tablets). Portability to these platforms is an 
important issue for those user bases. It sounds to me that your code is 
more efficient memory-wise, and probably at least as efficient CPU-wise, 
so I think it's just a matter of making sure that you don't introduce 
dependencies on any really exotic libraries, and keep track of the 
appropriate conditionals in the code and build files.

Win32 portability shouldn't be too hard to double-check and keep around. 
Regarding MacOS I have no idea what exactly MacPorts did and who's in 
charge so I can't tell what needs to be done. Regarding Maemo, the 
project is in the hands of Aniello del Sorbo (ani...@gmail.com), who 
might have his own comments and may want to decide for himself whether 
the new codebase will be beneficial or not. (Aniello, are you reading 
this mailing-list?)

*** THE WAY FORWARD: TRANSITION TO A NEW XOURNAL?

How reliable is your code? (I understand it's not finished, but one 
thing that will be important is stability since this is a "production" 
application for many people). (I'm *very* slow as a developer, but I 
take great pride in writing code that's nearly bug-free most of the 
time.) And, over the longer term, how likely are you to keep having 
enough free time to maintain your project?

Assuming you'll be able to follow through and bring your version to a 
point where it's comparable to the current one in terms of reliability 
and remains maintained at least somewhat, I think your code may be the 
way forward over the longer term.

I'd be happy to help along, and to continue to tinker with the code on 
occasion to add features or address bugs. For the time being, given that 
you still seem to be working very actively and that I have very little 
spare time, it's perhaps best if I don't try to interfere. Later on I'd 
be happy to take a look at the code and help along with any outstanding 
issues, then perhaps work on some features I've been interested in 
experimenting with (searching in handwritten annotations, handling 
alternative file formats, etc.). In general I'm most excited about 
implementing less obvious technical features and less eager to work on 
the user interface (it probably shows).

I don't think a fork would be very productive (it just creates more 
confusing and incompatible choices for end users); given that xournal 
isn't likely to evolve much over the next few months, if you are 
reasonably sure you'll be able to arrive at a clean finished product and 
be willing to spend some minimal amount of time maintaining it over at 
least a year or two then it would be reasonable to start thinking of 
your version as a candidate next-generation xournal that will replace 
the current code a few months from the now.

So: in short, I'm happy to let you become the main developer in charge 
of the next-generation code base and just help along (e.g. to maintain 
the parts of the code that are still close enough to mine for me to 
understand easily, or anything else that you feel I'd be best qualified 
for).

*** CONCRETELY:

Here's what I'd like to suggest as a possible way forward:

1. alerting other people who might be actively thinking about xournal. 
This message being copied to the xournal-devel@lists.sourceforge.net 
mailing list should be taking care of it. Please consider subscribing to 
the list (it's very low traffic) and posting updates when you reach 
major milestones; also if you need help, the list is small but there's a 
great amount of willingness and expertise out there.

2. once your code is sufficiently complete for end users to be able to 
try it out and at least at alpha quality, it becomes either a separate 
project (xournal++, xournal-ng, whatever) on sourceforge, or a separate 
code branch within xournal's sourceforge space (of course by that point 
you're also administrator of the sourceforge project). Even if in the 
same sourceforge space, the two code bases are kept completely separate 
(unless I'm mistaken about the extent of your code rewrite).

3. once there's been some testing and you're at least at beta quality, 
make a public release, which will remain alongside the old xournal for 
the time being; old-xournal is officially deprecated (i.e., bugfixes 
still happen and so does routine maintenance, but efforts to add 
features are no longer encouraged).

4. once there's a sufficient user base and everyone's happy, the current 
xournal will become a thing of the past.

Maintainers of the packages for the most common distributions will need 
to be informed sometime around step 3 or 4, so they can decide what to 
do ("aggressive" distributions like Ubuntu will most likely want to jump 
ahead to the new codebase earlier than the more conservative ones).

I'll be happy to help with the transition in any way I can. Also with 
the development, especially for things that are not too time-consuming. 
(If there's something that requires just a few hours of work I can 
easily find the time, but something that will take several days of 
continuous focused work is beyond what I can promise for the foreseeable 
future).

By the way, if you ever have any questions like "how does feature X 
work?", "what does this do?" or "why is this implemented in such and 
such way?" do feel free to ask.

I hope the above sounds reasonable, but let me know if there's any 
comments, questions or objections -- and congratulations for reading all 
the way to here, I know I'm very long-winded in my explanations. It's 
the professor in me :-)

Best,
Denis

-- 
Denis Auroux                             aur...@math.berkeley.edu
University of California, Berkeley       Tel: 510-642-4367
Department of Mathematics                Fax: 510-642-8204
817 Evans Hall # 3840
Berkeley, CA 94720-3840

------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and, 
should the need arise, upgrade to a full multi-node Oracle RAC database 
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
Xournal-devel mailing list
Xournal-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xournal-devel

Reply via email to