Screens Environment is a multi-platform component based middleware research project designed to connect technologies together and provide better user experiences for the future of computing http://sourceforge.net/projects/screensos/
Friday, April 08, 2005
Update - Better than I thought
I am realy moving along... I have nearly finished testing the CoreList component and remove alot some small and some large bugs.
OK... the changes:
These are the following components to be coded this week:
CoreObject - Deals with generic objects.
CoreFile - Deals with file stream based objects (you can read/write/copy/resize the stream)
CoreOwner - Deals with the owner relationships of an object (parent objects)
CoreMember - Deals with the member relationships of an object (child objects)
CoreObject/CoreOwner and CoreMember are about 4 public functions each while CoreFile has about 9 functions. These components are very easy and they are the next step at finding bugs in the CoreList/CoreItem components.
I realy feel that the train is moving... I have passed the main hard part (the start) and the next hard part is only at the end of the kernel in the multi-tasking part.
I would like to thank all the MSN users who are helping me along the way. I couldn't do it without you.
OK... So about the open-source bit:
The Screens kernel (Core) will be released open-source with documentation and the API (so you can start writing applications using the object storage) . I think it will be GPL but I dont know yet (I need to examine the licence). The reason for this is so that developers can port the kernel to other platforms and the second reason is to show developers that this project is serious stuff.
I know many of you will think that the code is small and not very complicated but thats the point. It took me alot of time to get to the simplicity of the kernel or to even agree on the object storage design.
When will it be released?
No idea... but I think the multi-tasking part should be in about 2 months to be coded & tested. The multi-tasking part is the final hard part in the kernel but is also one of the great parts about it.
It will also be very easy to code for the kernel, you wont need to know how to code shared libraries or anything like that. You code a normal PalmOS application but intercept the Screens launch code. You will able to use your normal PalmOS compiler and the API is C/C++ compatible. You include ScrCore.hpp and ScrCore.cpp in your application and call the Core functions.
The kernel is quite limited at the moment but the limitations will be removed before I release the kernel.
Thursday, April 07, 2005
Update - CoreList coded (renamed from CoreArray)
I finished coding CoreList (used to be called CoreArray). The coding was simple but I was stuck on the definitions at first but a MSN user helped me solve them quickly and easily. I will be testing the component hopefully next week.
So what component is next? CoreObject
CoreObject should also be simple like CoreList but I might get stuck on the definitions (I am not very good at defining the function names for components) so if anyone can help me via MSN Messanger (zhamilton1@yahoo.co.uk) that would be nice.
As I code, things do change but on a very small scale just like CoreList changed from CoreArray. Nothing to worry about since these are not the changes that required me to recode everything like I had to do over the last three years. This is the final code untill the first release.
I expect to have CoreObject, CoreFile and CoreLink coded by the end of next week.
Monday, April 04, 2005
Update - CoreItem works
This is it guys... Its going to be the final code for the Core kernel.
CoreItem is coded and tested and works!
I am now working on CoreArray and then CoreObjects.
I am so thankful that I did it because it was hard for me.
Development is going to pick up the pace these weeks because apart from a few functions most of the components are based on its previous components and are just normally specific uses of the previous component like CoreString uses CoreFile which uses CoreItem. CoreObject uses CoreItem and CoreArray.
I have decided that I will release the kernel open-source for a few reasons one of them so that developers can port the Screens kernel to other platforms easily. I will release the kernel once its done with the Core API so developers can start learning the Screens coding syntax and start using the object storage.
Friday, April 01, 2005
Update - Things are moving
I finished coding the PrivateBlock component last night. The PrivateBlock is a small component which deals with the way items can have a fixed handle. It doesn't matter now... I hopefully will make an editorial about CoreItem when its coded and working.
I am very happy with the progress... I am coding much more now than I ever did for Screens.
OK... I think it might be safe to say it now... I am considering making Screens open-source for a number of reasons. It wont be open-source like source-forge in which developers can contribute but developers will be able to port Screens to any platform without a request. So how will I make money? I am planning on doing some kind of Subscription design where you pay lets say 10$ a year and you will able to download modules in a very easy way. More about this when I get round to it.
Wednesday, March 30, 2005
Update
Finished coding all functions in the PrivateData component apart from Resize and Align which while are not needed at the moment will be coded after CoreItem is coded (because CoreArray uses it).
I have added a new feature to the CoreItem design which are called Temporary Items. The difference between a temporary item and a normal item is that once a normal item is removed, its handle now points to an empty item and the handle will never be used by another item. Temporary items once they are removed can have thier handle be used by another allocation. If you create a temporary item, you must make sure that the handle is not used or stored once its removed otherwise you might point to another item by mistake. Temporary items are used for either tightly controlled items (like the file item of an object) or quick/temporary uses.
So I have CoreItem to code now which is going to probably take quite a while. Its a complex component but provides great uses once its finished. Then we have CoreArray which basicly takes an item and allows to store an array of structures together one after each other but unlike C/C++ arrays, the array is dynamic.
I really feel the progress coming forward. I dont see myself recoding what I have coded so far, so I see this as the final code (not demo code).
Thursday, March 24, 2005
Blog... Blog... Blog...
So I found last night what was causing headache while coding... Offset calculations
The PrivateData component takes the stream provided by the PrivateDisk (previous) component and splits it into allocations called 'Data'. Each Data is allocated after the last data allocation so even if data is removed anywhere but the last data does not regain allocation free space. That space is regained by aligning all data to the start (overwriting free space). This makes allocation and deallocation actually fast while aligning is only done at specific times and is done step by step so it does not stop the flow of the environment.
So where is the problem?
There are many calculations done like getting the end of the header or getting the byte after an allocation and doing addition and subtraction on them. I was good at math but its hard to focus that hard when you focus after 9PM and able to read the code I just wrote.
How will I solve this?
I will create some macros to simplify the calculations into macro calls. I am working on the macros (throughout the day) and hopefully I will retry to code on sunday night.
We are seeing progress and I am glad that its going well so far.
Subscribe to:
Posts (Atom)