Final draft for GSoC

 *Myself*

   -

   *Name :* Mayank Jha
   -

   *University / current enrollment* : NIT Durgapur, India
   -

   *Contact details: *mayank25080...@gmail.com, GMT(+5.30), IRC nick:
   mapyth
   -

   *Short bio / overview of my background* :

   I am a 2nd year undergraduate student pursuing Computer Science and
   Engineering at National Institute of Technology, Durgapur, India. I am a
   FOSS enthusiast, and contributor.

   I was introduced to the concept of Open Source an year ago by the GLUG
   (GNU/Linux Users' Group) of our college and since then Ive tried to
   actively associate with the same.

   My contributions to the open source world include making a plugin or
   geany to submit codes to SPOJ from the editor itself. Links to my
   contributions can be seen at the MediWiki page.

   https://github.com/mjnovice/geany-plugins/tree/master/codesubmit

    Ive also made a game using the pygame library called fierytower.

   http://www.pygame.org/project-fierytower-2496-.html

    Apart from that Ive sent patches to rekonq, konversation, kate,
   plasma-desktop and trojita.

   I am skilled in C, C++, Qt, Python and HTML. I have the experience of
   building Lyx from source and also editing layouts in it.

   Coding, Youtubing, Eating, Sleeping, Movies, MJ music, - that pretty
   much sums up my life.

    -

   Subscribe to the LyX developers mailing list and introduce yourself
   (send a message to lyx-devel-subscr...@lists.lyx.org to subscribe)

You should provide all the information listed above, but we are not looking
for a simple list.

*Sell yourself!* Get across your enthusiasm for the project. Tell us what
makes you stand out from the rest of the crowd. Talk about your past
experiences, what makes you tick. Why are you interested in open source
software, and LyX in particular? What interests do you have, and how do
these interests relate to the project for which you're applying? There is a
basic assumption that people applying for the Summer of Code will have at
least some programming skills already. So rather than spend a lot of time
elaborating on these (though by all means, do tell us what you know), spend
time talking about you.
*My Coding Skills*

   -

   What platform do you use to code?

   I am using Ubuntu 12.04 on my Dell Inspiron n4050 with intel i3
   processor and ATI Radeon graphics.
   -

   Did you ever code in C++? what is your experience?

   I am a C++ coder for about 2 years now, and am reasonably skilled in it.
   -

   Have you used the QT toolkit before?

   Yes, I have used it to make a plasmoid for kde-plasma.

   http://kde-apps.org/content/show.php/?content=157112
   -

   Are you familiar with Python?

   I am pretty much familiar with python. I made a game called fierytower
   using the pygame library.
   http://www.pygame.org/project-fierytower-2496-.html
   -

   If you apply for a project on our ideas list, have you experience in the
   areas listed under "Knowledge prerequisite"?

   Yes, my project requires C++ and QT programming knowledge which I have.

*Me and LyX*

   -

   *Were you involved in LyX development in the past? What were your
   contributions? *

   This would be the first time I would be contributing to Lyx.
   -

   *Were you involved in other Open Source development projects in the
   past? Which, when and in what role? *

   I have worked on patches, fixing bugs in projects like konversation,
   trojita, kate and rekonq.


*My Project*

   -

   *What do you want to achieve?*

   I wish to create a GUI interface for Layout Editor to enable normal
   users who dont want to code to use the interface and make the changes or
   create their own new layouts.

   Currently editing layouts in Lyx is a very tedious process . By making a
   GUI alternative to the the same it would allow the users to use it more
   frequently and efficiently without having the need to dive into the code
   part.
   -

   *If you have chosen an idea from our list, why did you choose this
   specific idea?*

   I chose this idea because GUI development excites me and Currently
   editing layouts in Lyx is a very tedious process . By making a GUI
   alternative to the the same it would allow the users to use it more
   frequently and efficiently without having the need to dive into the code
   part.
   -

   *If you are proposing a project of your own, what is unique about it?*

   The implementation details of my project are listed below:

   I have made a Qt prototype http://postimg.org/image/j9g22xphx/ described
   as below!

    -GUI portion-
   *Available Additions :* A QComboBox used to choose from a list of
   available options "ClassOptions" , "Paragraph styles",
   "Floats", "Flex insets and InsetLayout", "Counters", "Font description",
   and their possible
   suboptions like a "Paragraph style" can have "Font Description" as its
   subtype

   *Layout elements:* A QListWidget containing the new Class elements
   "ClassOptions" , "Paragraph styles", "Floats", "Flex insets and
   InsetLayout", "Counters", "Font description". The user will select any one
   of them and he will be shown the available options in the element specifics
   section.
   for e.g if the user chooses "Paragraph styles" then he would be shown
   with options like "Align", "BottomSep", "Copy Style" etc. as much as
   possible without any coding stuff, this would be shown in layout specifics
   section.

   *Layout specifics:* It will contain yet another QListWidget which would
   display the suboptions which are possible to add into it, and it will have
   Values section as each option will have to take values like number, color,
   option etc. some type of values might be common while others might be
   unique to the option, which would be shown to the user appropriately.

   *Layout Preview:* It is a QGraphicsWidget which will try to display in
   as much capacity as possible the combined look showing the usage of every
   layout element created, added or edited. For eg if I created two
   paragraph styles, style1 and style2 then it will show two sentences
   instantiating the styles.

   *Layout file:* section would be meant for advanced users to directly
   modify the code, or add some Latex stuff to their liking.

    On the manner in which Lyx will store the information, I think making a
   new class LayoutElements and the Layout Editor could be viewed as an
   instance of the same, can be one solution to the problem. What goes inside
   this class is determined largely by the manner in which the parsing of
   .layout file is done, (which is specified in the TextClass, Layout class )
   would be more appropriate as I do not find any other alternative.

    Since my methods, and parameters in the class LayoutElements depends on
   the classes TextClass, Layout etc. so parsing as a backend job would not be
   required

   Also, writing/modifying a layout file in whole can be best done by
   making it into a "local layout", as the feature already exists, so it wont
   require much work.


    -

   *What makes you suited to carry out the project?*

   I am well suited to carry out this project because I have experience of
   working in the open source community, and also possess the requisite coding
   skills for the same. Apart from that I am very hardworking and passionate
   about what I do. I will devote my entire energy towards the fulfillment of
   the goal. Lastly I love coding.
   -

   *Do you have other obligations from early June to early September
   (school, work, vacation, etc.)? Please note that we expect the Summer of
   Code to be a full-time, 40-hr a week occupation.*

   I have no other obligations during May to July-mid and would be able to
   work from 6.30 to 21.30 UTC and after my college reopens in July, I would
   be working 13.30 to 22.00 UTC.



 *My Schedule*

*May 27 - June 5*: Interaction with the developers and research for better
alternatives (if any ) for storing the GUI information in Lyx.


 *June 5 – June 17 :* Get familiar with the codebase of Lyx, solve in some
bugs to get a feel.


 *June 18 – June 24 :* Research on making the GUI interface better by
considering all kinds of possibilities.


 *June 25 – June 30 :* I would implement the first protoype of my class
LayoutElements alongwith to implement editing if layout files, saving and
then loading them on the fly.


 *June 30 – July 7: *Implementing of some basic GUI features like Paragraph
styles, Fonts etc.


 *July 8 – July 14 : * Testing the class with the basic methods throroughly
to avoid any crashes or bugs. See if the basic model works as intended.


 *July 15 – August 1 : *Inclusion of the advanced features like
sub-inclusion of layouts inside layouts, making of the treewise dependency
for the various options available.


 *July 15 – August 5: *Testing the GUI interface for bugs and errors, and
resolving it.


 *August 6 – August 15 *: * *Thorough testing of the LayoutEditor. Adding
reality checks for providing the users with the required error messages
instead of crashing.


 *August 15 – September 1 :* Documenting of the entire code, to enable
other developers extend this. Making the code look neater and ordered to
enhance readability of the code.


 September 2 – September 22 : Backup time for unexpected and unforeseen
delays.


 *September 23: *Pencils down


 *September 23 – October 8 [after GSOC]: *The LayoutEditor will be
committed to the Lyx repository for the community to review it.
Shortcomings if any would be taken care of. I will continue to maintain
this package, and be involved in development of Lyx.

Reply via email to