Go to page:

Search:   Help

Developers' side bar

Selected categories


Shared groups



Categories: Development, GSoC
<< | Page list | >>

2013 Summer of Code - Ideas Page

LyX 2013 Summer of Code Ideas

If you see an idea here which interests you, please consider contacting the LyX Developer's list. You can send a message to lyx-devel@lists.lyx.org. (Instructions on how to subscribe can be found at http://www.lyx.org/MailingLists#lyx_devel.) We would love to discuss any thoughts you might have, or to help you put together a student application.

Project: Layout editor

Brief Explanation: Each document edited in the LyX document processor is assigned an appropriate LaTeX class which LyX uses to typeset the final document. LyX uses layout files to render on screen the LaTeX elements. The most popular LaTeX classes already have correspondent LyX layouts, however creating a new layout for an unknown or customized class can be a daunting task.

The Layout Editor (LE) should allow users with no knowledge of the LyX internals to use a GUI to create layouts for completely new document classes. The user may need to know LaTeX in order to specify the typesetting behavior for a given paragraph style, although the GUI should provide an interface to several popular LaTeX features such as colors, font sizes and font attributes.

Expected Results: A working prototype of the editor allowing the creation and customization of LyX layouts. The project's focus is on code extensibility and robustness, to ensure compatibility for future inclusion in the main LyX codebase. LE should share some of the LyX libraries, so that (incompatible) changes to the LyX layout system would not result in breaking the application and would allow for straightforward future extensions.

Knowledge Prerequisite: Knowledge of C++ is required, and while experience with Qt is nice it is by no means required, as it can be learned relatively easily.

Prospective Mentor(s): Abdel, Richard

Project: LyX support for bilingual (critical) text editions

Brief Explanation: Ledpar is a LaTeX package that allows typesetting parallel texts on facing pages/columns. Ledpar, in turn, uses the LaTeX package Ledmac, which also provides a rich set of tools for typesetting critical editions (multiple footnote series, line-counting in the margins, etc.). Ledmac/Ledpar can produce high quality bilingual critical editions, but are difficult to use because both text (and notes) flows are intermingled in the same text editor window. The goal of the project is to provide LyX support for both packages. The LyX editing window would be split into multiple synchronized regions, with an anchor system to jump from one paragraph in one language to the corresponding paragraph in the other language. Additional windows could be added for the critical apparatus, similarly to the interface provided by the Classical Text Editor application (http://www.oeaw.ac.at/kvk/cte/?id0=main). See examples of ledmac and ledpar outputs.

Expected Results: A working prototype of LyX with Ledpar support. The application should be able to open a bilingual text and correctly display it in synchronized windows. Focus should be on extensibility and robustness, in order to allow a full implementation of the rich set of features offered by the (e)Ledmac/(e)Ledpar packages.

Knowledge Prerequisite: Knowledge of C++ is required, and while experience with Qt is nice it is by no means required, as it can be learned relatively easily. You will need to study ledpar/ledmac LaTeX packages as well.

Prospective Mentor(s): Pavel Sanda (feel free to contact me directly)

Project: LyX presentation mode

Brief Explanation: LyX has been designed to let users focus on the structure of the document instead of their appearance. Highly visual documents, such as presentations, can also be made using specific document classes. However, the representation to the user of the various slides that make up a presentation could be improved. The goal of this project is to enhance LyX with a feature that allows to create presentations more intuitively. Often a presentation is put together from content that has previously been written down (or the other way around). Therefore, often the same images are used, and often text, images, formulas, tables, and so forth are being copied and pasted from the document into the presentation, with numerous problems related to duplication, updating, etc.

Expected Results: A working prototype of LyX with a presentation mode. The interface of LyX's workarea would allow users to easily scroll through the slides, and let them grab the contents of a certain slide more easily. We don't expect a realistic representation of how the slides looks like, but just an easy representation of what information is on what slide.

Knowledge Prerequisite: Knowledge of C++ is required, and while experience with Qt is nice it is by no means required, as it can be learned relatively easily.

Prospective Mentor(s): Vincent, Cyrille

Project: Improved XHTML export and ePub support

Brief Explanation: ePub is gaining popularity as a free and open e-book standard. It is based on the idea of reflowable text, which will adapt to the type of reader that is used. This reader can either be a phone, or an iPad, or an e-book reader, or a regular pc. One can think of this as an extension of the LaTeX idiom that one should only care about the contents, not on the layout of it. ePub is an open standard used by many major companies and publishers, including Google. For that reason, the ability to create ePub files directly from LyX would provide writers and publishers a way to target both print and electronic audiences with their work.

ePub is a sub-set of XHTML and CSS (more information can be found at http://en.wikipedia.org/wiki/EPUB), which LyX is already able to export. However, improvements are needed to LyX's existing XHTML export and CSS support. Additionally, LyX is able to work a related format: DocBook, though the current implementation has been outdated.

Expected Results: The goal is to be be able to export ePub files from within LyX. This would mean improving the existing XHTML support, controlling the export of images so that they are scaled and sampled for the destination format, and creating a user-interface which unifies the export options. Basic support for all of these options already exist within LyX, however, the student should be able to take those foundations and expand upon them as needed.

The final ePub should be acceptable for publishers or on-line e-Book sellers and comply with the ePub specification.

Knowledge Prerequisite: Knowledge of C++ or Python is required. The student should also be generally familiar with the HTML markup language and CSS styling. While experience with Qt is nice it is by no means required, as it can be learned relatively easily.

Prospective Mentor(s): Josť, Richard

Project: UI Improvements and non-linear writing enhancements.

Brief Explanation: As a first step in writing a document, one often starts with an outline or a list of thoughts that should be communicated to the reader. The goal of this project is to intuitively convert these thoughts and ideas into the structure of a document. A first option for achieving this goal can be to use a more advanced outliner tool (see http://www.lyx.org/trac/ticket/6174). A second possibility is to use a tool which makes use of yellow sticky notes indicating ideas that can be moved around (see http://blog.oak-tree.us/index.php/2010/05/24/lyx-outline02). Integration of these tools into LyX would allow LyX to be used in a more intuitive manner, and allow the draft to be more adaptable during the writing process.

Expected Results: A tool that can convert thoughts into a document in a intuitive way and allows for the structure of a document to be modified without compromising the work-flow of the writer. There is already a preliminary implementation of both a corkboard and advanced outline view. The prospective student would be expected to integrate the early implementation into the LyX 2.0 code base, and locate/resolve major bugs.

An optional component of the project would be to implement an improved full-screen user-interface that combines the corkboard/outline views and the ability to write in a distraction-free environment.

Knowledge Prerequisite: Knowledge of C++ is required, and while experience with Qt is nice it is by no means required, as it can be learned relatively easily.

Prospective Mentor(s): Rob

Project: Toolbar customization dialog

Brief Explanation: Toolbars are an important component of the LyX experience and they are used for various tasks ranging from generating the PDF output to formatting and math editing. LyX provides users with a flexible mechanism for toolbar creation and customization. However, its biggest drawback is that it can be performed only by editing configuration files in a text editor. The goal of this project is to develop a dialog that would allow users to create and customize toolbars via a graphical interface. This would eliminate the burden of studying and understanding the syntax of configuration files, and of performing toolbar modifications in text mode.

Expected Results: A working prototype of a dialog in LyX that allows easy creation and customization of toolbars. There is already some work done toward a preliminary implementation and the student would be expected to complete it.

Knowledge Prerequisite: Knowledge of C++ is required, and while experience with Qt is nice it is by no means required, as it can be learned relatively easily.

Prospective Mentor(s): Abdel

Project: Horizontal scrollbar for tables and math

Brief Explanation: LyX provides users with an excellent UI for creating and editing LaTeX tables and math. One drawback of the current implementation is that when a table or math equation is too wide so as not to fit on the screen, the right-hand edge will "disappear" outside the screen limits. This makes editing wider tables and equations more difficult, and sometimes requires users to decrease the font size in LyX to be able to see the full table/equation on the screen.

Expected Results: An improved editor UI in which a horizontal scrollbar appears whenever the user is editing a table or math equation that is wider than the computer screen.

Knowledge Prerequisite: Knowledge of C++ is required, and while experience with Qt is nice it is by no means required, as it can be learned relatively easily.

Prospective Mentor(s): Jean-Marc, Scott

Project: HiDPI support

Brief Explanation: LyX is used on multiple platforms, including OSX. As of 2012 OSX runs on hardware with HiDPI screens (retina screens). OSX is not the only platform going towards HiDPI. Microsoft Surface Pro has a 1080p resolution on a small screen, the new notebook from Google has a HiDPI screen, and multiple laptops are appearing with 1080p 11" screens. Your assignment will be to evaluate the changes needed to give HiDPI support to LyX and what support is required or available in the Qt framework.

Expected Results: A document detailing the needed changes to bring HiDPI support to LyX and a proof of concept LyX version that shows a possible way to make the editing area HiDPI capable.

Knowledge Prerequisite: C++ is required and preferably knowledge of how HiDPI support works in OSX together with Qt. You do not need a retina macbook pro, however a machine capable of running OSX is required (hackintosh is acceptable)

Prospective Mentor(s): ---

Project: Advanced Find and Replace

Brief Explanation: Advanced Find and Replace is a recently introduced feature almost unique to LyX, allowing for searching formatted text, equations and equation portions, identified either through exact text or regular expressions, with a multitude of options for ignoring or considering some of the formatting during the search. Though, the current implementation is more a proof of concept and has plenty of issues including slowness and non-working corner cases. This project is a proposal for rebuilding such a feature in a well-designed fashion and making it far more usable and useful than it is now. For a better idea of how this feature is intended to work, you can see a few videos showing common use cases:

Expected Results: A reimplementation of Advanced Find and Replace, with a clean and sound design, a fast and usable execution even on large documents, a maintainable and documented code base, supporting the current options, as well as additional options to be better identified through interaction with users/developers on the list.

Knowledge Prerequisite: C++, regular expressions and Qt are required. Some knowledge of LyX internals is a plus.

Prospective Mentor(s): Tommaso Cucinotta

Project: Interactive LyX

Brief Explanation: Extend LyX with interactivity capabilities allowing multiple users to work concurrently on the same LyX document. This is done by adding to LyX the capability to send/receive individual LyX actions (called LFUNs in the LyX gergo) through the network, by making use of some server allowing users to find each other. A proof-of-concept of how such a feature can be started has been sketched out as a patch on the LyX mailing list (see http://www.lyx.org/trac/ticket/7964), but it is a bad hack, that stands up only a few secs then it crashes. Key issues in how to guarantee consistency of the concurrent editing, especially when users tend to get closer with their edits, have to be seriously addressed at the design level.

Expected Results: Through some LyX GUI extension, allow remote LyX users to concurrently edit the same LyX document.

Knowledge Prerequisite: C++, Qt, network programming are required. Some knowledge of LyX internals is a plus.

Prospective Mentor(s): Tommaso Cucinotta

Project: LyX-enhanced Chat Client

Brief Explanation: Build a stand-alone LyX-enhanced chatting tool, where users can exchange rich text messages in a LyX chat including formatted text, visually edited and rendered equations, tables, pictures, whatever needed. This can be built as an independent tool, or integrated within an existing open-source chat client as a plug-in, if possible. Alternatively, it can be realized as a chat panel within LyX itself. A preliminary patch for realizing this feature, which might be regarded as a starting point, is available at http://www.lyx.org/trac/ticket/7964.

Expected Results: A chat tool (either standalone or integrated within LyX) allowing users to chat exchanging LyX-enhanced rich text. Needless to say, copy and paste from such a chat into a LyX document will be very useful.

Knowledge Prerequisite: C++, Qt, network programming are required. Some knowledge of LyX internals is a plus.

Prospective Mentor(s): Tommaso Cucinotta

Project: Improved LyX-LaTeX round-trip conversions

Brief Explanation: Using LyX is to write scientific papers requires collaboration with scientists that prefer to write and edit LaTeX. In the same context, many scientific journals and conferences provide classes, style files and sample latex files that use them to make it easy to conform with that community's typographical requirements. With current LyX functionality, a common workflow is to write a draft in LyX, then export to LaTeX before LaTeX-only collaborators can edit and before adapting a paper to a particular format. If the paper is significantly altered after submission, for example in creation of a longer version for a journal, returning to LyX can cause inconvenient versioning complications.

This project is about improving the situation so that:

  1. A single LyX using author can easily enjoy the class, style and sample files while mostly staying in LyX.
  2. LyX can be used continuously in an ongoing collaboration between LyX and LaTeX users, without significant degradation of at least the LyX experience.

Expected Results:

  1. LyX constructs and state should be preserved in the exported LaTeX and restored on re-import. As a particular example, Math-macros, if turned into \global\long\def, should be turned back so LyX's beautiful visual editing is restored (can keep the lyx definition of the math-macro in a comment in the latex version for easier restoration).
  2. On initial import of a LaTeX file, for any unknown environment appearing in \begin{theenv} ... \end{theenv}, import should create a layout description and use it (invoking \begin_layout theenvLyxLayout ...), instead of using \ERT.

Knowledge Prerequisite: ??

Prospective Mentor(s): --, Daniel Vainsencher (as user)

Category: Development, GSoC

Edit - History - Print - Recent Changes - All Recent Changes - Search
Page last modified on 2013-04-18 17:48 CEST