[scribus-dev] Tables GSoC draft proposal

Elvis Stansvik elvstone at gmail.com
Tue Mar 29 09:53:51 CEST 2011


2011/3/29 Elvis Stansvik <elvstone at gmail.com>:
> 2011/3/29 Elvis Stansvik <elvstone at gmail.com>:
>> Hello again,
>>
>> As the student application period is now open, I'm planning on sending
>> my application to Google soon.
>>
>> No further comments on my draft proposal below? I've done a couple of
>> small edits in the version on the wiki [1], but it's essentially the
>> same version as the one I sent to the list.
>>
>> Should I give it the "final" stamp and maybe make a typeset version of it?
>
> I made a quick LaTeX-typeset version of the proposal (attached).

A few Unicode-related issues crept into that one. I've fixed them and
also put it up on the wiki, where I'll keep it up to date [1].

Elvis

[1] http://wiki.scribus.net/wiki/images/2/2c/Tables_GSoC_Proposal_2011.pdf

>
> Elvis
>
>>
>> Cheers,
>> Elvis
>>
>> [1] http://wiki.scribus.net/canvas/GSoC_2011_Tables_Proposal
>>
>> 2011/3/20 Elvis Stansvik <elvstone at gmail.com>:
>>> Hi,
>>>
>>> First of all, congratulations on being picked by Google this year!
>>>
>>> Below is a first draft of my GSoC proposal. The proposal is perhaps
>>> better read on the wiki, where it's available at
>>>
>>> http://wiki.scribus.net/canvas/GSoC_2011_Tables_Proposal
>>>
>>> Please respond if you have any comments or if there are things I have missed.
>>>
>>> Best regards,
>>> Elvis
>>>
>>> = Basic support for tables in Scribus [DRAFT 1] =
>>>
>>> == Abstract ==
>>> The Scribus software currently lacks proper support for laying out
>>> content in a tabular arrangement, a feature commonly known as tables.
>>> In the following document I propose to implement a first basic support
>>> for tables in Scribus. The proposal comes in three parts. First, a
>>> problem description is given, where I provide a rationale for the
>>> project. Second, an implementation plan, including project
>>> deliverables and a contingency plan. Third, a tentative timeline for
>>> the project, and last some biographical information and other
>>> practicalities.
>>>
>>> == Problem Description ==
>>> Tables provide a compact way of representing tabular information in a
>>> page layout, and is a common design element in books, magazines and
>>> advertisements. Scribus currently has a shortcut for creating an
>>> automatically grouped table-like array of text frames. These are not
>>> proper tables. To stay competitive, Scribus needs better support for
>>> tables. Support that enables the user to create and edit tables as
>>> distinct items with their own set of properties as commonly found in
>>> other table implementations.
>>>
>>> == Implementation Plan ==
>>> Having been through Summer of Code once before, I think I have a good
>>> perspective on what's important going into a project of this nature.
>>> One thing that cannot be stressed enough is the importance of having
>>> something tangible and working by the end of the project period. Not
>>> only will this give closure and a sense of accomplishment to me as a
>>> student, it also gives the Scribus core developers a good outlook when
>>> it comes to taking the code in and building further on it. To mitigate
>>> the risk of ending up with an unfinished project, a contingency plan
>>> is included. The contingency plan lists features that can be dropped
>>> from the project, should time start to run out.
>>>
>>> === Basic Idea ===
>>> The implementation will be done by introducing a new page item,
>>> PageItem_Table. This item will be responsible for layout and drawing
>>> of a table. The layout and drawing of table cell content will be
>>> delegated to standard text frames, which might have to be given new
>>> features/modifications to serve this purpose. As content in the table
>>> cells change, the table will be notified of this and perform a
>>> relayout of the table, starting from the row in which the change
>>> occured.
>>>
>>> === Project Deliverables ===
>>> These are features that I believe are realistic to implement during
>>> the course of the project (but see further down for a contingency
>>> plan). For more detailed chronological information, see Timeline.
>>>
>>> * Tables
>>> ** Insert, select, resize and remove.
>>> ** Background color.
>>> ** Border color.
>>> ** Border style.
>>> ** Default cell style.
>>> ** Breaking across page boundaries.
>>> ** Import from CSV and ODT.
>>>
>>> * Table Rows
>>> ** Insert, select, resize and remove.
>>> ** Background color.
>>> ** Default cell style.
>>>
>>> * Table Columns
>>> ** Insert, select, resize and remove.
>>> ** Background color.
>>> ** Default cell style.
>>>
>>> * Table Cells
>>> ** Select and resize.
>>> ** Background color.
>>> ** Border color.
>>> ** Border style.
>>> ** Padding and margin.
>>> ** Row and column spanning.
>>>
>>> For all features, load/save roundtrip to Scribus .sla format will be supported.
>>>
>>> === Contingency Plan ===
>>> If unforeseen difficulties are encountered during the project, one of
>>> more of the following features may be dropped. Hopefully to be
>>> implemented later. Note that should any of these features be dropped,
>>> an effort will still be made keep the feature in mind to avoid
>>> painting ourselves into any corners.
>>>
>>> * '''Breaking across page boundaries'''
>>> *: This is a feature which I did not finish completely during my 2009
>>> project for KWord, and one which can be quite hairy to implement. I
>>> think I have a good general idea of how to go about it, but should it
>>> turn out to take too long, it may be dropped.
>>> * '''Row and column spanning'''
>>> *: This I really think I should be able to pull off. But should time
>>> run short, it may be dropped.
>>> * '''Import from CSV and ODT'''
>>> *: While hopefully not too challanging, technically, this feature may
>>> be time consuming and is something which can be added later. Hence it
>>> may be dropped.
>>>
>>> == Timeline ==
>>> Below follows a rough tentative timeline for the project. The timeline
>>> is of course subject to change, should some parts of the project turn
>>> out to be more/less time consuming than anticipated.
>>>
>>> I have my last exam on May 28, and my first day of school after the
>>> summer is Aug 28. This means my project period will be cut five days
>>> short in the beginning. It was the same thing during my project in
>>> 2009, and I believe it's quite common for European students taking
>>> part in Summer of Code. It just means the timeline has to take this
>>> into account.
>>>
>>> In the time leading up to the project period, I'll try to acquaint
>>> myself with the Scribus code I'll be touching, and experiment with
>>> data structures and layout algorithms for the tables I'll be
>>> implementing.
>>>
>>> * '''Week 1''' May 29-June 5
>>> ** Removal of the old "tables" implementation.
>>> ** Data structures for tables.
>>> * '''Week 2''' June 6-June 12
>>> ** Basic table layout with fixed column widths and mock content in cells.
>>> ** Insertion/removal of rows/columns.
>>> ** Basic drawing of table.
>>> * '''Week 3''' June 13-June 19
>>> ** More advanced layout.
>>> ** Variable column widths.
>>> * '''Week 4''' June 20-June 26
>>> ** Cell formatting properties such as border and padding.
>>> ** Cell content layout; use Scribus' text frames to populate cells.
>>> * '''Week 5''' June 27-July 3
>>> ** More integration of text frames. Fixing of issues/road bumps.
>>> ** UI: Row/column selection/insertion/removal/resizing.
>>> * '''Week 6''' July 4-July 10
>>> ** Wrapping up for mid-term evaluation.
>>> ** Fix bugs/finish up what I have so far.
>>> * '''Week 7''' July 11-July 17 '''(Mid-term-evaluation)'''
>>> ** Row and column spanning.
>>> * '''Week 8''' July 18-July 24
>>> ** Table/row/column/cell styles.
>>> * '''Week 9''' July 25-July 31
>>> ** UI: Direct formatting.
>>> ** UI: Integration of styles in Style Manager.
>>> * '''Week 10''' August 1-August 7
>>> ** Table breaking.
>>> * '''Week 11''' August 8-August 14
>>> ** More table breaking.
>>> ** CSV and/or ODT import.
>>> * '''Week 12''' August 15-August 21 '''(Suggested pencils down)'''
>>> ** Wrapping up for mid-term evaluation.
>>> ** Fix bugs/finish up what I have so far.
>>> * '''Deadline''' August 22 '''(Firm pencils down)'''
>>>
>>> == Post-Summer of Code Commitment ==
>>> A big part of what makes a successful project is the students level of
>>> involvement after the project period is over. Although the time I will
>>> have available for FOSS hacking will go down drastically after the
>>> summer, I'll of course stick around to answer questions, fix bugs and
>>> help out the best I can. I've stayed in contact with the KWord
>>> developers ever since my project in 2009, and I won't treat you
>>> Scribus folks differently. In short; I won't disappear on you.
>>>
>>> == Student Biography ==
>>> Living in Stockholm with my girlfriend Hanna, I'm a 27 year old
>>> freshman at the Computer Science program at KTH Royal Institute of
>>> Technology in Stockholm. I've dabbled with Free Software for about 12
>>> years now. In recent years KDE has been my main focus and in 2009 I
>>> implemented basic support for tables in the KWord word processor as
>>> part of Google Summer of Code. Previous employments include working at
>>> my dads small publishing company Nya Doxa AB and running my own book
>>> shop as well as a book café. I should note that Scribus has been a
>>> great help at both these positions. Apart from my studies I enjoy
>>> hiking our small Swedish mountains when I have the opportunity, and
>>> hanging out discussing with my friends over a beer. I have no other
>>> engagements this summer apart from Summer of Code.
>>>
>>> == Contact Information ==
>>> '''Name:''' Elvis Stansvik<br>
>>> '''E-mail:''' elvstone at gmail.com<br>
>>> '''IRC:''' estan @ irc.freenode.net<br>
>>> '''Phone:''' +46763091545
>>>
>>
>



More information about the scribus-dev mailing list