BASE PORT

Console

- The Console only does "ASCII" input: e.g. pressing the "2" key five times, "aaaaa", does not produce "ä" ("a diaeresis"), but instead the "2" key rotates through "abc2abc2...". This is a pity because the Console is actually capable of full Unicode input and output (if you have the fonts, that is). You can verify this by entering e.g. the euro character, which is U+20AC, well beyond U+00FF. I don't know why the full repertoire of the keyboard is not available. - Enhance the console? (line editing, full x-y movement, history) - The role of the console needs to be rethought: the best way would be to have the console visible in the same screen as the GUI elements (an "embedded console"?)

Core Language

- the $^E does not work - select() does not work (not our fault) - starting external application: what now (0.1.0) works is: - system("app"); - system("app&"); - and those with arguments: - system("app arg1 arg2") - system("app arg1 arg2 &") but remember that a Symbian process does get only argv[0] and argv[1]: all the arguments of the application are passed in as a single argument, the second one ("arg1 arg2" in the above) What does not work: - I/O redirection - piped open, in either direction - qx/backtick/` - fork/wait (these unlikely to ever work as in POSIX) - IO redirection or filename globbing in system() (since there is no POSIX shell beneath) What might work in future: - some I/O redirection - exec() might be made to work - Symbian::spawn("cmd args") returning a process id (what does Win32 do?) - Symbian::waitpid($spawned_pid)

Platform

- in S60 1.2 (at least in 3650 Nokia 3650 v3.11) setjmp/longjmp is fragile (see Symbian FAQ-0929), intensive debugging and fix needed

Unicode

- Symbian has Unicode filenames, and Unicode all over the place. - Encode and the use of Symbian Unicode in general tie into the overall usefulness of PerlIO.

Portability

- Slash versus Backslash: where does one need to use "\\"? writing Perl applications, where can one get away with using "/" ?

Build

- make xsbuild.pl much more robust (for building external extensions) (see symbian\ext\README and symbian\ext\Moped\Msg\README) - now the .mmp functions both as input and as output - bad - MakeMaker? Pure PM, PM + XS? - currently the PerlApp UID is in both config.pl (hardwired) and in makesis.pl (computed), this is quite error prone - Enable building also under Cygwin? (could be really hard, the Symbian SDKs pretty much assume cmd.exe)

PACKAGING

- subdivide perlext.sis? - pm-stripper: strip pod and comments, while inserting the appropriate #line commands to keep linenumbers in sync. Shaves off easily 50% of the code, making install packages smaller. - Get MakeMaker to create SIS packages? In non-Win32? - Symbian has APIs for opening .zip files - Investigate Autrijus Tang's PAR format http://www.autrijus.org/par-intro/

PerlBase

- review for proper Symbian coding practices

PerlApp

- In "Run" see how one could show also the file extensions. - How to allow passing command line options to scripts being run? - Terminate/Pause menu entries (to be used while the script is running)? - review for proper Symbian coding practices

All UIs

- Make it possible to call UI elements (or any other Symbianic asynchronous services) from Perl.

There is now a sample of enabling calling CPerlUi::TextQueryDialogL()
from Perl as PerlApp::TextQuery(), see symbian_utils.c.  This, however,
does not work: calling the dialog code blocks so that the screen is not
redrawn at all.  Perl should do both: "yield" so that the GUI framework
can redraw, but in the meanwhile Perl should wait for the completion
(OK or Cancel) of the dialog, but Perl must not exit the current PL_op.
Welcome to the wonderful world of cooperative multitasking.  The right
solution surely involves Active Objects.  The problem may require having
a different Perl op dispatch loop than the standard and debug ones in
run.c and dump.c.

- menu/toolbar support - selection lists (single cf multi cf radio) - on/off (special case of two-item radio selection list) - forms (multicontrols) - "secret editor" (special case of text query)

Series 60

- in S60 2.6 (at least in Nokia 6630 v4.03.11) launching scripts via FExplorer does not open up the console

Series 80

- On exit "PerlApp" gets Symbian USER Panic 44: "This panic is raised by the Free() and FreeZ() member functions of an RHeap. It is caused when the cell being freed overlaps the next cell on the free list (i.e. the first cell on the free list with an address higher than the one being freed)." Reason unknown. - Hotkey Newline so that it functions as 'OK' in dialogs

UIQ

- UIQ 3.0? UIQ 2.0? (now only tried in UIQ 2.1) - UIQ, at least UIQ 2.1, does not have "file select dialogs" since "files" are supposed to be hidden from the user. Therefore, no "Run" in PerlApp. (For similar stylistic reasons there is no "Exit".) - Long notes (e.g. the EPerlAppCommandAbout) are shown badly truncated.

CPAN LIBRARIES

- Include/Package more modules (or work harder on getting CPAN.pm working?) (but note that lib/**/*.pm is 3.5 megabytes, probably not worth including all of it, even after pm-stripping): - libnet - Bundle::CPAN - Archive::Tar (now included in 5.9.x) - Term::ReadKey (useless?) - Term::ReadLine (useless?) - Bundle::LWP - URI - HTML::TagSet - HTML::Parser - HTML::Entities - HTML::HeadParser - LWP - Crypt::SSLeay? (ssl?) - IMAP? - Net::Telnet? - Archive::Zip? - Mail::Send? - Date::Calc? - XML? XML::Simple? (expat?) (there is builtin xml support) - RSS? - DBI (DBD::???) - DBD::SQLite? (sqlite?) - SOAP? XML-RPC?

CORE LIBRARIES

- Fix Devel::PPPort (worth it?) (Note that there is D::PPP 3.x out by now) - Fix Encode to not to have writeable data: seems to be tricky indeed because of copious global non-const data. - Verify that the modified File::Spec::Win32 does work in Symbian. (File::Spec::Epoc does not seem to be relevant?) - What does Cwd really do since the concept of cwd is a bit fuzzy in Symbian. - What should Sys::Hostname return? GPRS? BT? WLAN? - ByteLoader problem: byterun.c does not see VERSION and XS_VERSION. - POSIX problem: STDLIB POSIX is not that POSIX.

REGRESSION SUITE

- how to run the standard test suite on a Symbian device?

FUTURE POSSIBILITIES

- GUI support (problematic that the MVC model enforces an "application") (name suggestion: Moped::Gui) (see above for the need of sorting out the Active Objectedness) - Messaging support (sms:, mms:, mailto:, irdaobex:, btobex:, cell location, WLAN) (name suggestion: Moped::Msg) - PDA support (address book) (name suggestion: Moped::PDA) - Device support (memory, camera) (name suggestion: Moped::Dev::Memory, Moped::Dev::Drives, Moped::Dev::Camera) - Phone APIs (e.g. how to catch an incoming call: BIO messaging) - Remote console (Bluetooth/IR/USB?)