There are some great Open Source applications out there for desktops and laptop machines, but it's much harder to find Open Source for mobile devices. Most mobile devices require their users to go through a proprietary app store just to get software onto their devices. This is a setup back for the Open Source movement since more and more people are turning to mobile devices as their primary computing source.

If you have suggestions and/or recommendations for FLOSS alternatives in the mobile space, please share them with me and other Free, Libre and Open Source advocates on the Schoolforge mailing list ( https://schoolforge.net/ ).


I'll share some Open Source options I've found to date for developing mobile and cloud based applications.


Cross-platform Mobile App Development

Here are a couple of very interesting projects that let developers create cross-platform mobile applications:

https://github.com/MoSync
Developers can use C/C++ which can be compiled to run natively on certain platforms or converted to Java bytecode output that can run on phones that only support Java applications. One can also develop HTML/CSS/JavaScript applications for phones that support those formats (similar to Cordova).

https://cordova.apache.org/
This project supports HTML/CSS/JavaScript development of applications that will work on a wide variety of mobile platforms.


C/C++ Mobile Development

If you want to port your own C/C++ programs or interesting Open Source C/C++ applications to mobile devices such as Android, these projects may be useful.

https://wiki.libsdl.org/Android
Information on using libSDL 2.x with Android.

https://github.com/georgp24/microwindows-android-bin
Port of Nano-X/MicroWindows to Android. Nano-X/MicroWindows supports a subset of simple X11 and Windows applications. Many FLTK applications port easily when run with Nano-X.

https://wiki.allegro.cc/index.php?title=Running_Allegro_applications_on_Android
Article on building and running Allegro based applications on Android.


C/C++ CGI Development

As a C/C++ programmer, I was surprised by how few CGI applications were built with these languages. Originally, I read that the reasoning behind this was that one would have to spawn a new process every time one wanted to run a C/C++ CGI program. Interpreted languages could be built into the web server and avoid spawning new processes. However, with the introduction of libraries such as FastCGI, the inefficiencies of running compiled programs as CGI applications is no longer an issue. From everything I've read, C/C++ CGI programs are much faster than other CGI programs if they avoid the process spawning issue. If you want a highly efficient CGI program, it's a good time to revisit using C/C++ with the proper libraries.

Here's some more information on FastCGI.
https://en.wikipedia.org/wiki/FastCGI

If anyone's interested, I have builds of FastCGI and Apache with fcgid support for Windows/MinGW (including patches to get them working on later versions of Windows).

https://github.com/kristapsdz/kcgi
This looks like an alternative to FastCGI.

https://github.com/emweb/wt
Wt is one of the few projects I've seen that tries to provide useful CGI functionality and routines for C/C++ programmers.

https://github.com/boutell/cgic
cgic is an ANSI C library for CGI programming.

https://sourceforge.net/projects/cgi-c/
Memory and speed optimized CGI library written in ANSI C. It does all the normal CGI functions, can be used with FastCGI and can receive file uploads.

https://github.com/codazoda/cgi-lib/
ANSI C library for CGI programming.

http://www.newbreedsoftware.com/cgi-util/
cgi-util is a library for creating CGI programs.

https://www.gnu.org/software/cgicc/doc/index.html
cgicc is a GNU C++ class library for writing CGI applications.

https://eekim.com/software/cgihtml/index.html
CGI and HTML routines written for C.

http://cgilib.sourceforge.net/
cgilib is a C++ LGPL library for developing CGI programs and generating XHTML 1.0.

https://sourceforge.net/projects/cawfeecgi/
Cawfee is a C++ CGI library.

http://www.asksasha.com/download.html
C++ macro preprocessor for development of CGI programs.

http://ocicpplib.sourceforge.net/cgi_utils.shtml
CGI utilities library for OCI C++ (Oracle interface) library.

https://kristaps.bsd.lv/kcgi/
kcgi is an open source CGI and FastCGI library for C/C++ web applications.

https://www.infodrom.org/projects/cgilib/
Lightweight CGI Library provides an easy to use interface to CGI for fast CGI programs written in C or C++.

http://wolkykim.github.io/qdecoder/
qDecoder is a simple and powerful CGI library.

https://sourceforge.net/projects/libscgi/
scgi library in C.

https://github.com/jhyle/sepia
SCGI REST lib in C.

http://www.rlgsc.com/openvms-bootcamp/2011/web-server-scripting-in-c.html
Talk on Web Server Scripting in "C".


C/C++ on the Web

http://kripken.github.io/emscripten-site/
One can also use projects like emscripten to compile C/C++ code into JavaScript that will run on the web. It's an easy way to port your own C/C++ applications or run popular Open Source applications to the web.

https://webassembly.org/
Emscripten is being replaced by a newer standard called webassembly. The musl C runtime library has been ported to work with webassembly. The project is called WASI. So, many SDL based applications become easy to port to the web.

Some C/C++ examples using emscripten and/or webassembly are:
https://github.com/humu2009/tinygl.js?files=1
Tinygl.js which gives an OpenGL subset
https://medium.com/@robaboukhalil/porting-games-to-the-web-with-webassembly-70d598e1a3ec
Porting an SDL based asteroids game to web assembly
https://00f.net/2019/04/07/compiling-to-webassembly-with-llvm-and-clang/
Compiling C to WebAssembly using clang/LLVM and WASI

JavaScript

Another area of web development that surprises me is when I see so many language alternatives to JavaScript. JavaScript is supported (in some fashion) by most browsers. However, other programming languages are not. In order to get other languages to work in a browser, they typically need to be converted back to JavaScript. In a case like emscripten, it can be useful to convert C/C++ to JavaScript for porting purposes. However, many new web projects are choosing other languages besides JavaScript (because developers prefer the language) and then using tools to convert those languages back to JavaScript so they'll work via the Internet. Often the conversions introduce a lot of unnecessary code or provide slower implementations than the original. If I'm porting a project that's already written, it's great to be able to move it over with projects like emscripten. However, if I'm writing something new for the web that requires a programming language, I always use JavaScript. It's more efficient to write something specifically for that language than rely on generated code converted from another language.

It's also nice to be able to write CGI in JavaScript and share the same functions, objects and code between the client (browser) and the server. This is one of the major benefits provided by projects like CommonJS. The CommonJS site used to maintain a very nice list of server side JavaScript implementations. Unfortunately, the CommonJS project appears to no longer be active. It's been replaced by more implementation specific solutions like node.js.

There are alternatives for running server side JavaScript other than node.js if you don't want to be locked into a particular web server.

One option is TeaJS which uses FastCGI and works with a variety of web servers including Apache and Nginx.
https://github.com/ondras/TeaJS

Another option is jsc which is a JavaScript implementation that is a part of Webkit (one of the most commonly used browser libraries).

There are also some interesting TinyJS implementations and forks at various code archives such as github. You'll find more details under my Scripting Languages post ( http://lmemsm.dreamwidth.org/2239.html ).
Scripting Languages:

Lua - http://www.lua.org/
Used by SciTE programming editor and grafx2 graphics editor.
Sample SciTE lua scripts are available at http://lua-users.org/wiki/SciteScripts

th1 - https://www.fossil-scm.org/xfer/doc/trunk/www/th1.md
Test Harness 1 is a minimal reimplementation of TCL used for testing the FOSSIL software configuration management and version control system.

microperl - https://www.foo.be/docs/tpj/issues/vol5_3/tpj0503-0003.html
A way to build a minimal implementation of Perl using the Perl source code.

tinypy - http://www.tinypy.org/
A minimalist implementation of Python in 64K of code.

micropython - https://github.com/micropython/micropython
Python implementation for microcontrollers and constrained systems.

mruby - https://github.com/mruby/mruby
Lighweight implementation of Ruby.

TinyScheme - https://github.com/zpl-c/tinyscheme
TinyScheme is a lightweight Scheme interpreter that implements a large subset of R5RS.

minischeme - https://github.com/catseye/minischeme
Cat's Eye Technologies' fork of the original public-domain Mini-Scheme implementation, miniscm.

minilisp - https://github.com/rui314/minilisp
Readable lisp in less than 1000 lines of C.

tiny-lisp - https://github.com/matp/tiny-lisp
Tiny-lisp is a small implementation of LISP written in standard C11 and released under unlicense.

KML - https://github.com/kototama/kml
Pure C99 implementation of a minimal Lisp language.

My Basic - https://github.com/paladin-t/my_basic
Lightweight BASIC interpreter.

zBasic - https://github.com/zevv/zBasic
Minimal BASIC interpreter for embedded environments.

Jim interpreter - http://jim.tcl.tk/index.html/doc/www/www/index.html
Small footprint implementatin of TCL.

Partcl - https://github.com/zserge/partcl
Minimal TCL interpreter.

Tiny-JS - https://github.com/gfwilliams/tiny-js
JavaScript interpreter.

42tiny-JS - https://github.com/ardi69/42tiny-js
Fork on Tiny-JS with more functionality.

Quad-wheel - https://code.google.com/archive/p/quad-wheel/
Small but full ECMA-262 supported javascript engine, written in ANSI C.

MuPDF JavaScript - https://mujs.com/
Some versions of MuPDF PDF viewer include a small JavaScript interpreter. I've read that this is slower than some other popular JavaScript interpreter alternatives.

Duktape - https://duktape.org/
Popular embedded JavaScript engine.

JerryScript - https://github.com/jerryscript-project/jerryscript
JavaScript engine.

V7 - https://github.com/cesanta/v7
Embedded JavaScript engine.

Dojs - https://github.com/SuperIlu/DOjS
JavaScript environment for DOS using MuJS and Allegro.

mJS - https://github.com/cesanta/mjs
JavaScript engine for microcontrollers.

QuickJS - https://bellard.org/quickjs/
Small and embeddable JavaScript engine. Supports ECMAScript 2020 specification.

Quasar M4 - http://haddonthethird.net/m4/
Quasar M4 is an attempt to provide a drop-in replacement for the GNU implementation of the M4 macro language.

libmawk - http://repo.hu/projects/libmawk/
Library to embed awk scripting language in C and other programs.

Squirrel programming language - http://squirrel-lang.org/
Scripting language with syntax similar to C/C++/Java and a dynamic nature like Python/Lua.

Squirrel modules - https://github.com/pfalcon/squirrel-modules
Module import system for Squirrel.

AndroWish - http://www.androwish.org/index.html/home
TCL/TK port for Android using SDL and AGG (Anti-Grain Geometry)

July 2025

S M T W T F S
  12345
67891011 12
13141516171819
20212223242526
2728293031  

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 4th, 2025 04:30 pm
Powered by Dreamwidth Studios