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