Dec. 19th, 2019

Projects

Dec. 19th, 2019 03:35 pm
Since it's the end of the year and a good time for New Year's resolutions and planning new projects, thought I'd go over some ideas I'm working on. If anyone would like to get involved in any of these, feel free to contact me ( http://www.distasis.com/connect.htm ). If you're working on similar projects and need help or want to collaborate or just want to brainstorm ideas, let me know.

I've been wanting to put together a set of highly portable utilities on the style of GNU's core utilities, busybox and sbase. I've shared some of my ideas on it here:
http://www.distasis.com/cpp/lmbld.htm#lmbldsysbase
Most basic utility programs already available are designed for specific systems like POSIX or BSD. My goal is to come up with something more portable that can be used on a wide variety of systems such as DOS, Windows, Linux, BSD, AIX, Android, etc. If the system has a decent C compiler, I want to be able to port these utilities to it. I'd like to take these utilities along with some other programs and create a Windows native alternative to msys. I would also like to use these utilities with a SDL based terminal emulator and be able to run them on Android, similar to how projects like Termux work.

Once I have a basic set of utilities working, I hope to put together a collection of useful Open Source command line utilities written in C. These will include communications (including curl and putty), music (programs to work with ABC notation), graphics programs (graphicmagick, netpbm), writing tools (sdcv, hunspell, diffh) and any other interesting command line programs I find useful. Theoretically, they could be distributed on Windows or Android or be part of a minimal Linux system. I'm currently investigating all three alternatives.

Once I have a good collection of command line tools, I want to put together a similar collection for highly portable GUI programs. I'd like to put together entertaining educational programs, hobby related programs and some general desktop programs. SDL based programs port to a wide variety of platforms including Android. PDCurses offers a SDL backend, so any useful programs that will work with PDCurses could be added to the collection. If there still aren't enough programs to cover basic tasks, was considering FLTK based programs and possibly some GTK programs using the ncurses port.

I've been working on my own GUI library in C as time allows. It uses SDL and/or OpenGL as a backend. Am also thinking of adding other backends to it, possibly Allegro. Programs written with it should port fairly easily to a wide variety of systems from DOS to Windows to Linux to Android. I'm looking into porting a subset of pdcurses and X Windows functions so that simple programs that use those APIs could be ported to use this GUI instead and will be portable to any environment the GUI library supports. I've also been doing some work on adding functionality to PicoGL. That would make it easier to port some OpenGL based desktop applications to various operating systems. If the operating system doesn't have native OpenGL support, PicoGL could be used to provide the missing functionality.

I have several libraries I've created to make porting programs easier. One is the lmpath library. It provides a set of functions to look up locations of common directories such as home, tmp, etc. This is especially useful on systems such as Windows or Android where paths may not necessarily follow FHS rules. It makes creation of portable apps easier. It can be used on systems that don't offer chroot in order to provide some similar functionality. The library can find locations of needed files based on environment variables or a path relative to the location of the executable. The Termux project has made several modifications to common Open Source programs to fix path locations. I've done some similar work on libraries and applications I use, but I use functions from the lmpath library instead. Once a program or library uses the lmpath library, any path changes can be made to the lmpath library and the program or library does not need to be modified. I also have a basic thread library. It supports C11 threads and there's a library built with it that supports a lot of the POSIX thread functionality. It makes use of semaphores and benaphores as basic building blocks for functionality, so it should be able to port to environments like BEOS. I'm also investigating adding support for emulating threads using setjmp and longjmp. I've run across some interesting examples of libraries that do that. I've only tested the library on Windows so far. I've used it to replace pthreads-win32 and winpthreads in all my Windows projects. The long term goal is to provide C11 thread support and basic POSIX thread support that is portable to a wide variety of operating systems.

I have a copy of the Schoolforge Open Source programs database. A good portion of the entries were originally created by me. I'm investigating putting portions of the information together as a PDF that can be distributed to Open Source enthusiasts or to people wanting to know more about what Open Source programs are available out there. I'm also looking into ways to keep some of the information up-to-date more easily. I've started adding documentation programs to my LM BLD system ( http://www.distasis.com/cpp/lmbld.htm ). The scripts could be used to generate PDF or EPUB formatted descriptions of Open Source programs and libraries on one's machine that use the build system. There's also a tool to check if later versions of a program or library are available. Would be interested in discussing techniques to help automate cataloging Open Source applications if anyone's working on similar projects.

I'd love to find a small Open Source operating system project (Linux or another Libre OS system) that needs volunteers to build programs from source. Would be fun to port some of my favorite programs to it. I've tried being a package maintainer for one of the smaller Linux distributions. I did not enjoy the experience. If I get involved with another group at this point, I'd like to use my own package building and management tools or just port some applications that may not currently work on an operating system and have someone else do the maintenance once the applications are working. If anyone knows of a small project that might need help in these types of area, please send me some information about it. Thanks.

I'm always looking for new, useful Open Source C/C++ programs to add to my list of favorite applications. Suggestions welcome. I'm looking into techniques to distribute programs built from source to various systems (Windows, AIX, Linux, etc.). Some possible ideas include creating an image that can be run from a virtual machine, creating a minimal Linux from Scratch or a Reactos distribution and including the programs, creating a zip file with all the relevant programs for systems like Windows, using a technique similar to the homebrew project, etc. If you're interested in discussing techniques for distributing Open Source applications, I'd enjoy hearing from you.

July 2025

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

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 15th, 2025 11:09 pm
Powered by Dreamwidth Studios