GSoC 2013 Ideas

=Ideas for GSOC 2013=

Internal

 * Code Cleanup/Building:
 * Compliance -- turn the compiler up to all warnings are bugs. Make all warnings go away. In C++ every "warning" means "it will not work on a class of popular systems, or will work but give bad data". Fix them.
 * implement unit tests for all major functions. Implement "assert" API and use it so as to easily check environment, results and vars characteristics.
 * Generally make it easier for somebody to jump in quickly to try out stuff on your software, either by removing the the obstacles: the unfriendly build issues, write some simple demos/guides (GSOC cannot cover documentation, but documenting commited code can be part of GSOC).
 * Find duplicates of low level code for common needs, create higher level function and use them to replace low level code wherever it is possible
 * Create a python API for the scripter2 on top of each of these higher level function
 * UI consistency : create single class or function for Inline frames window, Image management window, clipboard window, and maybe other windows such as Symbol window. This function would have enough parameters to deal with the difference.

UI/Usability

 * Missing undos


 * Let Scribus only update the display/layout of the selected page(s) instead of the whole document when changes have been made, even if those changes affect other parts of a document. This will improve performance with large documents.


 * More and better preview options, for example:
 * Font preview in all font-related dialogs.
 * Speed up Scribus's performance by displaying grey lines instead of rendering text when the zoom factor is below a certain threshold.
 * Multiple views of the same document.


 * Implement a tool to easily play with, set and save settings for Type Colour.


 * Redesign and rewrite the Style Manager (including during page import)


 * Enable styles sharing and syncing across documents. Enable masterpage sharing and syncing across documents.


 * Enable style creation from selection (similar to master page creation from existing page), which would include adding frame styles.


 * Improve horizontal scroll of the display so as to get freedom of placement of the pageview on the screen.


 * Improve the handling of Layers (e.g., implement a feature to select layers whose items can be edited via checkboxes).

Import/Export

 * Export to true web-optimised PDF, that is, create lightweight PDFs.
 * As for text reduction, scribus uses to save each glyph position. The "web enabled PDF" should not do this.
 * As for images, check out this page: Image_DPI_and_Scaling,_and_Resultant_File_Sizes, which gives a fair amount of data on which factors reduce PDF size, as far as images are concerned. Someone might find a way to use this information to make for some simpler process – there are too many settings right now I think.


 * RTF import and export (export for Story Editor/text frames only), perhaps using an external library.


 * Implement DOCX import.


 * Implement WordPerfect import and export (export for Story Editor/text frames only) using libwpd.


 * Create a basic MS Publisher importer using libmspub.


 * Create better import of CorelDraw files using libcdr.


 * Create a MS Visio importer using libvisio.


 * Create an importer for special pattern formats (AI, EPS, PAT (Photoshop), SOH, SOB) and enhance the Symbols palette accordingly.


 * Improve XPress Tags and InDesign/InCopy Snippet import and add XPress Tags as well ID/IC Snippet export.


 * Implement XPS export.


 * Better raster image export using Ghostscript (including export of printer marks).


 * Add support and internal checks for other PDF standards, like PDF/X-5, PDF/VT and PDF/E.


 * Implement Xtag import and export.


 * Improve the tables tool, including basic ODS, SXC, XLS (via libxls) and XLSX import (content, cell size, colours).


 * Improve and update the ODT and SXW import, especially the import of whole documents.


 * Improve and update the ODG and SXD import.

Developer Tools/Scripting

 * Implement XML/SLA source code editor (à la Inkscape or InDesign).


 * Rewrite the Text Filter so it reflects Scribus's current text formatting capabilities, add XML support, as well as customised markup.


 * Add more platform-independent scripting languages (JavaScript, Ruby ...) to Scripter2.

Misc

 * Implement Master Documents.


 * Implement "Quick Case Change" for letters in European alphabets, i.e. Uppercase, Small Caps, Lowercase, Headline Case (every first letter of a word in uppercase, the rest lowercase), Normal (as typed by the user, which would be the default) and add it as a style option.


 * Implement XMP.


 * Write a plug-in that connects Scribus to SparkleShare, a GIT-based collaboration tool for designers.


 * Rewrite and update the Barcode Generator:
 * Enable all barcodes provided by the current version of the underlying Pure Postscript Barcode Generator.
 * Enable the use of all colour models and colour palettes in Scribus (currently the generator only offers Qt's RGB colour selector).