I know I need to re-write these to be more informative...
Can any suggestions be made from what I have blogged on os4coding.net as well as the threads on AW+Amigans forums
Along with any questions about the projects themselves?
I'd like to clear up whats needed to complete each in a timely manner and also what exactly they provide.
[EDIT]Mirrored from AmigaWorld.net ---- Perception IME - "Input Method Editor" framework allowing for Languages that are not able to be entered into the computer by Keymap alone.
Chinese / Japanese / Korean and Arabic are 4 known examples.
you can enter the phrase "ohayougozaimasu" in using a qwerty style Keyboard, and have it post-entry translated into 「おはようございます」 Using Japanese Hiragana as one example. (Japanese Language Hiragana Mode) without losing the option to enter English or other European Languages. ---- Polymorph VM - "Virtual Machine" subsystem,
a support library for Emulators / JIT and Dynamic Recompiler systems along with generic Virtual Machine functionality.
WHDLoad / ShapeShifter / Wine / PC-Task and Basilisk II are examples of this, VirtualBox / VMware and QEMU are additional Examples as well.
The point of Polymorph is to actually provide a basic mechanism where programs from any given "target" are made available on top of AOS4.x as normal Applications.
From the AOS4.x it sees no difference between the "polymorphed" program and others, from the "polymorphed" program it doesn't see "AOS4.x"... it sees the "target" system instead.
Examples would be ... running a Graphical "Java" application or "Windows" Application, another example is encapsulating older "Classic" Amiga software and providing them a more "complete" OS environment or a limited "Hardware only" Classic Amiga style environment from which to run.
additionally...
Applications may be specifically written to make use of Polymorph in a hidden way, and this would also provide the option of the "launcher" to make use of network options where the "hidden" thread(s) may be running inside the "*virtual" container... and the container can be pushed or pulled between machines.
the container wrapper (launch tool) may provide a basic presence locally and also have the options to Disconnect and reconnect to the container later...
Allowing for "cluster" computing... similar to how distccd works in some parts.
There is also another experimental option with regards defining your own container within polymorph... and that is "partial static" CPU definitions.
You can create your own CPU within some basic boundaries... (number of registers, total memory, filesystem access) and if the CPU definition is considered "volatile" then you can actively change the functions provided by the "dynamic" section of the opcode table.
This would be most useful when dealing with encryption setups. not only does the data get moved around but also the algorythm can be changed as well.
Think of this as a self-modifying Enigma machine needing extra keys, not just the key for the message but also the modifications key as well. [/EDIT]
Hi Belxjander, as you asked for feedback on your blog, i hope you'll find the following one constructive.
The VM project has a more general appeal, i think. But still to a lot of AOS4 users it is difficult to understand what this is about. It would help them , feeling more involved, if indeed your blog entries were less of a selfreflections and more of a didactic kind. A split up of your entries in logical , well understandable way, with one giving an overview of them and the goal of each. Better understandable titles , entries that stick to their intended content More references to good general available info would help, references to your stuff that is allready on the internet (older and certainly the new concerning your 2 projects)
@JosDuchIt - thank you for the constructive critique,
Yeah, I did do those entries in a rush and I was hoping to answer questions about them but I was more surprised about the lack of questions than anything else.
I've tried to sort out a more logical arrangement but I am feeling I'm not so good with the blog and documentation side of things.
I'm definitely not going to stop however, as for previous work, some of it was experimental other was NDA (and I still can't say more :(... )
As for what I can point to... there was a Picasso96 SDK for AmigaE on the Classic Amiga's which I converted over. (I wonder if that is still around?)
I have mostly done helper routines to fill gaps temporary or otherwise in other peoples projects and I am actually going forward with trying to produce a project of my own.
Perception is a Japanese InputMethodEditor to start with, but also somewhat more generic in providing support mechanisms to enable other languages that are difficult to input using a normal keyboard with keymap as well.
I know there is little if any Japanese support currently, and only specific VirtualMachine setups as well.
Polymorph is something of a hybrid between an Interpreter, a JIT engine, and a recompiler.
I was asked if it used an intermediate "bytecode" like what .NET does on Windows ... to this the answer is a definte NO... it would not see "bytecode" from Java any different from the CPU opcodes for an x86 or MIPS processor.
as there is the main library and then "Personality" modules with the modules handling the specific details.
the standard CPU fetch-decode-execute loop is present, in an abstraction, since the opcodes are translated direct to the Host native processor.
I don't really know how to explain it otherwise without the technical details, which as you have pointed out become somewhat confusing.
well... I hope this answer helps even a little bit. this thread also exists on AmigaWorld.net including some negative comments from a couple of community members.
I'll just see what I can make and go from there, if they like what they see or not, they have their opinion.
But like fishy_fis points out with regards any donations to me the same rule as going to the shops applies..."Buyer beware"
I'll only ever ask anyone to think about donating based on what they think of the project as it stands.
I'll be quite happy to hear "keep going" or "do your best", or even a few constructively negative style comments.
I'm buying a machine anyway, it is just up to how quickly I get started on actually coding instead of dealing with the designs on paper.
@Belxjander I have to admit that your first post was rather hard to follow, and probably much worse for the average user. I'd suggest removing all the technical side (put it somewhere else), splitting it into two separate posts (one about IME & one about Polymorph), add one or more pretty pictures of EXISTING similar projects (esp IME) to give people the right general idea, and in general *keep it short* (people don't tend to read very far before getting bored). Fixing formatting would also be good (it appears to be pre-word-wrapped to a rather small width, making it appear much longer than it really is).
I'd also be interested to know if your IME & Polymorph are heavily based upon any existing *working* projects (i.e. you are mostly porting something), or if you are coding it all from scratch (and just using existing standards/interfaces/etc where it makes sense). And if from scratch, what prior experience makes you think you can tackle something like this? (Not that prior experience is required, but it does help.)
Am I right in thinking that your will be initially testing your IME using Japanese? If you go back a few years there was someone here who was fairly *obsessed* with someone adding Japanese support to OS4, but I guess he gave-up...
Do you have any particular project in mind to *test* Polymorph? How easy would it be to adapt it to something like E-UAE or another emulator? Or Java or JavaScript? Will it only target PPC and/or AmigaOS4?
How far have you gotten with it so far? Just the planning stage? Some early prototypes of basic functionality?
I haven't really blogged much of anything before so I am learning how to explain this as well, it is mostly my own problem in trying to explain it.
The IME is somewhat of a port but I am doing "from scratch" implimentations of the locale binding code so that there is as little friction between the IME and the System as possible.
once the initial library framework is in place with a couple of dummy functions I will be porting the Google Japanese IME along with trying to keep it "generic" and not just Japanese.
With regards polymorph, it is a re-write of a prior lost project so it will somewhat be "from scratch" but certainly integratable with UAE or another Emulator.
None of the techniques in either project are new (and I apologise in advance if I gave that impression), I am doing the Amiga specific code from scratch and trying to keep each part as small as possible.
for Polymorph itself the core routines will be processor ignorant and modules for x86 or MIPS or ARM processor Emulation can be written.
as for "Javascript" I am not sure, for Java or another "Virtual CPU" defined language will be easier to work with starting from the basic "operation codes"(the instruction numbers).
I've managed to get the planning parts done but as they are both projects I am doing for myself instead of helping someone else I am unsure what timeframe I would get them completed.
the current design for Polymorph would not lend itself to being easily portable to a new processor without re-writing the "Personality" modules for the new target. the core library itself may be portable with few changes.
the first polymorph prototype was written for running Windows 3.x code on AmigaOS3.x being able to load and attempting to run the x86 code using an interpreter initially. this was lost in a HDD failure some years ago (when I left Amiga Classics)
There are also a couple of options I want to explore with it which remain theory at this point however appear practical.