The discussion to-date has highlighted some specific areas as follows:
Code review:To facilitate a common development environment whereby everyone is working from common knowledge, the entire source code should be reviewed, cleaned up, documented, modularized, and updated (Known bugs fixed).
SidewinderThis reflects the statements and initial suggestion by bruceuncle as to what the initial milestones should be.
In software enhancement terms:Stage1: | AMOS Pro V2.0 as released and fully documented. This is the "still point" from which development can proceed. The documentation is well on its way and is databased. So I can pull sets of bugs and weird behaviour out with simple queries. That's the groundwork for the next stage. |
Stage2: | AMOS Pro V2.1 with bugs fixed and updated docs. Nothing changed by way of additional functionality. This is the stable base to build the next stage upon. |
bruceuncleAs it will take some time to review the code the Stage 1 milestone could continue as it is at the moment with the documentation set (currently being written) and version 2.0 being released together as the initial resource kit.
However for the Stage 2 milestone a two part goal could be the primary focus.
a.) The actual code is reviewed and documented.
The documentation would most likely be in the form of comments for each block/line of code. It would be beneficial if these comments were not overly cryptic in their meaning and written as if talking to a laymen. It Can be difficult to understand someone else's logic when it is not simplified for general understanding.
Also someone has to pull these comments out into developer/contributor documentation.
If possible the code should be modeled. As AMOS isn't an object model architecture, it's would be difficult to model it using UML, however it may be possible to produce block diagrams showing function dependencies (other functions etc.), additional models could also be produced were appropriate and relevant. Basically use UML techniques. How does it all fit together, definitely requires further feasibility analysis/thought.
b.) Code updated (Known bugs fixed)
For this a comprehensive list of known bugs will be required.
This would require that all sources of information, AmigaCoding, forums, mailing lists, bruceuncles work etc. be trawled and be collated. A job for some lucky volunteer(s). I did volunteer for this didn't I, sigh!
With this bug documentation at hand, contributors would have a basis for discussion as to which libraries/bugs to prioritise and delegate.
Optimisation:Lots of comments on this.
Here are some comments (not in any predetermined order) to capture the theme of optimising and it's considerations. There are more in the thread.
If there's any hope of making the compiler optimize code better let me know. That was always one of the shortcomings of Amos code. I have heard that AmosPro does bit-shift optimization of multiplies but not much else.
SamuraiCrowWhere do you stand with regards to extension commands that duplicate (but are more efficient) AMOS commands?
...Wouldn't you love to not need to scour through optimisation 'tips' and just get on with writing your programs? For example, I am constantly frustrated by using GOSUBs where i could/should be using nice tidy procedures... sometimes only 1 or 2 lines long!
Hungry HoraceIn order to get it to be as fast as, say... SAS/C, it would need to be totally reengineered to use register-passing. All extensions would need to be reengineered to take those changes into account as well.
SamuraiCrowPutting in 100 hours work to gain 1 millisecond performance is a waste of resources
MadAngusmaintain support for current code in AMOS Pro, AMOS The Creator, Easy AMOS, Supports both the 1.3 and 2.x1 extension formats
bruceuncleAll original commands should remain for compatibility to older code, if they could be optimised without braking compatibility, I do not see why not.
MadAngusSo from the comments in the thread we surmise this into two categories
a.)What to optimise.
This really comes down to analysis of two types, Visual perspective and Profiling.
With visual perceptive (qualitative analysis) it is simple a case of comparing one technique to another and seeing if the difference can be detected visually while the program is running.
Profiling would most likely be the preferred method whereby measures of space (memory) or time complexity of program, the usage of particular instructions, or frequency and duration of function calls can be analysed and turn show the weakest areas of the program. Any qualitative analysis could also be verified by this technique.
Wikipedia is my friendIn additional the benefit of any optimisation should justify the workload that it entails.
b.) Compatibility
I doubt we would be very popular if any optimisations implemented would render all past code redundant requiring the rewrite of said code or extensions to work in the new distribution.
Unless compatibility considerations are completely disregarded, re-engineering the code using alternative techniques may not be the way to go.
AGA support and other features:AGA support, who doesn't want it!
However, to attempt to begin implementing AGA enhancements too early in the development cycle may lead to problems fixing old code while new code is being injected. Such as changes to original core code to allow integration of the new AGA code whilst trying to fix an old bug that related to that original core code.
As has been said, trying to dictate what people work on during the course of the development is absolutely out of the question for this project, there will be
none of the
"We know best" or
"we won't implement that because we don't want to work on it/agree with it/like it" attitudes in this project.
So how to accommodate the desires for AGA support and other features (Including optimised code)?
We have been provided with the solution to that problem,
Extensions thank you Francois.
This would allow anyone who wishes to develop alternative optimised code or features and role them into an extension (or even an alternative AMOSPro), and at a later date and if feasible role them into the core code. So if anyone decides to work on other things outside of this projects boundaries, know that you will be welcome to submit your work for integration at some point, it would also be appreciated if you
would submit your work.
With all documentation being made available to everyone, your projects could follow an inline development process, i.e. as new fixes are applied to the core code you could in turn test your code against the changes. Would make implementation at a later date simpler.
AMOS Pro interpreter and compiler in C
I guess now I can shelve my plans to write a new AMOS Pro interpreter and compiler in C.
SidewinderIn regards to the above, I wouldn't say that, you could develop a new AMOS Pro interpreter and compiler in C and make it compatible with old amos code or you could work on an optimised AMOS Pro interpreter and compiler and submit it for integration into the core code. The options are yours to choose.
Here are a few areas that could come under the inline development environment. (Actually their on my wishlist)
AGA support.
TOME Resourced and redeveloped.
Alternative interface.
EasyAMOS tutor for AMOSPro.
Other questions raised:Which code repo to use, if any? SVN, GIT, HG, CVSDiscuss pros and cons and preference. Maybe a poll.
Language used, stick with 68k assy or port to c.In the first instance it may be best to stick with the current code language (68k assy) during stage 1 and 2. After these stages a port to c debate could be started.
Could any of the xAmos code be used.
Should development of implementations be designed to be portable so that xAmos can make use of them.Simple answer, no, as the workload required to port to and from xAMOS would be at the detriment to the actual AMOSPro project.
Project management:I think I'm running out of my Daily Man Word Count!
Based on the docs I attached on the bottom of this post ->
Here, I'll draw something up and submit it. You may want to download these and provide comments/criticisms etc.
Other things to think on:
Project Website
Feature voting system
'Official' versioning system
Plagiarism aside what do you think?
Finally -
Wheres our local hero Spellcoder, we would really appreciate yours and Lonewolf10's opinions, especially with the amount of work that has been done on AmigaCoding and your exquisite knowledge.