1. Re: Porting Euphoria to other platforms
- Posted by David Cuny <dcuny at DSS.CA.GOV> Apr 02, 1998
- 916 views
[Robert asked about ideas on Euphoria's future] I have a feeling that anything other than WinTel is just not going to be = cost effective for RDS. Releasing the code seems problematic, as well - = where's the incentive to pay RDS money if a superior port becomes = available? Besides, just because you'vre released something to the = public domain doesn't mean that people are going to pounce on it. You've = got to do a lot of preaching and firing people up first - that's the = tough part. I'd want to maintain as much control over Euphoria as I could - keeping = all the code in-house. Or at least the sequence engine. Given the tools = available, anyone can write an interpreter. It's the sequence engine = that makes Euphoria *really* special. You might consider making the = sequence engine "clean", and releasing everything *but* that - and = making the binary available to people who are interested in makling the = port. That way, you retain control over the most valuable part of the = code, and give porters some percent of the profits from their port. Mike's suggestion of a free "clean" (but unoptimized) version with = little more than stdio is also interesting. I can imagine someone = linking it to something like the Allegro game toolkit. Vrooom! But = again, I'd be very hesitant about giving away the code. I think that cross-platform support is an important part of the package. I also think it would have been nice to have it built into Euphoria, = rather than having to code it from scratch. It's good experience, and = the resulting code is nice and small - no bloatware - but shouldn't we = really be spending our time writing programs? Why not follow these directions: 1. Rip out the DOS specific stuff from Euphoria, and make the code = portable, or at least compilable with the GCC. Remove the optimizations; = rewrite the bytecodes; remove most of the functions; whatever it takes = to make Euphoria to a minimal (but portable) program. It may be easier = to just make the sequence code portable, and write a clean version of = Euphoria from scratch with LEX and YACC. Heck, for the purposes of this = example, you don't need very much functionality at all. 2. Grab a cross-platform tool. Try out wxWindows, which is free, has = been used a lot, has lots of documentation, and has been ported to = Win32, X Windows and the Mac. The discussion group is current, and = archived, so there's a free knowlege base available. As a bonus, there = is *current* work on a 2.0 version for all three platforms, so you know = it's got a future (the 2.0 release is available now, and is much = leaner). 3. Include the GUI calls as native Euphoria calls. Don't put in the = whole wxWindows toolkit - just enough to put up a "Hello, World" window. = Steal the source from wxPython - it's an interpreted language that uses = wxWindows to dynamically build windows. No point in reinventing the = wheel. 4. When wxEuphoria is able to pop up a "Hello, World" window in Win32, = find some fanatical Mac and X Windows programmers to help you with the = port to those platforms. Or download GCC and Linux, and do it yourself, = although that means learning Linux, installing it, etc. etc. etc... = Hopefully, there's a lot of hints in the wxWindows documentation on how = cope with cross-platform bugs, since lots of people have done something = similar before. And you can always post to any questions to the = discussion group. 5. Once it's running on all three platforms, ask yourself these = important questions: A . Can I get excited enough about this product to finish it? B. Can I market this? C. Can I get it to market in a short amount of time? Hopefully, the answer all of those is *yes*, and you've convinced = yourself that, with this set of tools, it *is* possible to do this. Even if you don't get the cross-platform stuff working, it would be = *very* nice to have GUI support native in Euphoria. That would mean we = could stop working on the Win32 libraries and concentrate on other = stuff.Just my two cents. -- David Cuny