CHICKEN Coding JAM 2021 - Results
This document attempts to summarize the events at the last CHICKEN Coding jam. Quite a few people attended and I think one can say it was a very interesting and motivating weekend.
Thank you to all who participated! We had a number of talks and presentations and were able to assess the results of the 2021 State of CHICKEN survey which turned out to be quite informative and enlightning.
The results of the survey can be found here: State of the CHICKEN survey 2021. Mario Goulart presented the results on Friday in a video session (unfortunately this part has not been recorded).
Vasilij "wasamasa" Schneidermann gave an interesting talk on his Duckyscript toolchain, plucky. Think twice before you plug in that USB stick you found the other day!
The videos to that talk are here: here Talk (mkv), Demo (mkv)
On Saturday, Mario held another presentation about the CHICKEN testing infrastructure and software, which has grown over the years into a rather extensive and feature-rich system that regularly tests the core CHICKEN compiler and tools and all officially available extension libraries. A recorded video session can be found here: Talk (webm)
Next, Luke K gave two short but packed presentations. The first was about MUMPS, the historical programming language, and in particular its highly efficient, and persistent database, which provides a very simple model to store arbitrary data in a (usually) hierarchical database. Video link: Talk (webm)
The second talk was about stateless programming using delimited continuations - fascinating stuff, even if somewhat mind-bending. Check out the talk here: Talk (webm)
Matt Welland presented "Megatest" and its associated tools, used for doing large scale testing in an industrial setting. He covered challenges encountered, mistakes made, lessons learned and ended with a few thoughts on what might help us from the Chicken side. Video: Talk (webm)
The final presentation was given by utz and explained and demonstrated the "bintracker" chiptune editor used to create music on emulated vintage hardware, complete with GUI and a bridge to the MAME emulator. Video: Talk (mp4)
During the evaluation of the survey results a number of things came up that we want to address to answer some of the requests and complaints that were made from the users that participated:
- To make it more obvious how and where to report bugs and issue requests, we added a wiki page: /support that hopefully explains this in sufficient detail.
- It was pointed out that the documentation pages for eggs have no links to their respective code , which may be helpful to study the code or report improvements. We are in the process of fixing this by adding links to the repositories that host each egg's code.
- The current FAQ section of the manual is vastly outdated and needs to be overhauled.
- There is a general need of better documentation in the form of more tutorials + how-tos. The reference parts are usable, but there are some specific subjects that are in need of material that is of a more introductary and practically minded nature, specifically:
- Using virtualenv-like tools, including cenv (https://github.com/ursetto/cenv)
- Installation from sources
- Installation of eggs into alternative directives and using custom repository paths
- Cross-compilation (perhaps update manual section)
- The existing tutorials + how-tos needs to be cleaned up
- How to submit a new egg
- Combine with FAQ, at least add links
- Crosslinks between related things in the documentation
- How to "pin" extension library versions
- Prepare a new CHICKEN core release soon (5.3.0).
- Currently documentation and infrastructure for CHICKEN 4 and 5 are kept in parallel, but this is both confusing to users and needs additional resources. The decision was made to scale down CHICKEN 4 support infrastructure to a working but minimal level and clean up the presentation of CHICKEN 4 content in the wiki.
- A new I/O and thread-scheduler design, described in this document by felix would provide an opportunity to clean up the current scheduler and I/O subsystem and open up opportunities for better performance and more robustness, but represents a massic implementation effort. A first user-level proof of concept implementation is planned to allow an evaluation of the suitability and effort that would be needed to implement this in the core system.
- Matt Welland suggested allowing support for building custom statically linked versions of "csi", containing a number of user-defined extensions. This is a rather interesting option for tool deployment and could be combined by turning "csi" into a library module.
- Someone pointed out interesting research into S-expression Diffs (see, for example https://fosdem.org/2021/schedule/event/sexpressiondiff/, this would be a rather interesting area for investigating semantic tools and other uses. In a video session on Sunday the desirability of an LSP protocol implementation was discussed.
- We hope to add more examples in the documentation.
- A multidimensional hierarchical database using the model described by Luke in his presentation would be highly useful as an extension to CHICKEN, an open source implementation by Kevin O'Kane (available here) was pointed out, and we will investigate whether a binding to the database is feasible.
- There currently is an ongoing effort to refactor the C-generation code of the CHICKEN compiler by felix, Mario kindly offered to set up another salmonella job for the branch using tcc as C compiler, which seems to have some problems with the new backend (as pointed out by Kooda).
- The idea of setting up a proper continuous integration system based on salmonella is currently haunting Mario and this also will be investigated.
As a final note, I would like to express that the weekend was great fun and, I think, very successful in figuring out in what general direction we should take CHICKEN development.
We plan to have shorter but more frequents event of this sort in the future, stay tuned!