|Proposed by Ivan Hugo Guevara (profile, biography)
How will I do that project
In first place, i've to understand the tools and libraries that are going to take part of Mars, so, dedicating 20 hours per week (or more), i will use the first 3/4 weeks to research about these tools and libraries. I'll start creating some basic components for the project such as a window or a list, and play mixing them. After having learnt this, i will establish some aims to start working on the project. These aims will be life cycle's general ideas of the Mars Project and will be specified in a list of tasks, like a work breakdown structure. This will be the starting point of the documentation and developing of Mars release 1.0.
What methodologies will I use
I will organize the project in small iterations (1/2 weeks, dependending on the task to complete) and i will generate a report to my mentors, in each iteration, giving some feedback about the current status of these tasks and the issues that i bumped into. After receiving my feedback, i will work on that issues to solve them and propose different solutions. I will work with my mentors trying to figure out the best solution and try to put the project in that direction. Mars has very complex interactions between its components, so i will have to use mock objects and stubs to simulate part of that complex behaviour, so i can be sure that it works like it should.
Suggested timeline and milestones
1) Understand the way Mars interact with the differents libraries (Cocoa, GTK and WinForms)
• Understand FFI, TalkFFI and NativeBoost
2) Create some basic components (a window, a container list) and try to mix them
• Provide some working examples to the project
3) Extend that creation to other components
4) Generate a first approach to a more sophisticated component (a workspace for example)
5) Evolve those components in a first prototype
6) Evolve that prototype reaching the main aims (a stable version who can run a workspace and a browser) and generate a stable release
7) Write the documentation of the project
Where I see the risks
- Mars uses C to call functions embebed in the libraries. Any mistake could cause memory leaks o segmentation faults, that could stop the entire framework.
- Component's interactions in Mars are very complex. Due to the use of external libraries, external factors could alter the way it should work the whole framework.
- Fake objects high complexity. Isolating functionality to test it up will be difficult due to complex interactions.
How the results will look like
It will show a whole new modern System Browser and a whole new modern workspace, totally functional, developed in the three most used operative systems: Linux, Windows and Mac OS X.