a36aa95e4e103236dd13edfde6973e7d5ca92f26
[p5sagit/p5-mst-13.2.git] / symbian / TODO
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
30     in as a single argument ("arg1 arg2" in the above)
31   What does not work:
32   - piped open, in either direction
33   - qx/backtick/`
34   - fork/wait (these unlikely to ever work as in POSIX)
35   - IO redirection or filename globbing in system()
36     (since there is no POSIX shell beneath)
37   What might work in future:
38   - exec() might be made to work
39   - Symbian::spawn("cmd args") returning a process id (what does Win32 do?) 
40   - Symbian::waitpid($spawned_pid)
41
42 =head2 Platform
43
44 - in S60 1.2 (at least in 3650 Nokia 3650 v3.11) setjmp/longjmp is
45   fragile (see Symbian FAQ-0929), intensive debugging and fix needed
46 - in S60 2.6 (at least in Nokia 6630 v4.03.11) launching scripts via
47   FExplorer does not open up the console
48 - in the SDK the build creates DLLs in the system area
49   (e.g. epoc32\release\thumb\urel\io.dll), this is dangerous.  Prefix them?
50   (needs changes in xsbuild and DynaLoader/XSLoader)
51
52 =head2 Unicode
53
54 - Symbian has Unicode filenames, and Unicode all over the place.
55 - Encode and the use of Symbian Unicode in general
56   tie into the overall usefulness of PerlIO.
57
58 =head2 Portability
59
60 - Slash versus Backslash: where does one need to use "\\"?
61   writing Perl applications, where can one get away with using "/" ?
62
63 =head2 Build
64
65 - make xsbuild.pl much more robust (for building external extensions)
66 - MakeMaker?  Pure PM, PM + XS?
67 - currently the PerlApp UID is in both config.pl (hardwired) and
68   in makesis.pl (computed), this is quite error prone
69 - Enable building also under Cygwin?
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/
81 - "makeplsis" to wrap a script.pl or dir/script.pl as a stand-alone
82   application (and SIS): unshift the "application home" to @INC and
83   chdir to that, then run the script.pl (renamed as default.pl)
84
85 =head1 PerlBase
86
87 - review for proper Symbian coding practices
88
89 =head1 PerlApp
90
91 - In "Run" see how one could show also the file extensions.
92 - when autostarting also offer to display the file (via Notes?)
93   instead of installing/running it?
94 - Allow passing command line options to scripts being run?
95 - Add "OneLiner" menu item? (-e, -M) (requires a UI form)
96 - Terminate/Pause menu entries?
97 - review for proper Symbian coding practices
98
99 =head1 CORE LIBRARIES
100
101 - Fix Devel::PPPort (worth it?) (Note that there is D::PPP 3.x out by now)
102 - Fix Encode to not to have writeable data: seems to be tricky indeed
103   because of copious global non-const data.
104 - Verify that the modified File::Spec::Win32 does work in Symbian.
105   (File::Spec::Epoc does not seem to be relevant?)
106 - What does Cwd really do since the concept of cwd is a bit fuzzy in Symbian.
107 - What should Sys::Hostname return?  GPRS? BT? WLAN?
108 - ByteLoader problem: byterun.c does not see VERSION and XS_VERSION.
109 - POSIX problem: STDLIB POSIX is not that POSIX.
110
111 =head1 REGRESSION SUITE
112
113 - how to run the standard test suite on a Symbian device?
114
115 =head1 CPAN LIBRARIES
116
117 - Include/Package more modules (or work harder on getting CPAN.pm working?)
118   (but note that lib/**/*.pm is 3.5 megabytes, probably not worth including
119    all of it, even after pm-stripping):
120         - libnet
121         - Bundle::CPAN
122                 - Archive::Tar
123                 - Term::ReadKey (useless?)
124                 - Term::ReadLine (useless?)
125         - Bundle::LWP
126                 - URI
127                 - HTML::TagSet
128                 - HTML::Parser
129                         - HTML::Entities
130                 - HTML::HeadParser
131                 - LWP
132         - Crypt::SSLeay? (ssl?)
133         - IMAP?
134         - Net::Telnet?
135         - Archive::Zip?
136         - Mail::Send?
137         - Date::Calc?
138         - XML? XML::Simple? (expat?) (there is builtin xml support)
139         - RSS?
140         - DBI (DBD::???)
141         - DBD::SQLite? (sqlite?)
142         - SOAP? XML-RPC?
143
144 =head1 FUTURE POSSIBILITIES
145
146 - Remote console (Bluetooth/IR)
147 - S60 GUI support
148 - S60 PDA support
149 - Phone APIs
150 - S80
151 - UIQ