Technologies: AROS: What is the state of Developing tools for middle and advanced Users?
On the begin of June 2012, a discussion on Amigaworld.net started by PhantomInterrogative introduced the experience made from the ADAM community (yes, ADAM, the home computer extension for the colecovision), left in the cold from the Coleco bankrupt in 1984; the post, summarized, tells how, in order to keep alive the community, users had to make the 'paradigm shift' to become developers of their own software; while a comparison between the two situations cannot be easily made (ADAM was not a successful machine and a 8-bit one, only a dozen users remain so far), however developers are a nowadays a rare breed among Amiga OSes, knowledgeable developers even more; due to the increasing age, even find adequate documentation for the Innards of the Amiga related OSes is pretty difficult, though efforts like the recent Amiga Wiki from Hyperion, the AROS wikibooks for users and for developers and several web sites that provide transpositions from the AmigaGuide versions exists; therefore a similar paradigm shift is probably a good idea even in the Amiga/MorphOs/AROS communities.
However, programming so far has not a task for everybody in the Amiga universe at least since the demise of Commodore (and the new system, unlike the old 8-bits, does not provide a main programming language in front of the face of the user, but that is another topic).
Right now the most rewarding way to build a proficient program in a NG Amiga system has indeed been using C/C++, and that is not on everybody skillset; other operating systems however are actually providing alternative languages that can be compiled or executed as runtime; well known are Java, Python, Lua, Visual Basic, VB.NET, etc - not to mention alternate toolkits such Flash/AIR or the latest trend HTML5; those languages and runtimes have a less steep learning curve and in some way is possible for somebody to produce simple programs or intermediate utilities and games; those rapid development tools can provide a shortcut for hobby programmers to use the Amiga systems in a more proficient way if available; but What rapid development tools (or in some cases what development tools at all) are actually available for AROS so far?
IDEs and Editors
Actually in order to write either code or fast text, in AROS there are four main editors available; the first is the System Editor; does not support syntax highlighting and has very basic features as copy/paste and find,however has a tabbed view that allows to have more files open at once.
For more traditionalistic coders, a port of Vim is available for AROS made by Hitchhikr; not the most recent port and am unsure whether is still working, but provides all main Vim features and syntax highlighting; usually distributed with Icaros Desktop up to 2009 as far as i know, is available on the AROS archives here.
then there is NoWinEd by Sh1nKurO; born as a base text editor to be used in a never taked-off magazine, is available throughout all Amiga systems with different look and features according to the version of MUI/Zune available; the common ones are: tabbed display, autosave, handling of UTF-8 files and autosave and auto-backup; other versions beside AROS one -due to some still unfixed Zune shortcomings - also support drag and drop of files.
Annotate! is so far the most advanced text editor on AROS; designed by Doug Bakewell then updated and maintained by Daniel Westerberg is distributed under the label Onyxsoft as GPL software; supports multiple tabs,syntax highlighting, advanced find/replace, macros, an AREXX port and - though some GUI design choices might look a bit unconventional, like the scrollbar without arrows on the left - do its own job pretty well. I used it to code my experiments with lua/zulu and it behaved pretty good. Had to investigate the xml syntax file in order to personalize it but, if you know xml, is a pretty trivial task since the file is pretty self-explanatory It can be downloaded here.
There is one Integrated Development Environments or IDE officially,called Murks!IDE that, in theory, could be used to develop applications under AROS, however i am not sure whether is still actively maintained since the files on the sourceforge.net repository are from January 2010. Murks looks kinda primitive at first sight and does not support syntax highlighting; it does however supports tabs and can be used to compile C and C++ projects.
In 2010 an user called Proto started work on an alternate IDE called Ganymede that should have, in its intentions, cross-platform and commercial; the development thread on Aros-Exec is here where Proto shown screenshot and even videos of its incoming creature; Steve 'ClusterUk' Jones was in contact with him and had occasion to test some development builds, however in November 2011, Steve declared in the same thread that the development of Ganymede stalled; from the images and videos posted so far, Ganymede supported some interesting features, including syntax highlighting, a scintilla-style grouping of functions, a debugging report window; was also intention of Proto to find a way to support GDB for debugging. Personally i wonder if Proto could release its work done so far as open source and let the project be finished by other developers or if he is available to set a 'ransom' to free the code that might be collected via bounty;
The last IDE that want to mention is not native of AROS but is a pretty effective one especially for cross-platform productivity: AmiDevCpp is a work of Heinz-Raphael "Heinz712" Reinke based on the free Development Environment WxDev-Cpp and Jocke "Zerohero"Birging 's Crosscompiler and runs on Windows. According to the AmiDevCpp web site, AmiDevCpp provides a comfortable Development Environment to Amiga Developers such as Project managment, Class Browser, Code completion and a lot more features; it also can be expanded with plug-ins that the web site call DevPaks.
PortablE is a rewrite for modern systems of the original Amiga E, made by Chris Handley; it works translating the E code in C++ code and then amking it compile by the extension PEGCC in an executable. E language has been quite known under Amiga OS in the nineties, and after the fdevelopment of the original Amiga E language stopped in 2000, PortablE was one of those projects that took over the inheritance.
The PortablE web site explains more:
PortablE is capable of generating code for both the C++ (and AmigaE!) languages, which is then compiled to a proper executable. It supports Windows, AmigaOS3, AmigaOS4, AROS & MorphOS. (It can potentially support other OSes & generate code for other languages.)
PortablE has native executables for Windows, AmigaOS3, AmigaOS4, AROS (x86) & MorphOS, because PortablE is written in E itself!
It comes with portable modules to cover stuff like file & directory access, shell parameter parsing, graphics, sound & GUIs. These portable modules are NOT always supported by all OSes, especially not by Windows yet. You can find a complete list & description of all of them in the "Standard Functionality" document, but essentially Windows only supports Shell-like stuff.
Many Amiga modules are also provided for AmigaOS3/OS4/AROS/MorphOS: AmigaGuide, AmigaLib, Asl, Commodities, Console, DataTypes, Devices (inc. AHI & Timer), Diskfont, Dos, Exec, Gadgets, Gadtools, Graphics, Icon, Identify, IFF, IFFParse, Images, Intuition, Layers, Locale, Keymap, MPEGA, MUIMaster, Resources, ReqTools, RexxSysLib, Utility & Workbench. Plus part of class, mui/*_mcc, Other & Tools. Also 'libraries/ahi_sub' & 'libraries/cd_play'. (Additional modules can be added if there is interest, but the original idea for PortablE was to provide abstract modules that did not expose the OS.)
Additionally, some modules contributed by others are currently only available for some targets: 'mui/Lamp_mcc'(OS3/OS4), 'mui/TheBar_mcc'(OS3/OS4).
Modules that are specific to certain OSes: 'Picasso96API' (OS4), 'target/application' (OS4's application.library), 'target/cybergraphics' (AROS/MOS).
For Amiga-like OSes, 256MB of installed memory is the recommended minimum. A stack of at least 100KB is also required.
In the same web site is present a comprehensive documentation, links to the original E language documentation, and together with PortablE is possible to download several examples of tools and demos to compile and test.
Hollywood name is well known in the Amiga and AROS community; as a language syntax is between lua and Basic, which makes it quite easy to grasp; its actual incarnation is at version 5.0 and has been already used to build great tools on AROS such as the Amiga [AROS]Media Center and also small tools as Acuario (a screensaver), the image viewer LookHere, the profile manager for AROS Broadway and several games.
I asked Fabio 'Allanon' Falcucci, developer of AMC, of the SCUILib Hollywood Library (that provide tools to create advanced GUIs) and other applications made using Hollywood to write me an introduction and summary about its features and about Hollywood and AROS:
Hollywood is a great tool and a nice choice for all people looking for a simple yet powerful programming language, it offers many modern features and it is ideal for anyone that does not like all “C” stuff and weird constructs. It is based an Lua scripting language and its programs can be run interpreted or compiled, compiled programs are something like Java programs, they are compiled in bytecodes and linked with a JIT player that executes the code when launched. Speaking of AROS it’s a great resource for begginers but also for experienced programmers just because there aren’t much high level programming choices available to code under this operating system if we are excluding “C”. Nice examples of Hollywood are LoView and LookHere, two free image viewers done respectively by Tuxedo amd me, Dental Info and Dental Canal, both commercial products developed and sold by Ferrule Media, and AMC, a Media Center developed and sold by me.
One of the biggest advange of Hollywood is the complete compatibility between all supported OSes, if the programmer does not use explicitely platform dependant features the source code can be easily compiled for almost all OSes including AROS, Linux, Windows, OSX and all amigaish systems.
Hollywood states itself as a multimedia programming language oriented to make presentation and run interactive slides but with the latest release it have become more powerful offering commands to manage almost anything you can thing about: transition effects, pictures, videos, music, samples, sprites, layers, windows, they just some examples of object you can handle with Hollywood. Hollywood programs can interact with the users with the keyboard, mouse, pad and joystick. In my opinion it’s a perfect tool to develop 2d games (even complex games) as well as applications. With the latest release, 5.0, Hollywood exposes an interface for a plugin system: virtually there is no more limitations with plugin systems, anyone now have the tools to make additional plugin available for this great language; some examples released from the author are an XML parser, SVG support, Ogg Thora & Ogg Vorbis support, and some more available for free.
Unfortunately Hollywood it’s not perfect because it’s still lacks some features, in my opinion, that should be added; for example threads are not yet supported, and there is no support for 3D graphics, moreover 2D graphics are only partially hardware accelerated and this could lead easily to slowdowns when you fill the screen with animated and moving object. Another major missing piece is a GUI framework and it’s still missing because of the cross platform nature of Hollywood: there is no common GUI framework for all supported OSes. To try to fill this gap I have started a project to build a GUI framework coded with Hollywood, full platform independant. I’ve got nice results but my time is limited and actually the project is going quiet slowly, but this demonstrate again that actually Hollywood can be used for almost anything.
The good thing is that the author, Andreas Falkenhahn, is very active on this project and listen to the community resquests implementing features or modifying behaviours suggested by the user-base.
Concluding this brief summary about Hollywood I can say that actually it’s the only choice for AROS programmers (begginers or experienced) that does not like “C” (or does not have time to learn it) to unleash their creativity.
Fabio is also the owner and main contributor of the new blog Hollywood Tools, dedicated to tutorials, libraries and applications for all systems developed using Hollywood.
Together with Hollywood is provided, only for Amiga OS and MorphOS (probably due to the usual shortcomings of AROS), the Designer program; recently updated to version 5.0, it is a graphical frontend for Hollywood; according to the Airsoft Software website it is -beside a Multimedia editor for Hollywood - also a graphical editor that supports also the SVG format.
Considered the base requirements (kickstart 3, 68020, a board using Picasso96 or CyberGraphX) i might guess that Designer might be used via Janus UAE, but would like that someone that alredy tried to confirm or deny this.
Hollywood and Designer are commercial products and for pricing I refer towards the Airsoft Software website.
Amilua and Zulu
Whoever follows me knows that Amilua and zulu are among my favorite RAD tools on AROS; however, for the uninitiated will explain briefly that Amilua is a port of the scripting language Lua made by Matthias 'Mazze' Rustler with bindings to the Intuition interface and Zulu is a binding to Zune; lately other bindings have been added such as socket support and SQLite recently; Some interaction with AREXX and shell script is also possible parsing the Environment variables.
Using the syntax combined of Lua and the MUI class definitions is possible to create simple GUI programs and frontends; actually Zulu is powering the front-end of some utilities by Yannick Erb,including a nice weather widget, the Theme Manager and some utilities made by Steve Jones; an advantage of Amilua/Zulu is that the script can be launched from shell and from icon via icon tooltips so that will behave like an application; to write Amilua/zulu scripts any text editor can be used, however i personally like to propose Annotate, also because there are additional Syntax Highlighting extensions (one made by me some time ago) for Lua.
On the negative side of Amilua/Zulu is: first of all that the binding does not support callback hooks (events that call a function) and that prevents the building of more sophisticate interfaces; the existing apps need to redraw the app window in order to show updates and that might make the application look slow. Mazze once said that was thinking a way to enable callback hooks via Lua instructions rather than C like Zune is expecting; wish that some more developer might help Mazze in improve Amilua/Zulu that so far shown its power and potential once improved; personally would also love to see more bindings with Cairo and other (of course to be ported) graphical toolkits like WxWidgets; some impressive demos can be seen on the Lua all-in-one archive available for Windows and Linux; though not recent it still can be used to build fast tools and even videogames; an impressive one is this quake-style game using a binding with the irrlicht engine (like to see that ported too).
By the way Amilua and Zulu are included in the nightly builds and in every AROS distro, so is easy to try out. If you new to Lua, there are some good generic tutorials in this website, plus some good hints and discussions (some of my own experiments) in AROS-Exec.
AROS Ruby and Zuby
Dave "Misterdave" Webster has been working on porting Ruby on AROS; following what Mazze did with Amilua/zulu he created a binding with MUI that end up being called Zuby (my fault? :P); however, Dave improved the binding keeping it abstract so that, unlike zulu, is not strictly tied to the MUI syntax in building Interfaces; in fact Dave has made Zuby able to use XML documents as reference to build the interface, as he shown in its blog, using Glade GUI Builder XML as reference for zuby to buid the GUI for the example shown.
Since had no news about ArosRuby/Zuby at least since last February - when the last post appeared on Aros-Exec, I asked further information to MisterDave via PM and he kindly answered:
Don't worry, I haven't given up on arosruby What I have been trying to do in the past 6 months is to keep the version in the Mercurial repository (http://code.google.com/p/arosruby/) as the 'definitive' version, which should be of release quality more or less. I tend to bundle this up and post binaries on to Aminet and Aros Archives, although I haven't done so for a while. Ideally this should be stable enough to put into an AROS distribution or I could create a GUI installer for users to install the binary release themselves.
There are a couple of C extensions that I am working on:
* the socket library - I have been trying on and off for about 3-4 months to get this to work, but I think that there is some incompatibility between the Unix socket API and the AROS socket API, despite them theoretically being the same. This may just be a bug in AROS that has been recently fixed. I will have to download a new nightly and check. This feature has been the tipping point for me before contacting Paolone and the other distro maintainers, however, I may just go ahead anyway and add the socket library later on.
* The other part is the Zuby extension which hooks into Zune/MUI and implements the same interface as
Ruby-GTK for the Ruby programmer (http://ruby-gnome2.sourceforge.jp/). The advantage here is that I can just use the default Gnome GUI builder Glade and use 'ruby-glade-create-template' to generate the ruby stub code. Now the tricky thing is that my own version of the source for this was built rather quickly and experimentally so, while it does 'work', I need to get rid of some rough edges. What I need to do is to check this piece by piece and add it to the public source repository over time.
Regarding your question about your RAD article, I did set up a blog to talk about the development on arosruby back in February, however, I have only made one post so far. Hopefully this might give you a bit more of an idea about what I have planned. If you want to ask me some questions then, yes, I would be happy to.
As with most hobby projects, the day job takes its toll on one's free time, however, I am on holiday next week, so hopefully I can get some more stuff pushed into the Mercurial repository. The repository has an updating changelog, so hopefully this will give you a good idea in the future of what I add, however, please feel free to nag me :) http://code.google.com/p/arosruby/source/list
Have no experience with Ruby Language, but for beginners like me there are good platform semi-agnostic tutorials on nettuts that also include screencasts; that should give at least the basic notions to get dirty with it, and then as usual, hope there will be some extra hints in the source code of the examples included in AROSruby and Zuby, however anybody that will grasp the base concepts can also write their own tutorials to help spread the technology...
[UPDATE - Misterdave did let me know that since the final code quality of AROSRuby is still not satisfying, he did not put any binaries to dowload yet; however, if somebody want to beta-test AROSruby my advice is to get in otuch with him via PM in AROS-Exec or in its own blog. ]
Recently the user Mequa started the operation of building an AMOS interpreter , rewritten in C++ that uses SDL and can be compiled for the modern Amiga systems: X-AMOS is a brand new addition to the panorama of the languages available for AROS - the first build from the begin of June - but since the roots on the original AMOS code it is expected to gain popularity pretty fast. The implementation, according to Mequa itself, is not yet complete, as answered to an user from Mequa itself on this post on Amigaworld.net explains what still is missing to have a more detailed reimplementation:
First of all, GOTO is not yet implemented in XAMOS, but may be in a future build.
For...Next is also not yet implemented, though you can use While...Wend to get identical functionality. So the current program is not yet supported.
Let's assume, however, that a future version of XAMOS will implement For...Next in the same way as it currently does While...Wend. Then the jump-points of both the For and Next will be pre-calculated.
(Note that in AMOS, the "F" in "Next F" isn't needed, and does nothing on that line, besides the "syntactic salt" of having to match with the variable given in "For" if not omitted.)
So then, if XAMOS is extended to support For...Next, GOTO and line numbers, here's how that program will execute:
1) Print "I am going to Crash" ten times, and exit the For loop.
2) On the GOTO, jump back into the For loop, and print "I am going to Crash" once more.
3) On the "Next", jump back to the For (pre-calculated jump-point). Here is where AMOS would crash.
4) On the "For", F will be 10 or more, so jump to after the "Next".
5) Repeat from 2), giving an infinite loop, printing "I am going to Crash" repeatedly and with F either increasing or remaining at 10.
In this thread on AROS-exec, Mequa also draw a sort of a roadmap for the further development of XAMOS:
Not in any particular order:
- SDL features:
Full collision detection (needed for games, simple collision already possible)
Multiple screen support
Bob/Sprite Hot Spots (handles) including with Abk support
Bob/Sprite/Screen priority switching
Rainbows (behind screens, simple implementation already done)
- Language features:
Full syntax error checking (may be a lot of work - also with AMAL)
Call functions without using ()
Use of "To" syntax instead of comma
Call procedures without using Proc
Variable scoping and Global/Shared (currently all variable are global)
For...Next (as well as While...Wend)
Goto/Gosub, labels, line numbers (for legacy - usage discouraged)
Print statements with ;
- Extended language features from AMOS:
Call procedures as functions as well as using Param (extended from AMOS)
Custom datatypes (already implemented as static types only)
Simple object orientation (much groundwork already done)
- Compiler (to C++ source) including AMAL
- GUI features:
Cross-platform IDE (may not be AROS-compatible at first or may require a rewrite for AROS).
Possible syntax colouring (in future)
Integrated sprite bank viewer
There have already been available builds of Python for AROS, since PyAROS around 2004 and then the port of Python 2.1 made by Stanislaw Szymczyk for the AROS self-compile bounty; however as far as i know nobody made any MUI binding for it (that might have maybe be called -to follow the tradition- ZuPy?) nor many of the libraries used in other systems such as PyGame have been ported yet.MUIBuilder
MUIBuilder is a small utility that should help build MUI and Zune GUIs, created by Eric Troel and ported on AROS by Mazze; last version was a recompile of original 68k 2.3 sources and wasreleased on January 2011; despite it generates C code i guess that some medium-experienced developer can translate the soruces for zulu, being however aware of the usual amiulua/zulu shortcomings.
MuiBase is a relational database written for Amiga systems, Windows and Linux; has an internal LISP-type syntax language that allows to develop pretty complex applications and display it via ZUNE/MUI windows; through the language it is possible to define some export filters of the data as text (as far as i know no complex database formats are supported, rather CSV or similars to export).
FreePascal has been ported to AROS last year by Marcus 'Alb42' Sackrow; as from the Alb42 words "Lazarus is a RAD for Freepascal which is very easy to use, as GUI-API it
uses the own LCL (which is a port of VCL of Delphi). IT can use variant
Widgetsets, e.g. GTK, GTK2, QT, Win and some more."
Marcus made Freepascal able to generate Zune interfaces,even if not in a typical MUI fashion (with buttons statically positioned rather than the usual cascading resizeable approach of GUI; as from the latest news I know of, on March 2012 Markus was working on the port of Lazarus/LCL (that is also developed in FreePascal); the progress can be seen in its blog and in this AROS-Exec thread.
AREXX might be considered outdated by some but so far is one of the most important pieces on Rapid development since allows applications that have a port to communicate and allows also IPC control; is known that the version used on AROS is derivated from Regina Rexx and has some incompatibilities with some Amiga AREXX commands; insome case this prevents some amiga scripts to work completely under AROS. Staf Verhagen ported Regina Rexx on AROS and,as far as i know, is trying to iron some of the incompatibilities when is not busy with the ABI v1.
This article purposedly omits some projects that are present in AROS but lack advanced functionalities, like SDLBasic, that in its actual AROS incarnation has basic drawing tools but no sprites, for example.
It was my intention with this article to attempt in provide an overview of what Rapid Development Tools under AROS are actually available and how powerful they are; those tools that can allow some less advanced user to build basic applications and utilities in order to utilize AROS as base for their own projects. The situation is indeeed improved in the latest years despite i think there is still a good amount of stuff to be done.
Feel free to comment with correction, updates, additions to this article incase i omitted something or made mistakes.