Concatenative language
Concatenative topics
Concatenative meta
Other languages
Meta
= Google Summer of Code 2023 ideas = Org Admin: [[Raghu Ranganathan]] It is recommended for any potential contributors to try contributing to the subproject vocabularies in any way they can (even a documentation addition), to get a feel for Factor and understand what they are getting into. [[https://docs.factorcode.org|Documentation Home]] == Finish porting Factor to arm64 == The Factor arm64 backend is incomplete, and this project intends to complete full support. *Prerequisites:* arm64 knowledge *Programming areas include:* Factor VM, Backend Interface *Expected outcomes:* Working arm64 backend for Factor *Estimated difficulty level:* Hard *Expected size of project (175 or 350 hours):* 350 *Potential mentors:* [[Doug Coleman]] == Add support for the Language Server Protocol (LSP) == Language Server Protocol is a popular method for adding high-level editor support and provide quality debugging tools for a language. This can be implemented from scratch or with the help of external LSP libraries. Please detail what you would like to implement in your language server, and what features in would be best suited for Factor. *Prerequisites:* Knowledge of JSON-RPC protocol, HTTP servers *Programming areas include:* editors vocabulary, editor plugins *Expected outcomes:* Basic Language Server Protocol Support (word completion, help on hover, etc.) *Estimated difficulty level:* Medium/Hard *Expected size of project (175 or 350 hours):* 175 or 350 (depends on progress) *Potential mentors:* [[Raghu Ranganathan]] == Add support for generating C FFI bindings using the existing libclang vocabulary == Currently, FFI bindings have to be added with the help of the %alien% vocabulary. The user has to manually specify all the functions they need to import. Instead, we can use libclang to generate the correct Factor code for a binding, or import them without needing to generate a vocabulary. *Prerequisites:* Understanding of libclang, Factor aliens vocabulary *Programming areas include:* FFI tools *Expected outcomes:* Completed generator vocabulary using libclang *Estimated difficulty level:* Medium *Expected size of project (175 or 350 hours):* 175 *Potential mentors:* [[Doug Coleman]] == Create a Modern stack-checker == Factor has gained many new features that the current stack checker does not handle very well. A full revamp that targets locals, fried quotations, macros, smart-combinators, etc is the goal here. *Prerequisites:* Understanding of stack effects and checking *Programming areas include:* Core stack checker *Expected outcomes:* New stack checker *Estimated difficulty level:* hard *Expected size of project (175 or 350 hours):* 350 *Potential mentors:* [[Doug Coleman]], [[John Benediktsson]] == Drag and drop support for the UI == Drag and Drop support is not available in the Factor UI framework, and like the rest of the UI framework, it requires a consistent API that works across all supported platforms. Planning will need to be done for platforms with no standardized interface, and hence the difficulty of this project is specific to the platforms it will support. *Prerequisites:* GUI knowledge *Programming areas include:* UI framework, listener and browser *Expected outcomes:* Drag and drop support in one or more platforms *Estimated difficulty level:* Hard *Expected size of project (175 or 350 hours):* 175/350 based on the contributor's goals *Potential mentors:* [[John Benediktsson]] == Compilation step for the new Factor parser == The new Factor parser is in a usable state, and adding the new parser into the implementation requires a compilation step. *Prerequisites:* Parser knowledge *Programming areas include:* compile steps, bootstrapping *Expected outcomes:* A new compilation step *Estimated difficulty level:* Hard *Expected size of project (175 or 350 hours):* 175 *Potential mentors:* [[Doug Coleman]] == Internationalization support == Factor does not support locales for its documentation yet. For this project, a new design for the organization of the Factor implementation will have to be made, and related help system changes will need to be done. *Prerequisites:* translation, locale knowledge (optional) *Programming areas include:* help system *Expected outcomes:* Options for changing language in the help system *Estimated difficulty level:* Easy *Expected size of project (175 or 350 hours):* 350 *Potential mentors:* [[Raghu Ranganathan]] == Write Foogle in Factor == The current prototype for Foogle is written in Haskell, but a native Factor version is yet to be made. Features beyond the prototype are searching by stack effect type specs, which can be inferred from vocabulary docs. *Prerequisites:* Web Development knowledge *Programming areas include:* furnace web framework, stack effect checking *Expected outcomes:* a foogle implementation inside factor, and a web app for running foogle *Estimated difficulty level:* Medium/Hard *Expected size of project (175 or 350 hours):* 350 *Potential mentors:* [[John Benediktsson]], [[Raghu Ranganathan]] == Have a different idea? == If there are no projects on this list that interest you, you can mail [[Raghu Ranganathan]] with your project plan and mentor recommendations. Some other ideas and their vocabularies (for inspiration) are as follows: - ui: Creating Qt bindings for Factor - webasm: Add a WebAssembly backend to Factor - regexp: Support group capture and lookaround in Factor's native regexp library - extra: Adding support for video playback to Factor
Describe this revision:
Save