GSoC 2008 Steve Bartz

From Scribus Wiki
Jump to navigation Jump to search

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 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 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.

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

Possible Spinoffs

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 Developers

Details

Potential Issues

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 draws document text. Additionally, some fonts can not be drawn by Qt because the font libraries of Scribus and Qt are not necessarily the same.

Timeline

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

  • April 14 - May 7

Getting up to speed with Scribus internals.

  • May 7 - May 26

Develop firm plan for the new Story Editor in cooperation with the developers and the community

  • Week 1-3 (through June 16)

Rewrite current Story Editor so it meshes with current codebase

  • Week 4-6 (through July 7)

Add XML Editor component

  • Week 7 (through July 14)

Complete Mid-term report. Readjust project schedule to reflect current pace and progress

  • Week 8-9 (through July 28)

With advice and direction from the Scribus developers, improve usability and seamless integration of Story Editor, especially the included XML Editor

  • Weeks 10-12 (through August 18)

Fix new documentation. Test code and fix bugs Work out plans/details for additional new features now possible

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.

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.