- By: Ken Gracey Published: 31 July, 2014 0 comments
A bit of background is helpful to understand the importance of Steve Denson’s contribution to the Propeller user community.
Parallax supports the Propeller with two high-level languages: Spin and C, and assembly language may be mixed with both of them. Spin is the Propeller’s native language and resides in ROM. Spin is used alongside assembly language in almost all of the Propeller’s commercial products. Until now, the primary tool for programming in Spin has been the Propeller Tool, Parallax’s Windows-only closed source program. It’s been closed because our text editor used a licensed Delphi component that we couldn’t release into the wild, not because we didn’t want to share our source code. Most of the Spin and assembly language examples are distributed with the Propeller Tool or the Propeller Object Exchange.
The Propeller C compiler was introduced several years later, primarily for educational purposes. C programming is done in Simple IDE, an open source tool for Mac, Windows and LInux. The C examples are found on Learn.parallax.com and are distributed with Simple IDE. The attention towards C has been very productive for educational customers, and raised interest among Spin programmers to have similar tool support.
Recently, the very popular Open Propeller Project #3: PropellerIDE emerged from a key community member Steve Denson (“jazzed” on the forums). This new tool will complete the Propeller’s tool chain, offering an open source solution for Mac, Windows and Linux. With the massive escape from Windows towards better alternatives you can imagine the importance of this tool to our community and Parallax. I couldn’t imagine doing a Spin demonstration on a Windows machine, so I’m particularly pleased with this project.
I asked Steve some questions about the open source PropellerIDE.
Who are the participants in the project?
The developer participants were me, Roy Eltham (OpenSpin Compiler and Spin syntax background highlighting), Dennis Gately (some zip coding, search/replace bar, block indent enhancements, on-going Apple packaging suggestions, and valuable feature testing/bug sleuthing), some previous development work done by David Betz was also used in one of the loader packages we have tested. There were many testers, but they were more like "test the waters" testers. Finally, there was encouraging participation from JonnyMac to just do it.
What inspired you to create the open source PropellerIDE?
I was inspired to make the PropellerIDE because I wanted to see a product that could be useful to Linux, Mac, and Windows users alike with the same interface across platforms. I wanted to stick closer to some of the concepts that Spin programmers wanted that are found in the Parallax Propeller Tool, such as "what you see is what you build." This is in contrast to the project-oriented SimpleIDE tool and most other IDEs commonly found in C programming environments where people need to generally have more tool competence.
I also thought that PropellerIDE could eventually lead to removing Spin programming tasks from SimpleIDE; that is, SimpleIDE would no longer generate complete Spin programs for downloading as a basic feature [at the moment SimpleIDE supports Spin programming, but in an incomplete fashion]. SimpleIDE may still use Spin files to supplement C programs with support for PASM, and with incorporating the Spinwrap tool (written by David Betz) where improvements in code density, and usage can easily be found. People expect too much of SimpleIDE which was initially conceived as a C programming tool, but then succumbed to feature creep.
Another inspiration was the product roadmap you discussed at the last Parallax Expo.
What are the general similarities or differences with the Propeller Tool from Parallax?
One feature that I added to PropellerIDE and probably the most powerful besides the compiler is not found in PropellerTool: the side-panel source browser list. All useful development tools have a source browser. The PropellerIDE side-panel source browser list shows all functions available in program source. Spin programs are usually small and self-contained, and a source browser list can be quickly parsed. The feature replaces the file-browser in the PropellerTool; some may ask why that doesn't exist in PropellerIDE ... well, I've had too much trouble with that feature where missing USB storage caused another program to crash, and I just didn't have the time to fool with that possibility. So, I figured the source browser list was a fair trade ... besides, the operating systems do a fine job of listing files for us ;-).
How open is the tool chain? And under what license(s)?
This is the question that always bothers me the most.
The PropellerIDE is built on the Qt platform. Some Qt library example code that I've leveraged is BSD licensed (and the license is copied where it needs to be). Qt libraries can be used according to LGPL with some Qt dictated exceptions for dynamic linking (.so or .dll, etc...). The full Qt license statements are found on the Qt web site.
Read this: http://qt.digia.com/product/licensing/ Qt will license static libraries under a commercial agreement so that the package size can be reduced and the number of Linux dependencies can be minimized (saving much developer grief ;-) )
I should contact Qt about licensing just to make sure we are following their requirements. I will rely on Parallax to help me sort this out, so that the full open source licenses are properly applied and used. After all, they’re a California Corporation and I’m an individual.
Where are we headed with the evolution of this tool in terms of features?
I expect it should be easier to grow new features in PropellerIDE because it's basic requirements are not onerous and constantly evolving. Having to add superfluous features gets in the way of the big breakthrough strides that can make a huge difference.
I'm thinking of things like a feature that would allow users to drag-n-drop object icons into a window and graphically connect some pins for rapid development (we have talked about this several times before) instead of trying to wade through the thousands of OBEX files, most of which are of dubious value.
People I've met complain that Propeller chips don't have dedicated SPI hardware, or UARTS, or some other devices. What they don't see is a matrix that says xyzchip has 10 ADCs and feature 123 and so on. Propeller doesn't have that matrix mainly because it isn't necessary.
No one has had time to show why or what the full advantages of multi-core are (I.E. all those other little chips require timer ISRs to manage all those little devices ... and then when you run out of time because there is only one MCU core, then you're up the creek headed for a waterfall).
Of course if you exhaust Propeller resources, then you either wait for Chip to finish P2, or you move on to an architecture that has more code memory or full on ADCs or 1.2MIPS per cycle instructions, or built-in USB, or ... the list goes on.
What we need is an application that shows infinite possibilities of the Propeller chip(s) and enables rapid development with a point and click (instead of things being bogged down about why there is a "+" button instead of a terminal icon for opening the serial terminal interface window? ... If someone wants a terminal icon, they are welcome to offer changes - isn't that the point of open source?).
There are so many opportunities with the Propeller chip. It is a huge landscape of possibility - you don't have to be constrained by two or three timers for interrupt services and concerns of CPU hogging. When Microsoft asked "Where do you want to go today?" years ago, the open-endedness of the question bought the curious and brought to everyone what the Internet Explorer (of the Netscape) really meant at the time at least.
Propeller doesn't offer the fastest solutions, the biggest solutions, or the cheapest solutions. If offers easy and practically infinite solutions 8 cores at a time. No other $8 chip on earth can do that, but for some reason the great benefits are over-looked.
Is anybody on board for handling the Linux/Mac distributions?
Distributions? No, it's just me so far. Dennis Gately has been a big help figuring out some Apple stuff. I haven't really had any help with open source PropellerIDE in months, but I've also been too busy to ask for it. I’m hoping to get some users on board to handle the Linux and Mac packages.
Parallax will be assisting Steve with necessary support to continue the forward evolution of PropellerIDE. We will have our legal staff review the licensing to make sure we’re in complete compliance with their requirements, and see that Steve has proper support internally to continue to improve the new PropellerIDE.