]> git.lyx.org Git - lyx.git/blob - development/lyx3/LyX3-Tasks
set to version 1.1.2
[lyx.git] / development / lyx3 / LyX3-Tasks
1 -*- text -*-
2
3 This is a tasklist/todo list for the 0.13.x development series. We
4 should perhaps name these seies LyX3 as a common name. As I see it
5 there are three major tasks to be done:
6
7         o Buffer structure rewrite
8                 So that it will be easier to expand for
9                 new and unknow future features.
10                 The main problems with the current structure is that
11                 is intended to be viewed by only one window at the
12                 time. It also uses characters as the smallest unit, it
13                 would probably be better to use something a bit
14                 bigger.
15                 The LyXText class does not necessarily need to change
16                 a lot, it could be per-view. However all the special
17                 code in it needs to be (re)moved. Also a lot of the 
18                 functionality needs to be relocated.
19         o Switch to LaTeX as fileformat
20                 Will ease move from latex to LyX a lot.
21                 Also will let people work both in (ex) emacs
22                 and LyX on the same files.
23         o GUI independence.
24                 Should be a compile time switch what gui (toolkit)
25                 you wish to use. We are going to support Xforms first,
26                 and I am sure that GTK and Qt will follow soon. I also
27                 plan to do support for Fl (even a text only toolkit
28                 should be possible. ncurses perhaps. Even the
29                 lyxserver could be a special case of this: a view with
30                 no view being able to coexist with other views or alone)
31                 We will do this by providing an interface all the
32                 toolkits will need to follow. Functions that the LyX
33                 core will expect to be there. 
34
35 When these three is finished, we will probably declare a code freeze
36 and try to release a new version. Hopefully other features has also
37 been added, and none removed.
38
39
40 ====================
41
42 In addition to these there are a lot of small tasks that should be
43 performed, that has no direct bearing on features, but are more geared
44 towards code quality:
45
46         o always try to use POSIX commands.
47         o switch to use POSIX signals
48         o rewrite LString to be a true subset of STL string
49                 then it will be _very_ easy to switch to
50                 multibyte characters later if we want to.
51         o use STL storage containers (or prepare for it)
52                 code reuse. Very often faster and better tested 
53                 than what we make/do ourselves.
54         o use C++ iostreams
55                 better interface and typesafe
56         o make as much as possible of the code reentreanant(?)
57                 should make it easier to move to threads later.
58         o signal slot mechanism (borrowed from GTK-- project)
59                 better interface, leaner code, typesafe. I have
60                 been using this for another project and it works
61                 like a charm.
62         o other code rewrites to make multiple buffers/windows
63           possible, without too much hassle.
64                 - get rid of most of the global variables.
65                 - non shared variables in shared structures 
66                   (i.e. the cursor in the text class)
67         o make source documentation better. Remember that the better
68           we document LyX internals the easier is it for new
69           developers to begin working on LyX.
70
71
72 Some other things related to structure and services in the code:
73         o change pathpush and pathpop to be a class instead.
74         o class FileInfo does way too much, move the unneeded parts to
75           a super class or friends.
76         o a process manager class to handle execution of external
77           commands.
78                 - ensure that not too many commands are executed at
79                   the same time.
80                 - ensure that non-compatible commands are running at
81                   the same time. 
82                 - to setup file descriptors where communicating with
83                   the processes can take place.
84         o make a liblyx for functions/classes delivering services to LyX
85                 - lyxsum
86                 - FileInfo
87                 - syscall/syscontr/syssingleton
88                 - strerror.C
89         o get rid of definitions.h
90         o pass an inforeceiver around in the object structure.
91           (this instead of passing minibuffers, and lyxerrors.)
92         o get a regexp package (GNU) and use it in filedialogs, search
93           and the like.
94
95
96 Some small things to do with the linker:
97
98         o link partially in the subdirs, should make linking faster.
99                 PostgreSQL does this so we should be able to do it
100                 too. 
101
102 ================
103
104 Also a lot of new features are thought of, only some of these are likely
105 to make it into 0.14:
106
107         o rewrite of table code. Should probably be written as some
108           kind of an inset. At least get the code out of the kernel.
109                 - colortbl  -multirow
110                 - hhline    -multicolumn
111                 - dcolumn
112         o index support (and multiple indeces support)
113                 - multind ?
114         o tocs for each section
115                 - minitoc
116         o multiple table of contentes
117                 - multitoc
118         o trivlist?
119         o better version control (both document and file wise)
120                 - version.sty
121                 - cvs
122                 - sccs 
123         o I am sure mathed improvements. (Alejandro's department)
124                 - better macro support
125                 - better amsmath support
126         o character styles (similar to emph and noun)
127                 Will make a lot of small things conceptual instead of
128                 specific. Will be alot easier to change the
129                 presentation of a filename f.ex. This is actually very
130                 important, because this is where the user can't be
131                 conceptual in the current version.
132         o macro support. Similar to the math-macro support, but
133           usable in regular text too.
134         o support for abbrevations (static macros)
135         o add a incremental search function.
136         o change the "Find and Replace" to Query Replace.
137         o better/more search functions:
138                 - replace & find next
139                 - replace & find previous
140                 We should perhaps try to make the interface a bit
141                 emacs like, that should at least give us the 
142                 features we want.
143         o improved template support.
144         o collapse "New" and "New from Template" into one item.
145         o make lyx recognize some file types (i.e. gzipped) and do
146           the right thing when encountering them.
147         o We should look at all the LyX specific paragraph styles and
148           check carefully that we really need them. We should also try
149           to collapse some of them into singel items (i.e. chapter and
150           chapter*)
151         o the "LyX-Code" environment should be removed. Add a verbatim
152           environment instead.
153         o tabbing support
154         o picture support
155         o better graphics support
156         o rotating and scaling of text
157         o PSTricks (we should be able to support some of this package)
158         o better reference support
159                 - varioref
160         o better citation support
161                 Especially the support for some of the main
162                 bibtex supplied styles are needed. (harvard natbib...)
163                 A complete support for natbib should perhaps be enough.
164         o improved spellchecker
165                 - an ispell class should be made, this should
166                   take care of communicating with the ispell
167                   process.
168         o online configuration
169                 So that users should not need to edit lyxrc
170                 manualy
171         o better fontsupport
172                 T1-lib font renderer.
173         o better latex code quality
174                 This means reading LaTeX books to get an better idea
175                 on how things are done in the latex world. 
176         o perhaps find better names for the paragraph styles
177           "paragraph" and "subparagraph"
178         o support for filecontents
179                 This can make a latex document selfcontained, all the
180                 needed graphics can be in the document.
181         o support for optional args to latex commands
182                 - For sectioning commands I have an idea on how we can
183                   do this: have a popup on RMB to set properties.
184         o pdf support
185                 pdftex
186         o hyperlink support
187                 - url.sty (or better packages)
188                 - hyperref.sty
189         o references to external documents
190                 - xr.sty
191         o better babel support
192                 - make it possible to tune the language strings
193                 - the possibility for several languages in the same
194                   document. 
195         o title page support
196         o draft copy
197                 - draftcopy.sty
198         o better float support (allow user to make its own floats)
199         o support newtheorem (allow user to make its own thorem like envirs)
200         o a bit more wysiwyg where it is appropiate.
201                 - show bullets the way they will be on paper
202                 - show a few more characters as they will be on paper
203                   (--, ---)
204         o online generation of new paragraph styles (or editing or old
205           ones)
206         o support for inlined sectioning commands (i.e. \paragraph{} )
207         o we should parse the command line ourselves.
208         o remove support for XResources, with multiple toolkits it
209           will be impossible to manage. And they are not very needed
210           either.
211         o the possebility to collapse parts of the document.
212           (i.e. collapse the contents of a section. Would make moving
213            parts of the document around very easy)
214         o better LyXServer support
215                 - perhaps use UNIX sockets instead of pipes
216                 - make a decent protocol with return codes.
217                 - make it indepentent of the GUI
218                 - prob: concurrency (locks)
219         o other packages to support:
220                 - keyval (we should not use it directly, but know how
221                         to parse options for it.)
222                 - here.sty
223                 - ulem.sty
224                 - indentfirst.sty
225                 - lscape.sty
226
227 I am sure others has a list as long as mine...
228
229
230 ======================
231
232 We should also do some work to enhance the support we already have for
233 some packages, I think these are the packages supported by 0.12:
234         - longtable     - color (papercolor boxes?)
235         - setspace (should support setting spacing on individual paragraphs)
236         - psnffs packages
237         - geometry      - makeidx
238         - verbatim      - algorithm
239         - inputenc      - fancyhdr (we only have _very_ basic support)
240         - fontenc       - a4
241         - graphics      - a4wide
242
243 (I am sure I have forgot some, please fill me in.)
244
245
246 ======================
247
248 Wild thoughts:
249
250         o the internal text-encoding could be Cork (T1)
251         o always keep the output file (.tex) 7bit.
252         o use plugins for insets.
253
254
255 ====================== 
256
257 If you have other wishes for features, or comments, please let us know.
258
259         Lgb