GSoC 2008 Steve Bartz

=Project Proposal=

Abstract
XML provides a way of structuring a document. Scribus provides a way to make fantastic-looking documents. So it's natural to want to combine the power of both tools.

XML is a standard that goes far beyond the scope of desktop publishing. The Internet demonstrates the power of XML to divide documents, and it shows how natural this setup can be. XHTML contains the structure of the document and CSS contains the information about how the document should be displayed. With Scribus, this division is also natural. Styles are applied to sections of a document according to the content.

Yet in the current implementation of a Story Editor in Scribus, it is not possible to edit the structure of the text contained by text frame. Stories can only be given a structure by the application of styles. The ability to edit the XML of text would make Scribus really shine.

Adding an XML editor to Story Editor is an important step in Scribus's future, because it will lead to many new and important features. Scribus is capable of becoming a Content Management System (CMS) and a versatile piece of software to create complex printable styles for XML-based files. Scribus will still be a Desktop Publishing application, but it will capable of doing so much more.

In order to include an XML editor within Story Editor, Story Editor must be rewritten, a task that on its own was already necessary and valuable. Story Editor is a critical component of Scribus. The update of Story Editor and the addition of an XML editor will bring Story Editor to the same level as the other components of Scribus.

Vision
The goal is to bring XML editing control to the Story Editor. XML will not only add new power to Scribus and Story Editor, it will change the way text is edited and controlled within text frames.

Story Editor in its current iteration is hard to use. Formatting is supposed to be applied in Story Editor, but most users are unable to see the changes they are making in Story Editor without reverting to the page view.

My vision for the XML editor is a toggle. Users can switch to XML editor mode and make use of XML's ability to organize and structure documents. XML's strict structuring makes very good sense for most uses in Scribus. Users have a handful of styles for each document that they want to apply to certain parts of the document according to its place within a document.

Deliverables

 * New Story Editor code
 * XML Editor for text frames
 * Story Editor modes (XML, plain text, etc.)
 * Documentation

Python Interface Tie-in
According to Scribus developer Craig Ringer, "The ability to expose the internal XML for text objects might also be rather interesting for the Python interface."

Document XML Editor
Text objects are the majority components of Scribus documents. With the ability to edit the XML, it would not take much more to have the ability to edit the XML of the document.

XML/CSS
An XML editor moves Scribus one step closer to division of content and style. We can style the same content with a completely different styles. Say we have a marketing campaign with a slogan, an explanation and maybe a picture. We can create many different materials just by altering the stylesheet.

Content Management System
Many Scribus documents are big projects that are worked on by more than one person with different skills. Photographers need to edit photos. Illustrators need to edit graphics. Editors need to edit text. With an XML editor, Scribus is one step closer to having functionality similar to Adobe's InCopy, but in a much more open way.

Implementation
After talking with the Scribus Community in the IRC channel, we have decided that the code of Story Editor needs to scrapped and rewritten. This is the perfect opportunity to introduce new functionality and provide the framework for additional powerful upgrades to Story Editor.

Resources

 * Inkscape's XML editor
 * KXMLeditor
 * Scribus Team

Size of Project
I have been told and understand that this Story Editor project will be massive project. It will certainly not be a simple task to rewrite Story Editor with my new features. However, I am not worried about finishing it within the scope of GSoC. The Scribus Team is quite supportive. They have helped me turn just my simple interest into complete project plan. I am dedicated to making my vision of Story Editor within Scribus a reality. I have the ability and support to get this project done.

Code
Rough plans originally included the ability to preview text formatting in the Story Editor. This may not be feasible due to issues with the way Scribus is currently rendering text. Additionally, some fonts can not be drawn by Qt because the font libraries of Scribus and Qt are not necessarily the same.

Google

 * April 14: Accepted student proposals announced.
 * May 26: Students begin coding.
 * July 14: Mid-term due.
 * August 11: Pencils down.
 * August 18: Firm pencils down.
 * September 1: Final due.

Project
Getting up to speed with Scribus internals. Develop firm plan for the new Story Editor in cooperation with the developers and the community. Rewrite current Story Editor so it meshes with current codebase. Add XML Editor component. ''Complete Mid-term report. Readjust project schedule to reflect current pace and progress.'' With advice and direction from the Scribus developers, improve usability and seamless integration of Story Editor, especially the included XML Editor. ''Fix new documentation. Test code and fix bugs.'' Work out plans/details for additional new features now possible.
 * April 14 - May 7
 * May 7 - May 26
 * Week 1-3 (through June 16)
 * Week 4-6 (through July 7)
 * Week 7 (through July 14)
 * Week 8-9 (through July 28)
 * Weeks 10-12 (through August 18)

=Questionnaire=

Name / University / current enrollment information
Steve Bartz, Stanford University, currently a student at Phillips Academy in Andover, Massachusetts but admitted and enrolled early at Stanford

Biographical sketch
I grew up in Kailua, Oahu, Hawaii. I went to Punahou School for Middle School. I moved to Phillips Academy, a boarding school in Andover, MA. While at Andover, I began writing humor articles for The Phillipian, the weekly 16-page school newspaper printed on broadsheet. As I started to get more involved with the newspaper, I discovered that what I really enjoyed about the newspaper was doing layout. I quickly became the resident Adobe Creative Suite (InDesign, Illustrator, Photoshop) expert. Since then I have passed my responsibilities and knowledge to my successor. I still enjoy DTP as a hobby. In December, I was admitted to Stanford University early. I plan to begin attending in Fall 2008. I think Stanford fits my interests as I have always been a very tech-orientated guy. I've dabbled in Linux since I was 12 and grew up on a computer.

My Resume

Did you ever code in C, C++ or Python? Please provide examples of code
I first learned Python for computational purposes as part of SSP in Soccoro, NM. The program I wrote then found the orbit of an asteroid based on three observations and produced a 3D visualization. I don't have much experience in C or C++, but I know Java quite well from an AP Computer Science course. After a few hours of skimming, C++ looks very similar to Java. I have taught myself bash, PHP, JavaScript, CSS and HTML, so I don't imagine it will be much of a problem for me to pick up a new language or two, especially ubiquitous ones that are nearly universal.

Do you use Scribus? Please provide examples if you do
I use Scribus, but I have done most of my DTP using InDesign because my office did. The biggest project I ever put together was a 60-page end-of-year edition. After working so much with Adobe products, I can identify some obvious flaws. Among many others, major flaws were slow loading times, useful options hidden in dialogs and big file formats. I have always been a FOSS fan, so I knew there had to be a worthy competitor to a popular closed-source piece of software. This is when I discovered Scribus. Scribus still feels foreign to me because I have two years of formative experience in InDesign, but I know that Scribus can do nearly everything and in some ways more than InDesign can.

Do you make other use of Scribus than for laying out articles? Please describe and show examples
Answer

Were you involved in Scribus development in the past? What were your contributions?
I have not been previously involved in Scribus development. However, after spending a week in the IRC channel, Scribus is definitely a project that I am interested in, wanted to be involved with and can assist in many ways.

Were you involved in other OpenSource development projects in the past? If yes, please tell us project, when and in what role were you involved.
No, I have never been involved in open-source development. For years I have been a user and an admirer. Now I think I'm in a position to give back.

Why have you chosen your development idea and what do you expect from your implementation?
I have chosen to work on the rewrite of Story Editor and incorporation of an XML Editor because XML+CSS was such a beautiful thing to me when I discovered it. I had already spent weeks working on huge publications. Whenever I started to lose track of styles or formatting, I knew there had to be a better way to do what I wanted to do. On my free time, I came across CSS, and it's power to style an entire document swept me off my feet. As a developer, I want to make features work how users think they should work. The major difference between Scribus and closed-source projects like InDesign and Quark is that Scribus has the ability to adapt quickly. Closed-source projects are always focused on legacy and as a result, force the users to learn how the program works and conquer its quirks. Scribus has the ability to become the ultimate DTP software because it can change. If something doesn't work like it should, a fix is just one release away. DTP software should be a natural extension of the artist.

Are you confident that you will be able to dedicate time and effort necessary for the successful completion of your GSoC 2008 project?
Absolutely. I will force myself to adhere to a strict schedule which I have outlined below. I have no other commitments this summer. ==Are you you ready and willing to sustain a good level of communication with your mentor and the Scribus Team overall and be open and forthcoming about the progress of your project including coding and personal problems related to your GSoC project?== Willingness to communicate with the Scribus Team will not be an issue for me. I want to communicate with them. They are a fun and understanding group of people. When it comes to questions I have for the Team, I know where the line between pestering and curiosity falls. Also, I know where to find documentation and the wealth of knowledge it contains.