Commit | Line | Data |
---|---|---|
49781f4a AB |
1 | =encoding utf8 |
2 | ||
27da23d5 JH |
3 | =head1 BASE PORT |
4 | ||
5 | =head2 Console | |
6 | ||
7 | - The Console only does "ASCII" input: e.g. pressing the "2" | |
49781f4a | 8 | key five times, "aaaaa", does not produce "ä" ("a diaeresis"), |
27da23d5 JH |
9 | but instead the "2" key rotates through "abc2abc2...". |
10 | This is a pity because the Console is actually capable of full | |
11 | Unicode input and output (if you have the fonts, that is). You | |
12 | can verify this by entering e.g. the euro character, which is | |
13 | U+20AC, well beyond U+00FF. I don't know why the full repertoire | |
14 | of the keyboard is not available. | |
15 | - Enhance the console? (line editing, full x-y movement, history) | |
16 | - The role of the console needs to be rethought: the best way | |
17 | would be to have the console visible in the same screen as | |
18 | the GUI elements (an "embedded console"?) | |
19 | ||
20 | =head2 Core Language | |
21 | ||
22 | - the $^E does not work | |
23 | - select() does not work (not our fault) | |
24 | - starting external application: what now (0.1.0) works is: | |
25 | - system("app"); | |
26 | - system("app&"); | |
27 | - and those with arguments: | |
28 | - system("app arg1 arg2") | |
29 | - system("app arg1 arg2 &") | |
30 | but remember that a Symbian process does get only argv[0] | |
31 | and argv[1]: all the arguments of the application are passed | |
c8f896e5 | 32 | in as a single argument, the second one ("arg1 arg2" in the above) |
27da23d5 | 33 | What does not work: |
c8f896e5 | 34 | - I/O redirection |
27da23d5 JH |
35 | - piped open, in either direction |
36 | - qx/backtick/` | |
37 | - fork/wait (these unlikely to ever work as in POSIX) | |
38 | - IO redirection or filename globbing in system() | |
39 | (since there is no POSIX shell beneath) | |
40 | What might work in future: | |
c8f896e5 | 41 | - some I/O redirection |
27da23d5 JH |
42 | - exec() might be made to work |
43 | - Symbian::spawn("cmd args") returning a process id (what does Win32 do?) | |
44 | - Symbian::waitpid($spawned_pid) | |
45 | ||
46 | =head2 Platform | |
47 | ||
48 | - in S60 1.2 (at least in 3650 Nokia 3650 v3.11) setjmp/longjmp is | |
49 | fragile (see Symbian FAQ-0929), intensive debugging and fix needed | |
27da23d5 JH |
50 | |
51 | =head2 Unicode | |
52 | ||
53 | - Symbian has Unicode filenames, and Unicode all over the place. | |
54 | - Encode and the use of Symbian Unicode in general | |
55 | tie into the overall usefulness of PerlIO. | |
56 | ||
57 | =head2 Portability | |
58 | ||
59 | - Slash versus Backslash: where does one need to use "\\"? | |
60 | writing Perl applications, where can one get away with using "/" ? | |
61 | ||
62 | =head2 Build | |
63 | ||
64 | - make xsbuild.pl much more robust (for building external extensions) | |
d0d72822 JH |
65 | (see symbian\ext\README and symbian\ext\Moped\Msg\README) |
66 | - now the .mmp functions both as input and as output - bad | |
27da23d5 JH |
67 | - MakeMaker? Pure PM, PM + XS? |
68 | - currently the PerlApp UID is in both config.pl (hardwired) and | |
69 | in makesis.pl (computed), this is quite error prone | |
d0d72822 JH |
70 | - Enable building also under Cygwin? (could be really hard, |
71 | the Symbian SDKs pretty much assume cmd.exe) | |
27da23d5 JH |
72 | |
73 | =head1 PACKAGING | |
74 | ||
75 | - subdivide perlext.sis? | |
76 | - pm-stripper: strip pod and comments, while inserting the appropriate | |
77 | #line commands to keep linenumbers in sync. Shaves off easily 50% | |
78 | of the code, making install packages smaller. | |
79 | - Get MakeMaker to create SIS packages? In non-Win32? | |
80 | - Symbian has APIs for opening .zip files | |
81 | - Investigate Autrijus Tang's PAR format | |
82 | http://www.autrijus.org/par-intro/ | |
27da23d5 JH |
83 | |
84 | =head1 PerlBase | |
85 | ||
86 | - review for proper Symbian coding practices | |
87 | ||
88 | =head1 PerlApp | |
89 | ||
90 | - In "Run" see how one could show also the file extensions. | |
d0d72822 JH |
91 | - How to allow passing command line options to scripts being run? |
92 | - Terminate/Pause menu entries (to be used while the script is running)? | |
27da23d5 JH |
93 | - review for proper Symbian coding practices |
94 | ||
d0d72822 | 95 | =head2 All UIs |
27da23d5 | 96 | |
d0d72822 JH |
97 | - Make it possible to call UI elements (or any other Symbianic |
98 | asynchronous services) from Perl. | |
27da23d5 | 99 | |
d0d72822 JH |
100 | There is now a sample of enabling calling CPerlUi::TextQueryDialogL() |
101 | from Perl as PerlApp::TextQuery(), see symbian_utils.c. This, however, | |
102 | does not work: calling the dialog code blocks so that the screen is not | |
103 | redrawn at all. Perl should do both: "yield" so that the GUI framework | |
104 | can redraw, but in the meanwhile Perl should wait for the completion | |
db5886f1 JH |
105 | (OK or Cancel) of the dialog, but Perl must not exit the current PL_op. |
106 | Welcome to the wonderful world of cooperative multitasking. The right | |
107 | solution surely involves Active Objects. The problem may require having | |
108 | a different Perl op dispatch loop than the standard and debug ones in | |
109 | run.c and dump.c. | |
27da23d5 | 110 | |
d0d72822 JH |
111 | - menu/toolbar support |
112 | - selection lists (single cf multi cf radio) | |
113 | - on/off (special case of two-item radio selection list) | |
114 | - forms (multicontrols) | |
115 | - "secret editor" (special case of text query) | |
116 | ||
117 | =head2 Series 60 | |
118 | ||
119 | - in S60 2.6 (at least in Nokia 6630 v4.03.11) launching scripts via | |
120 | FExplorer does not open up the console | |
121 | ||
122 | =head2 Series 80 | |
123 | ||
124 | - On exit "PerlApp" gets Symbian USER Panic 44: "This panic is raised | |
125 | by the Free() and FreeZ() member functions of an RHeap. It is caused | |
126 | when the cell being freed overlaps the next cell on the free list | |
127 | (i.e. the first cell on the free list with an address higher than the | |
128 | one being freed)." Reason unknown. | |
129 | - Hotkey Newline so that it functions as 'OK' in dialogs | |
130 | ||
131 | =head2 UIQ | |
132 | ||
133 | - UIQ 3.0? UIQ 2.0? (now only tried in UIQ 2.1) | |
134 | - UIQ, at least UIQ 2.1, does not have "file select dialogs" since | |
135 | "files" are supposed to be hidden from the user. Therefore, no | |
136 | "Run" in PerlApp. (For similar stylistic reasons there is no "Exit".) | |
137 | - Long notes (e.g. the EPerlAppCommandAbout) are shown badly truncated. | |
27da23d5 JH |
138 | |
139 | =head1 CPAN LIBRARIES | |
140 | ||
141 | - Include/Package more modules (or work harder on getting CPAN.pm working?) | |
142 | (but note that lib/**/*.pm is 3.5 megabytes, probably not worth including | |
143 | all of it, even after pm-stripping): | |
144 | - libnet | |
145 | - Bundle::CPAN | |
d0d72822 | 146 | - Archive::Tar (now included in 5.9.x) |
27da23d5 JH |
147 | - Term::ReadKey (useless?) |
148 | - Term::ReadLine (useless?) | |
149 | - Bundle::LWP | |
150 | - URI | |
151 | - HTML::TagSet | |
152 | - HTML::Parser | |
153 | - HTML::Entities | |
154 | - HTML::HeadParser | |
155 | - LWP | |
156 | - Crypt::SSLeay? (ssl?) | |
27da23d5 JH |
157 | - IMAP? |
158 | - Net::Telnet? | |
159 | - Archive::Zip? | |
160 | - Mail::Send? | |
161 | - Date::Calc? | |
162 | - XML? XML::Simple? (expat?) (there is builtin xml support) | |
163 | - RSS? | |
c042ae3a | 164 | - DBI (DBD::???) |
27da23d5 JH |
165 | - DBD::SQLite? (sqlite?) |
166 | - SOAP? XML-RPC? | |
167 | ||
d0d72822 JH |
168 | =head1 CORE LIBRARIES |
169 | ||
170 | - Fix Devel::PPPort (worth it?) (Note that there is D::PPP 3.x out by now) | |
171 | - Fix Encode to not to have writeable data: seems to be tricky indeed | |
172 | because of copious global non-const data. | |
173 | - Verify that the modified File::Spec::Win32 does work in Symbian. | |
174 | (File::Spec::Epoc does not seem to be relevant?) | |
175 | - What does Cwd really do since the concept of cwd is a bit fuzzy in Symbian. | |
176 | - What should Sys::Hostname return? GPRS? BT? WLAN? | |
177 | - ByteLoader problem: byterun.c does not see VERSION and XS_VERSION. | |
178 | - POSIX problem: STDLIB POSIX is not that POSIX. | |
179 | ||
180 | =head1 REGRESSION SUITE | |
181 | ||
182 | - how to run the standard test suite on a Symbian device? | |
183 | ||
27da23d5 JH |
184 | =head1 FUTURE POSSIBILITIES |
185 | ||
d0d72822 JH |
186 | - GUI support (problematic that the MVC model enforces an "application") |
187 | (name suggestion: Moped::Gui) | |
188 | (see above for the need of sorting out the Active Objectedness) | |
189 | - Messaging support (sms:, mms:, mailto:, irdaobex:, btobex:, | |
190 | cell location, WLAN) | |
191 | (name suggestion: Moped::Msg) | |
192 | - PDA support (address book) | |
db5886f1 | 193 | (name suggestion: Moped::PDA) |
d0d72822 | 194 | - Device support (memory, camera) |
db5886f1 JH |
195 | (name suggestion: Moped::Dev::Memory, Moped::Dev::Drives, Moped::Dev::Camera) |
196 | - Phone APIs (e.g. how to catch an incoming call: BIO messaging) | |
197 | - Remote console (Bluetooth/IR/USB?) | |
d0d72822 | 198 |