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