Hi Xueqing,

Again, this is a brief reply. I've got a massive deadline looming on
Monday and I will not have much time to respond until after then.
Hopefully the notes below will be enough to get you started. If not, let
me know and we can set up a time to visit via Skype/Google Chat.

A lot of this would be much faster to explain than to write out.

On Tue, 2013-04-23 at 01:18 -0500, Ashley Shan wrote

> Thank you for all the information and materials. It took me a while to
> read all your emails and linked blogs/infos, so please correct me if
> I'm being unclear or if I omit anything. Again, thank you for your
> patience and help.

Glad to hear that they were helpful.


# Proposal Contents #
> 
> Non-linear writing process and the goal of this project
> There are several ways for a writer to write creatively, and for this
> project, if I'm understanding you correctly, there are two major
> functionalities you want to achieve from a non-linear supportive
> computer program: 1) to integrate the entire writing process
> (collecting information, playing with ideas, and actually writing)
> into one program, and 2) specifically, to provide a more intuitive way
> for the user to "play with ideas". 

This is correct. The tools in my original proposal are geared toward
"playing with ideas" and "actually writing." The first, "collecting
information," is something I would also like to add support for, but
should probably remain outside of the scope of the project aims. It is a
project unto itself.

> Hence, if we are to finish up the existing work, the project would
> focus on one of the following: 
> 1. Modifying the LyX model (make QObject the base class of text/note
> insets so that the program doesn't generate a new model each time the
> text was changed. 
> 2. Modifying the corkboard view to use QGraphicsScene, for which we
> can include functionalities such as "clipping texts into cards", "more
> flexible arrangement of cards (&the hierarchical view)", and "more
> flexible notecard views".

Right.
> 
> Regarding my GSoC application, I wish to get your suggestions for 1)
> whether I should focus on both or only one of the goals mentioned
> above and 2) whether there are other functionalities that I've raised
> in previous emails and will be clarified in the rest of this email
> which may be incorporated into the main goals.

This depends upon how comfortable you feel with your programming
abilities. If I were doing the work, I would probably need about a month
to modify the LyX model so that it can utilize signals/slots. From
there, it would be the work of a few weeks to modify the corkboard to
use QGraphicsScene and to provide for the additional features. In total,
this would mean about six weeks of part time (15 to 20 hours) work.

As a rough estimate, I frequently assume it will take someone less
familiar with the code between twice and three times as long to finish,
or between 12 to 18 weeks. The first half could be spent on the LyX
model, the second on the corkboard improvements.

The model is by far the more delicate of the two, as it involves
re-working several core classes in LyX. (This could result in breakages
that would need to be addressed.)

If you wished to be more conservative, you could focus your proposal on
improving the model to use QObject.

As you are trying to plan, I would contact Abdel Younes
(you...@lyx.org), I have cc:ed him on this email. He is familiar with
how LyX's internals  work and could provide guidance as you think about
the design of your code. He's also in a good position to know about how
much time it would take to implement the model changes, and the
subsequent implications that would have for your proposal.

I also have some ideas on this might be done, which I will try and flesh
out in an email early next week. As you visit with Abdel, it would be
good to have milestones (or specific tasks with "deliverables") that you
can include in your proposal. For the first one or two weeks, it might
be good to break these down into daily milestones. Later, it's not
necessary to be quite so detailed.


# Proposal Suggestions #

I've now seen a few proposals that students have submitted for LyX, and
in general, I've found the description of milestones and deliverables to
be vague. The more specific you can be about your work product
(especially right up front), the better it looks.

Instead of using "Study LyX model internals" for your first week, it
would be much better to use that as a description for the week, and the
provide daily milestones and deliverables:

Week 1: Draft QObject Based Design for Insets and LyX TocModel

Day 1: Document existing inset and toc model structure, create class
diagram showing relevant interactions

Day 2: Create proposed design spec reworking insets and toc model to use
QObject as a base class, determine signals/slots needed for corkboard,
draft, and outline enhancements

Day 3: Meet with mentor to discuss design, adjust based on feedback.
Begin Qobject implementation in core inset classes. Submit patch for
review to lyx-devel.
...

(I would consider the timeline above to be fairly credible and you might
use it as a jumping off point for your project.)

For each day, I would recommend that you create something concrete, even
if it is very simple (such as a diagram). This makes it much easier for
me and the other mentors to help you and gives us something concrete to
critique. It also creates documentation that might be useful in the
future as we attempt to explain to others how LyX works. 

(After the first week or two, it's more appropriate to have larger
milestones.)


# Conclusion

I will respond to the other points in your email as soon as I can. In
the meantime, you may want to contact Abdel and get his input about
QObject in the core.

Cheers,

Rob


Reply via email to