GSoC 2012 Project Manager baazigar: Difference between revisions

From Scribus Wiki
Jump to navigation Jump to search
No edit summary
m (Protected "GSoC 2012 Project Manager baazigar" ([edit=sysop] (indefinite) [move=sysop] (indefinite)))
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:GSOC]][[Category:GSOC_2012]][[Category:GSOC_2012_Proposals]]
[[Category:GSOC_2012]][[Category:GSOC_2012_Proposals]]


[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/rajatgupta/1002 original-google-melange-proposal is here]
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/rajatgupta/1002 original-google-melange-proposal is here]
Line 61: Line 61:


===IMPLEMENTATION OF BACK END:===  
===IMPLEMENTATION OF BACK END:===  
Firstly Project Manager will start with creation of a new file called book.buk (.buk is a new filetype which will be added to Scribus.)
The Project Manager will implement two type of documents: masterDocument and slaveDocuments.




After that, project manager will be able to create new documents in the file book ,not more than 40 pages in size(i will call the collection of documents a “book” from now on). Preferably no. of pages=20 will be best.
What is a masterDocument(Definition)
 
 
A masterDocument is an sla file(normal Scribus file)which will have all the details regarding the shared attributes. It will be storing all the attributes(masterPages, styles, colors, etc.). It will store the attributes which are global(ie common to whole book, all documents use them and can edit them with changes shown in all the documents automatically)
 
 
What is a slaveDocument(Definition)
 
 
A slaveDocument is a sla file which will be used to make actual book pages. This Document will be containing links to the masterDocument for accessing the updated attributes from other slaveDocuments.
There is only one masterDocument and more than one slaveDocuments.
 
 
How will masters and the slave relate?
 
The master will control all the slaves. Each edit done on the master will show up in the slave automatically. The slave do not talk to each other. They only link with the master. If one slave asks for a change in the global attribute, the change will show up in other slaves only through masterDocument.
 
 
How will the change in attributes propagate?
 
When some attribute is created, modified, deleted, its a change.
 
way 1. Change the masterDocument and all slaves will follow.
 
way 2. Make a change in the slaveDocument and make it global ie store that change in the masterDocument


   
   


After that, it would have the ability to import existing documents and dividing it into documents of size between 20-40 pages.
Which fileformat will masters and slaves use?


From the imported documents the attributes will be extracted and then stored in the shared place in the book.buk. The attributes include masterpages, styles, images, tables, scrapbooks, frames, numbering variables etc.
The masterDocument and the slaveDocuments will be implemented by changing the sla slightly and modifying according to our needs


   
   


After that, project manager will have the ability to update, delete, create new attributes which when modified will automatically update all the documents in the book.
After that, the PM will be able to synchronize those documents in proper order for numbering them, adding cover and back pages, making indexes and appendices for the final touch to the book.


   
   


And most Importantly, the documents that are created or imported will not contain the shared attributes. Only the link or pointer to the .buk file will be stored in those documents.
Lastly, pdf generation will take place by exporting individual slaves and then combining them finally by calling pdftk.


   
   


After that, the book will be able to synchronize those documents in proper order for numbering them, adding cover and back pages, making indexes and appendices for the final touch to the book.
Use cases for PM:
 
Users have to write a book divided in chapters and user wants to make sure that they use the same styles.
 
Users want to be able to work with multiple files open at the same time on the same computer.


the scrapbook must be shared. and there is a file with the full TOC, one with the bibliography and one with the index.
 
each chapter has its own table of contents: just the list of the sections without more details.
 
the page numbers must go through the chapters, but not for the TOC, the bibliography and the index.


Lastly, pdf generation will take place from the file book.buk which will be done by adding shared attributes to the documents and then printing them out.
User has a visit card, letter paper, badges and invoices paper to create regularly for different clients. The master define the logo, name, adresses, styles, and these apply automatically to various slave docs : letter paper, visit card, invoices  and badges.


   
   
Line 121: Line 152:


==TIMELINE==
==TIMELINE==
Discussion with the community and developers and their feedback will take place every week regardless of the work to be done.
Discussion with the community and developers and their feedback will take place every week regardless of the work to be done.


Line 136: Line 168:


Last week: exams.
Last week: exams.


May:
May:


Learning how sharing of resources is done.
Learning how sla fileformat has been designed to store attributes.
 
Learning how new filetypes are made and the file handling with qt.


Learning how pdf generation takes place from scribus documents.
Learning how pdf generation takes place from scribus documents.
Line 150: Line 179:
May 28-June 3:
May 28-June 3:


Creation of the project manager file called .buk and its implementation of what files it would store.
Implementing the master Document properties


June 4-June 10:
June 4-June 10:


Developing classes for adding new documents to project manager as well as importing documents.
Implementing the slave Document properties


June 11-June 17:
June 11-June 17:


Extraction of attributes from the imported documents and storing them as shared objects in the file storage location of .buk
Connecting the slaves to the Master


June 18 -June 24:
June 18 -June 24:


Connecting the editing classes of the attributes(masterpages, styles etc) to the book manager after making them capable of editing shared resources(masterpages, styles etc)
Adding support for attributes like masterpages, styles, colors , images, frames, etc


June 25 – July 1:
June 25 – July 1:


Enabling the documents to read shared data from shared location and updating the pages in canvas whenever attributes modification has been done.
Implementing the generation of masterDoc  from generation of slave as a copy of the master.
 
Implementing the import of sla files and making them slaves.


July 2 – July 7:
July 2 – July 7:


Implementing finer qualities of project manager, connecting all the above mentioned details, debugging and testing.
Implementing finer qualities of project manager, connecting all the above mentioned details, debugging and testing.


July 8 to July 10 :
July 8 to July 10 :
Line 180: Line 209:
July 11- July 22:
July 11- July 22:


Two weeks for designing the palette and making handles for accessing and editing all these attributes. Two weeks are sufficient because discussion and research would have been done in april and may.
Making a nice user interface for the Project Manager


July 23 -July 29:
July 23 -July 29:
Line 188: Line 217:
July 30 -August 5:
July 30 -August 5:


Efficient pdf generation of the pages(It may seem a bit difficult to carry it out in a week but I would have done the research work on this in MAY itself)
PDF generation from individual docs and combining them finally.


August 5-August 13:
August 5-August 13:
Line 206: Line 235:
Should I be able to cover the above mentioned topic before the prescribed time, I will implement finer details of the project manager like having an indexing system, synchronizing other data, support for chapters and sections using text variables and little details like coverpage, backpage, appendix etc.
Should I be able to cover the above mentioned topic before the prescribed time, I will implement finer details of the project manager like having an indexing system, synchronizing other data, support for chapters and sections using text variables and little details like coverpage, backpage, appendix etc.


If some part of the project takes more time than required, I may postpone efficient pdf generation(directly from .buk file) after GSoC and instead do a normal pdf generation from separate documents or the numbering system(whichever is of lower preferance).
It may be possible that time may not remain for pdf generation part or the numbering system part. This would be due to the possible demand of a more precise and powerful base of the master and slave relation. A more advanced GUI may also take more time.


But I will try my best to stick to the plans and make this Project successful.
But I will try my best to stick to the plans and make this Project successful.
Line 243: Line 272:
   
   
==EASY HACKING:==
==EASY HACKING:==
I solved a bug on the bug tracking system of scribus http://bugs.scribus.net/view.php?id=10409
I solved two bugs on the bug tracking system of scribus
 
http://bugs.scribus.net/view.php?id=10409
 
http://bugs.scribus.net/view.php?id=10455


I am currently improving on the import of master pages(like styles) because my project demands it. It will be complete in a couple of days.
I am currently improving on the import of master pages(like styles) because my project demands it. It will be complete in a couple of days.

Latest revision as of 20:21, 20 April 2012


original-google-melange-proposal is here


Short description:

Scribus is a great DTP application which is used to print many magazines and books.(See success stories link.) And a lot of these books are more than 100 pages in size. But due to high performance UI, these large books cannot be handled easily. Because documents containing more than 20 - 40 pages make it slow. So to overcome this problem, users make independent documents of 20-40 page and then combine them finally after editing. But attributes which are common to the whole document have to be changed regularly during designing (masterpages, styles, fonts, images, frames, tables, scrapbooks, page numbers), and it has to be done for each 20-40 page document. The Project manager aims to solve this problem by sharing the attributes between these independent documents which will make editing and updating easier for the greater user experience in book editing and designing.

Additional info: http://wiki.scribus.net/canvas/Category:Success_Stories

WHY SCRIBUS NEEDS A PROJECT MANAGER?

“Scribus is an opensource DTP application which is primarily used to design small newspapers, brochures, newsletters, posters and books.” These lines from wikipedia and other sites show that handling big documents or books in Scribus is pretty difficult.

This is because presently Scribus cannot easily handle large documents with 100 or more pages. Documents with more than 40 pages slow down Scribus mainly when there are lots of images or linked frames.

Anyways, Scribus users can still handle large Books and Newspapers by dividing a big document into small parts(which are 20 – 40 page documents).These independent documents can be handled easily for designing & editing individually. These are combined finally after editing.

But this method does not work well when lot of editing has to be done on a regular basis. When the design or layout of the book has to be updated, many attributes have to be changed. And for a 300 page book, 10 times editing must be done(for 10 individual documents). The attributes include masterpages, layers, styles, images, tables, numbering variables, frames, scrapbooks. This much amount of editing can be pretty tiring.

TO SOLVE THE PROBLEM,

The Project Manager will be implemented in such a way that the number of edits required to design a huge book will drastically decrease. This will be done by making the edited attributes common to the independent documents. Presently, only pages in document share these attributes among themselves.Sharing among documents will be implemented.

This will enable the user to edit only once and whole set of documents would be updated. A separate user interface for the project manager will be created which will give easy access to all the common resources/attributes.Since the resources are shared now, Scribus will work fast even for large no. of pages.

This would surely increase the preference of Scribus over its other counterparts.

AIM OF PROJECT MANAGER:

These aims have been given on Scribus GSoC ideas page. I have given a solution to each of the required aims of the project in PRECISE DESCRIPTION OF PROJECT MANAGER.


Scribus Project Manager will enable to manage multiple file parts of a single large book or set of documents, all sharing some common attributes : masterpages, styles,...


The GSOC Project aims to define and implement a basic project manager that would enable to

1)define the scope of a project (list of files)

2)define shared objects: mainly styles and masterpages

3)synchronize the files using the most recent version of shared files

4)print or generate updated PDFs for whole project

5)optionally if time left: synchronize page numbers, indexes and other data across files of the project


The first part of this GSOC project would be to define how the Scribus Project Manager will work precisely.

1)collect needs for a project manager amongst users

2)propose and discuss a synthesis

3)propose and discuss User Interface elements and technical solution


The second part would be to thoroughly code and document the approved solution.


PRECISE DESCRIPTION OF PROJECT MANAGER:

IMPLEMENTATION OF BACK END:

The Project Manager will implement two type of documents: masterDocument and slaveDocuments.


What is a masterDocument(Definition)


A masterDocument is an sla file(normal Scribus file)which will have all the details regarding the shared attributes. It will be storing all the attributes(masterPages, styles, colors, etc.). It will store the attributes which are global(ie common to whole book, all documents use them and can edit them with changes shown in all the documents automatically)


What is a slaveDocument(Definition)


A slaveDocument is a sla file which will be used to make actual book pages. This Document will be containing links to the masterDocument for accessing the updated attributes from other slaveDocuments. There is only one masterDocument and more than one slaveDocuments.


How will masters and the slave relate?

The master will control all the slaves. Each edit done on the master will show up in the slave automatically. The slave do not talk to each other. They only link with the master. If one slave asks for a change in the global attribute, the change will show up in other slaves only through masterDocument.


How will the change in attributes propagate?

When some attribute is created, modified, deleted, its a change.

way 1. Change the masterDocument and all slaves will follow.

way 2. Make a change in the slaveDocument and make it global ie store that change in the masterDocument


Which fileformat will masters and slaves use?

The masterDocument and the slaveDocuments will be implemented by changing the sla slightly and modifying according to our needs


After that, the PM will be able to synchronize those documents in proper order for numbering them, adding cover and back pages, making indexes and appendices for the final touch to the book.


Lastly, pdf generation will take place by exporting individual slaves and then combining them finally by calling pdftk.


Use cases for PM:

Users have to write a book divided in chapters and user wants to make sure that they use the same styles.

Users want to be able to work with multiple files open at the same time on the same computer.

the scrapbook must be shared. and there is a file with the full TOC, one with the bibliography and one with the index.

each chapter has its own table of contents: just the list of the sections without more details.

the page numbers must go through the chapters, but not for the TOC, the bibliography and the index.

User has a visit card, letter paper, badges and invoices paper to create regularly for different clients. The master define the logo, name, adresses, styles, and these apply automatically to various slave docs : letter paper, visit card, invoices and badges.


IMPLEMENTATION OF FRONT END:

The user interface for project manager will be in the form of a palette (dialogs are for temporary things and palette for permanent) . All attributes will be accessible through this palette. Users can stack the palettes in the docked window and use many palettes and features with lesser clicks.

Points of attention:


Discoverability:

Most users don't use the potentiality of the software they use. A new tab for making big books in the “New document” dialog box that pops up in the beginning. It must be also added to the menu bar.


Ease of Access:

Users should be able to access functions with as few clicks as possible. To implement this, the project manager palette will be accessible at right side of main window in docked mode.


Efficiency and Productivity:

Shortcuts for finer functions for professional users. Keyboard shortcuts can also be added. I will add all attributes on the main palette.


The above synthesis that I proposed will be implemented in very great detail after discussing it with the community and the developers.

TIMELINE

Discussion with the community and developers and their feedback will take place every week regardless of the work to be done.

April and May will be the learning period when I will be getting to know how will I implement the required deliverables.

I will document each class and function before starting and after finishing. So that it would be easy to add final documentation on wiki later.


April:

Discuss with the Scribus community how the user interface of Project Manager should be.

Getting to know more about Scribus codebase by solving more bugs related to styles and masterpages.

Last week: exams.

May:

Learning how sla fileformat has been designed to store attributes.

Learning how pdf generation takes place from scribus documents.


May 28-June 3:

Implementing the master Document properties

June 4-June 10:

Implementing the slave Document properties

June 11-June 17:

Connecting the slaves to the Master

June 18 -June 24:

Adding support for attributes like masterpages, styles, colors , images, frames, etc

June 25 – July 1:

Implementing the generation of masterDoc from generation of slave as a copy of the master.

Implementing the import of sla files and making them slaves.

July 2 – July 7:

Implementing finer qualities of project manager, connecting all the above mentioned details, debugging and testing.

July 8 to July 10 :

Mid term evaluation preparation.

July 11- July 22:

Making a nice user interface for the Project Manager

July 23 -July 29:

Synchronizing the documents by putting them in order and adding numbering system to the project manager.

July 30 -August 5:

PDF generation from individual docs and combining them finally.

August 5-August 13:

Testing and Debugging of GUI and merging with the trunk(I would try merging code to trunk whenever some deliverable has been implemented)

August 13-onwards:

Suggested pencils down date – preparing final evaluation and giving a final touch to requirements.


I will work for 40 hours or more per week during the GSoC as its a full time job. I have previously coded 10 hours a day for a week. So I can surely take out some more time if it becomes necessary.

And I have no other commitments during GSoC. I have shifted all my plans to before or after GSoC.

CONTINGENCY PLANS:

Should I be able to cover the above mentioned topic before the prescribed time, I will implement finer details of the project manager like having an indexing system, synchronizing other data, support for chapters and sections using text variables and little details like coverpage, backpage, appendix etc.

It may be possible that time may not remain for pdf generation part or the numbering system part. This would be due to the possible demand of a more precise and powerful base of the master and slave relation. A more advanced GUI may also take more time.

But I will try my best to stick to the plans and make this Project successful.

AFTER GSOC:

I would love to code for Scribus even after GSoC ends. I like the idea of contributing to a community and making its software better than it commercial counterparts.

I will add some more features to this project and make it better because I know this project is incomplete within the bounds of GSoC .I would solve the bugs and continue developing for Scribus like the guy who made tables successful in Scribus last GSoC.


For Example:

I will take up developing finer details and adding new features to this project.

I will try taking Scribus code closer to its release quality.

I will be an integral part of Scribus community.

and I wish to get accepted into the core developing team of Scribus.


ABOUT ME:

I am a pursuing btech from Dhirubhai Ambani Institute of Information and Communication Technology, India. I love reading books, pencil sketching and designing on pc.

Some of my friends in the designing field use Scribus and I got to know about this project through them.


RELATED SKILLS:

I know C++ from my 11th grade and have been using it to make small applications and projects for school and college. I learnt qt about a couple of months ago for voluntary development of a contract bridge game(a multiplayer card game used on tablets and uses networking) which is a long term sponsored project. I have made a poker bot with my friends in java (uses oop) which can play with humans.

I am well adapted to use version control system and bug tracking system.

I am also good at algorithms(I hope to use them in this project if required).


EASY HACKING:

I solved two bugs on the bug tracking system of scribus

http://bugs.scribus.net/view.php?id=10409

http://bugs.scribus.net/view.php?id=10455

I am currently improving on the import of master pages(like styles) because my project demands it. It will be complete in a couple of days.


CONCLUDING REMARKS:

Although I am a second yearite, I am highly inspired and motivated to develop Scribus and be a part of the larger community. I was browsing through the Scribus code and getting to know how things work in the code even during my mid term exams. Its feels good when you solve a bug after days of getting to know how palettes work through use of docs and how canvas paints and how much difficult it is to design a good plugin.


I know it would be a huge learning curve for me to code for such a successful open source community like Scribus and I would be find myself lucky to contribute even after GsoC.



CONTACT INFORMATION:

Name:Rajat Gupta

irc : baazigar (irc.freenode)

Email: rajarajatsraj@gmail.com

201001216@daiict.ac.in

facebook:facebook.com/rajarajat