Euphoria Ticket #364: Discuss and Update WikiPedia article on Euphoria

I updated the release information but quite a bit of text needs updated.


Type: Task Severity: Textual Category: Documentation
Assigned To: jeremy Status: Accepted Reported Release: 4.0
Fixed in SVN #: View VCS: none Milestone: 4.0.2

1. Comment by jeremy Dec 08, 2010

Updated WikiPedia for today's release of 4.0.0.RC2, also added NetBSD and OpenBSD to the list of platforms.

2. Comment by DerekParnell Dec 22, 2010

I'll start work on updating the wikipedia entry.

3. Comment by smudger Jan 01, 2011

The introduction and history sections and infobox have been updated, expanded and citations have been added. The logo will be added when licensing is sorted.

4. Comment by jeremy Jan 01, 2011

The article states:

OpenEuphoria is currently available for Microsoft Windows, FreeBSD, Linux and Mac OS X.

This is not complete. It is also available for and tested on OpenBSD and NetBSD.

5. Comment by smudger Jan 01, 2011

Yes, it says that it is available for FreeBSD, OpenBSD and NetBSD in the info box and just FreeBSD in the introductory text.

If you go to it seems that you can download a binary for FreeBSD, but you have to build for OpenBSD and NetBSD yourself. Which, when I was writing the intro and trying to keep the word count down I thought was a good excuse not to include OpenBSD and FreeBSD at that point in the main text. It seemed likely that anyone who wants OpenBSD or NetBsd (and is prepared to build it themselves) would find it anyway by following the FreeBSD link.

6. Comment by jeremy Jan 01, 2011

It also states wrappers for SQLite and ODBC. Why list those two only or any specifically? Wrappers exist for MySQL, PostgresSQL, ODBC, Sqlite2 and Sqlite3. Access to DBF is also available. If one wants to mention database access I would say something generic such as various database servers and formats (SQLite, DBF, EDS) or something like that?

This sentence:

The front-end, open source, is now written in Euphoria instead of C. The front-end is also used with the Euphoria-to-C translator and the Binder.

Makes one wonder if the back end is open source or not. I know this is speaking historically from surrounding paragraphs but just casually reading through it seems to be easily missed.

Listed as a design goal:

Windows API support

Was that a design goal? If so it has failed, we only wrap msgbox. I wonder if it should state easily wrapping C libraries or soemthing to that effect instead? That is a powerful feature of Euphoria.

Also listed was CGI programming. That goal also was not met until 4.0 at least, the error/warning system in previous versions made CGI handling awkward and no real support (even today) is shipped with Euphoria for CGI programming. Thus this is another listed design goal that either was not met or was not really a design goal.


Other than that, the article is shaping up quite nicely and it's easy to see a lot of work went into it!

7. Comment by jeremy Jan 01, 2011

smudger, I don't really agree with either 1 listing partial or 2 not listing OpenBSDs and NetBSDs. Many systems have no binary distribution on *nix based systems at all. I would probably write that it is available on Windows, OS/X and various *nix systems if you do not want to list all the platforms it is available on. Because there is no binary download does not mean that it is not supported or available. The source downloads are just like any other source download on the *nix systems, configure   make   make install.

8. Comment by smudger Jan 01, 2011

Here: it suggests that OBDC is the route to interface with Access, Filemaker Pro, MySQL, PostgreSQL, Oracle, etc.

If you google e,.g. for "euphoria wxwidgets" or "euphoria iup" you quickly find the relevant projects. Not so for mysql, postgresql, etc.

Please provide links to info about the missing database wrappers and I'll put them on Wikipedia. They need to be on also.

Your comment about the c vs Euphoria being open source is a fudge on my part - well spotted. I didn't know the answer myself and was too proud to ask. Please provide definitive text and I will fix Wikipedia.

The design goal/feature list were separate lists amalgamated by yours truly into one list. If there are any inaccuracies/anomalies, please enumerate them and I'll fix them.

9. Comment by smudger Jan 01, 2011

Re: *Nix. I'll be vague in the intro and people can refer to the info box for the full list! Do 32-bit and 64-bit versions count as separate?

10. Comment by smudger Jan 01, 2011

Can we say "Euphoria is available on Microsoft Windows, Mac OS X and various Posix platforms"? Or is the use of Posix as a general catch-all deprecated?

11. Comment by jeremy Jan 01, 2011

I'm afraid many will not directly link Posix to Linux, FreeBSD, OpenBSD, NetBSD and whatever else we may support in the future. Maybe it could be said all (or most?) popular platforms?

The Archive has links for many database wrappers. EDBI also wraps MySQL, PostgreSQL, EDS and Sqlite3. EDBI provides a single interface.

12. Comment by smudger Jan 01, 2011

You say that EDBI wraps MySQL, PostgreSQL, EDS and Sqlite3, but if you go to your webiste for EDBI, it doesn't mention EDS at all and only mentions MySQL as a related link.

Neither does your website mention Sqlite2 or DBF which you allude to in comment #6.

I would like to mention all these things in the Wikipedia article, but I need proper citations to verifiable sources. These projects (the GUI wrappers and the Database wrappers and any other important projects) need to be on the openEuphoria site in an easy to find place as well.

13. Comment by jeremy Jan 01, 2011

Windows drivers are not needed for most, so they are not provided. They are pure Euphoria code. For *nix systems, one compiles the driver.

For SQLite2, EDBI does not support it, but it can be found in the archives as well as DBF. A lot of projects don't have "official" websites. Again, instead of getting specific, I'd make mention that interfaces to many popular database libraries. As time goes on many more database drivers will become available I am sure. I think listing each individual product that Euphoria supports on the wikipedia article is just going to be too difficult and create something that always lags behind.

14. Comment by DerekParnell Jan 01, 2011

When doing these updates, it would be wise to remember that there is a distinction between "Euphoria" the language and 'OpenEuphoria' the implementation.

The OpenEuphoria Group develops both but it it theoretically possible for some other group to come up with another implementation of the Euphoria language. So talking about what platforms, databases, etc ... are supported by Euphoria gets a bit murky. The language is platform agnostic, but the implementation is not.

I feel that the Wikipedia article should be focusing on the language and not the implementation.

15. Comment by smudger Jan 02, 2011

I think this is a red herring. No other group _is_ developing an alternative implementation and (for example) the manual for Euphoria 4.0 consistently refers to "The Euphoria programming language" not "The openEuphoria implementation". The logical extension of your argument is that we already have two flavours of Euphoria, viz RapidEuphoria which supports the DOS platform and openEuphoria which doesn't. Is this the way you want to go? Because the next step would be to edit the Euphoria article on Wikipedia to say as much, abandon it, and create a new openEuphoria article with up-to-date, language-specific and useful info.

16. Comment by jimcbrown Jan 02, 2011

I don't think that this makes sense (yet), because we lack a spec for the language itself. We have one implementation of 4.0.0 and no formal language specification for it.

I think it makes sense for the article to discuss both the language spec (if we had one) as well as all known implementations. As of right now, however, we only have one implementation - the OpenEuphoria one (which is a successor to the previous implementations done by RDS which really should be considered as previous versions of the same implementation).

One could argue for the Cuny-Gale eu.ex, David Cuny's Gnuphoria and Eu2Java, Pete E-menno peu, and Pete L's Parrot-VM implementation (I think it was named Phluck or Pheather) being alternative implementations, but we still lack a formal spec for all of them. menno may still be maintaining peu, but the rest have been abandoned, and all are out of date (being modeled against older versions of RDS's Euphoria). They might still be of historical interest, of course.

(Also, I'm pretty sure that only eu.ex and peu were complete. The rest were either unfinished, or (Eu2Java) were proof of concept toy implementations.)

And there's Phix and Bachs and ooeu which are derived from implementations of the Euphoria language but also are new languages in their own right. Of these, only Phix is still maintained. Quite a few of these (such as Bachs) are not open source and likely never will be. Does it make sense for the Euphoria article to talk about languaged derived from Euphoria that later branched off? They might also be of historical interest.

17. Comment by smudger Jan 02, 2011

Jeremy (or someone), for the record, can you please definitively answer the following (apropos of comment #6) for the purpose of updating the Wikipedia article.

1. Is the front-end written in openEuphoria? If not, what? 2. Is the back-end written in openEuphoria? If not, what? 3. Is the whole of the language implementation open-source? If not, what? 4. What language is the Euphoria-to-C package written in? 5. What language is the binder written in? 6. Is/was Windows API a design goal? 7. Has a Windows API been realised as a design goal? 8. Should the question of a Windows API be dropped from Wikipedia? 9. Should "Straightforward wrapping of C libraries" be substituted for ref. to Windows API? 10. Should the ref to CGI programming be taken out?

18. Comment by jimcbrown Jan 02, 2011

smudger said...

1. Is the front-end written in openEuphoria? If not, what?

Yes, it is. In fact, the 4.0 front end will only translate or run (interpreted) with a 4.0 binary.

smudger said...

2. Is the back-end written in openEuphoria? If not, what?

The main backend is the one written in C code. This handles interpreting (and it is also used by the backend stub that runs shrouded programs - this backend stub is then combined with the shrouded program to form a bound program).

The translator backend is written in Euphoria, although it writes out a lot of hardcoded C statements and itself depends on the Euphoria runtime library (which is derived from the C backend and thus 100% C code).

There is an interpreted backend written in openEuphoria, execute.e, run with eu.ex and repl.ex (new to 4.0.1) but it is used for little else beyond testing.

smudger said...

3. Is the whole of the language implementation open-source? If not, what?

Yes, all of the front end and all the backends and libraries and tools used, etc. are all open source. Everything is open source.

smudger said...

4. What language is the Euphoria-to-C package written in?

The translator itself (the code in compile.e and c_decl.e that does the conversion and writes out the translated C code) is written in Euphoria. The runtime library is written in C.

smudger said...

5. What language is the binder written in?

The binder has always been written in Euphoria.

Before 2.5, the binder may have worked in a vastly different manner, but the oldest versions of the binder were still written in Euphoria.

smudger said...

6. Is/was Windows API a design goal?

No, not really. There have been Windows API stuff included in Euphoria (msgbox.e's message_box() function and the instance() function) but by-and-large win32lib has had the role of wrapping the Windows API. win32lib is a separate project, not part of openEuphoria.

smudger said...

7. Has a Windows API been realised as a design goal?

Not applicable. But true in the sense that any part of the windows API can be wrapped using Euphoria (again, see win32lib).

Wrapping all of the Windows API is a big job, since the API itself is so huge.

In another sense, a lot of the Windows API is used directly (both by C code in the runtime library/backend and also in the Euphoria-coded standard library include files) to implement the functionality required by cross-platform functions and procedures on the Windows platform.

smudger said...

8. Should the question of a Windows API be dropped from Wikipedia?

I have no idea.

smudger said...

9. Should "Straightforward wrapping of C libraries" be substituted for ref. to Windows API?

That's fine with me.

smudger said...

10. Should the ref to CGI programming be taken out?

Even Euphoria 4.0 does not support CGI programming straightforwardly. webclay and euweb add this capability, but are separate from the language and its implementation(s).

That said, it might make sense to add some standard CGI libraries to the standard library of Euphoria.

In short, I'm not sure.

19. Comment by jeremy Jan 02, 2011

CGI is not a "killer" feature any more. Web Apps is. I would remove CGI as a design goal as it never was a design goal (or if it was, it horribly failed). You may make mention of WebClay for being able to produce web applications, but even that is debatable since web clay has no official site right now.

While the front-end is written in Euphoria and can only be translated with a 4.0 euphoria this does not mean that you can only compile Euphoria if you have Euphoria. One can take any OS that we support and compile Euphoria with only C tools. This is possible because we offer pre-translated sources, i.e. the C output of the Euphoria code in a nice package that you can simply do: configure   make   make install.

Windows API as a design goal should be dropped.

In many languages C libraries cannot be easily wrapped. I think this is a big seller of Euphoria. Sure other languages do it but many make it much more difficult than Euphoria. I wonder if "accessed" is a better word than "wrapped" though, not sure.

20. Comment by smudger Jan 02, 2011

OK, thanks guys. I have updated the Wikipedia article. I wanted to link the word ''shrouder'' to a Wikipedia definition, but there is no computing definition of shrouding in Wikipedia or Wiktionary. Is there a computing synonym for shrouding?

21. Comment by euphoric Jan 02, 2011

It's an extreme form of obfuscation?

22. Comment by jimcbrown Jan 02, 2011

Prior to 2.5, that would have defined shrouding perfectly.

shrouding turned all strings ("abc") into their equiv print sequences ({97, 98, 99})

It also renamed identifiers (really_long_but_descriptive_variable_name became A, good_method_name() became B(), and so on).

It replaced keywords with extended ASCII symbols.

Finally, late into shrouding had scrambling added, which encrypted the shrouded program (line by line) into a format that only the closed source RDS Euphoria understood.

In 3.0 and beyond, shrouding is just byte code compiling. It's more or less the same thing that Python does with its .pyc files.

23. Comment by smudger Jan 04, 2011

I have finished editing the Wikipedia article for now (apart from adding the logo) and I believe it is now factually accurate and on-message. I propose, therefore, that this ticket be closed or downgraded from major severity.

24. Comment by jimcbrown Jan 04, 2011

Downgrading Severity, and assigning to jeremy and 4.0.1 milestone to make sure it's not forgotten. (There is no real reason to do this, I only do it to make sure this is not forgotten.)

25. Comment by jeremy Jan 04, 2011

I think we can come up with some better examples, especially since the given ones use "global" which is highly frowned upon now that we have better visibility modifiers.


Quick Links

User menu

Not signed in.

Misc Menu