DEV Community

Ben Halpern
Ben Halpern

Posted on

Who's looking for open source contributors? (August 28 edition)

Please shamelessly promote your project. Everyone who posted in previous weeks is welcome back this week, as always. πŸ˜„

This week's thread came out later than usual. Sorry about that!

Happy coding!

Top comments (22)

Collapse
 
lexplt profile image
Alexandre Plt

Hi !

I have started working on a programming language named Kafe a while ago, and I am searching for someone (or sometwo, somethree... you get the joke :p ) to help me in this project.

What is it ? a scripting language for video games.

Basically, a programmer will have to follow those steps to use Kafe code in his game/project :

  • code something in Kafe
  • compile it using kafec (the kafe code compiler)
  • add the generated bytecode file to his project
  • #include<kafe/vm/VM.hpp>, then create his/her Kafe VM, feed it with the filename of the bytecode file, and then execute it !

Syntax examples and goals

cls Character
    dyn name
    dyn life
    dyn weapon

    # comma in argument list is optional
    fun __init__(self name life)
        self.name = name
        self.life = life
        ret

    fun __add__(self other)
        self.life += other.life
        other.life = 0
        ret self.life

end

cst default_life = 110

dyn harry_potter = new Character("Harry Potter" default_life)
dyn voldemort = new Character("Voldemort" default_life)

# let's say this is to attack voldemort
# some kind of syntaxic sugar, somehow
harry_potter + voldemort

My ultimate (unachievable) goal is to replace Lua, because it lacks proper classes and arrays (imo).

A most affordable goal would be to be able to use Kafe with a minimal performances loss in video games.

Can we compile Kafe code without using kafec ?

No, we can't. The goal is to provide only the bytecode files because they are smaller, and it's a huge performance improvement for your game/project, since it's already compiled and you don't have to wait for it to be compiled before executing Kafe code.

How is the project structured ?

It is split in 7 or 8 projects :

C++:

  • the Kafe VM
  • the Kafe compiler using ANTLR
  • the plug-ins system (I will explain how it works below)
  • the Kafe (assembler) disassembler, to be able to read bytecode more easily. It will probably be helpful to compile "text bytecode" to bytecode (as nasm does for example)
  • cup, the package manager, to download plugins

HTML/CSS/JS:

  • the website of the project, hosting the documentation
  • the KEP (Kafe Enhancement Proposals, yes my imagination is very limited), similar to the PEP of Python part of the website : kafe-lang.github.io/kep.html

Python:

  • the tests suite (linked to cmake) for the VM, can easily be adapted for the compiler

The plug-ins

A plug-in must follow a specific pattern to be used by the Kafe VM, because it will compiled into a .dll/.so, and loaded at runtime by the VM. It will only have a 3 functions :

  • KafeVMversionRequired, to know the version of the VM used to create the plugin
  • PluginVersion, useful for debugging, and version tracking in the package manager cup
  • registerFunctionsAndObjects, to load C++ functions and Kafe classes definitions into the VM, to use them in Kafe code

Current progress

  • the website is done, just a bit empty
  • all the documentations are set up, I just need to complete them
  • I fixed a template for the KEP (to be able to convert them from Markdown to HTML for the website)
  • the Kafe Compiler is using ANTLR, so I just need a grammar (already have one, but I need to rewrite it), and a visitor (not done). The parser and lexer are done as well as the CLI
  • the Kafe VM is done by 90%. I still a bunch of things to do with the classes and plugins but I described everything in a book (I was on holydays the past 2 weeks)
  • I have templates for cup, Kafe ASM (the (assembler) disassembler), and the plugin-system (I already have something to load .dll/.so/.dynlib but I did not push it yet)
  • I also started a Kafe CLI, to be able to rule them all use cup/kafec/Kafe VM/Kafe ASM with only one program

You can join the project on Discord and/or follow it on GitHub !


Also, I started working on a 3D rendering lib using OpenGL : Zavtrak.

I want to create a library to do 3D rendering easily using OpenGL (currently 3.3.x) with a nearly zero cost abstraction.

Currently, I have utilities to play with the keyboard, the mouse, create a window and handle it more easily (using GLFW), play with VAO, VBO, EBO, vertices, and shaders.

The stack :

  • C++ 17
  • OpenGL 3.3
  • GLFW
  • glad

If want to have a look at it, the GitLab is here : gitlab.com/SuperFola/Zavtrak, and if you want to talk about, you can PM here (or on my twitter, or even on my discord : SuperFola#4234)

Have a good day guys !

Collapse
 
mandaputtra profile image
Manda Putra

I can help you with the websites

Collapse
 
lexplt profile image
Alexandre Plt

Hi ! Thanks for your reply, as for the websites, one would be needed for Zavtrak but none for Kafe, since I am using a template (and writing documentation to markdown converted to html later).

We can talk about that in PM ?

Thread Thread
 
mandaputtra profile image
Manda Putra • Edited

seems like I miss your reply, sorry about that I've been busy of my work. You can contact me on discord mandaputtra#8332

Collapse
 
tmcsquared profile image
TMcSquared

QubΒ³d Engine Group is a brand new voxel-based engine and game project, aiming to make a mature and extensible Minecraft-like game, backed by a vibrant and friendly community.

Anyone with interest in or experience with the following technologies are encouraged to join the project. They're just starting up, so there's plenty of room to find your niche.

Current Needs:

Are you interested in helping with any of the following? We're working on building small teams for each sector.

  • Cross-platform C++ compilation w/ Clang and CMake
  • Basic application/library structure work (C++)
  • 3D block rendering (C++/OpenGL)
  • Terrain generation (C++)
  • Entity-Component system (C++)
  • Voxel storage (C++)
  • Voxel manipulation (C++)
  • UI design (C++)
  • GUI library creation (C++)
  • Pixel art creation
  • Networking (C++)
  • Lua API (C++/Lua)
  • Mod/Server Marketplace prototype (Python/Django)
  • User authentication servers
  • Implementing Agile/Scrum

Team Dynamic:

We are a growing, distributed team of volunteers at varying experience levels, helping and learning from one another. The teams are led by a group of dedicated volunteer leaders, who work together to build a healthy, open, collaborative environment.

Currently, we meet once a week for a DevTalk on Discord, to discuss current project goals and to solve design and logistical problems. Most of us are available at Discord and will respond within a day typically.


Tech Stack:

  • C++ (especially C++17)
  • Clang compiler (GCC secondary)
  • OpenGL
  • SDL2
  • Lua
  • Sphinx (documentation)
  • CMake
  • Python/Django (marketplace)
  • Grav (static website)
  • Git (VCS)
  • Phabricator (development platform)

Jump In!

The easiest way to get started is to join the Discord room. The link is on the website: qub3d.tk

Collapse
 
thatotherguy123 profile image
that-other-guy123

This looks like a nice project, with lots of potential!
I will keep an eye on it for sure.

Collapse
 
codemouse92 profile image
Jason C. McDonald

MousePaw Media is looking for C++ and Python developers who are interested in working on unusual, cutting-edge libraries, tools, and games.

Current Projects

Here's a look at a few of our current projects:

PawLIB 1.1: High-performance, memory efficient containers and utilities for the C++ language. We're expanding our testing library (Goldilocks), improving and expanding our data structures (Flex), making message output a delight again (IOChannel), and building a tool for streamlining the design of CLI interfaces (Blueshell).

Right now, we're working on iterators for the Flex data structures, adding a new high-performance, doubly-linked list implementation, and building our collection of sorting algorithms.

Omission is a game written in Python 3. It currently uses the Kivy GUI toolkit, but needs to be re-implemented in Qt5 (PySide2).

DiamondQuest is a brand new Python 3 game, which will use the Qt5 (PySide2) GUI toolkit. We're especially needing someone with pixel-art skills to create the retro-style graphics.

Ratscript: A brand new language which seeks to combine an innovative, obvious syntax with a powerful combination of paradigms. Ratscript is being designed specifically for the next generation of game development. Takes cues from Python and Rust, among others.

Anari: A vector-based animation engine implemented in C++, allowing for memory-efficient interactive animations to be deployed onto old and new hardware alike.

Infiltrator is an upcoming Python 3 party game. We have an earlier version implemented in C++, but we want to recreate it in Python3 and Qt5 (PySide2).

Our Stack

  • C++14 (C++17 proposed)
  • Compilers: Clang and GCC
  • CMake
  • Python 3
  • Qt 5/PySide 2
  • CPGF
  • Eigen
  • Git
  • Phabricator

Getting Involved

See something you like? Jump right in! We have a robust development platform, centered around a carefully-honed Phabricator instance.

For more information, visit mousepawmedia.com/opensource or contact developers (at) mousepawmedia (dot) com. You can also ask questions and join the discussion us on the Lobby chatroom on our Phabricator.

Collapse
 
tux0r profile image
tux0r • Edited

Everyone who posted in previous weeks is welcome back this week, as always.

OK! So, as usual:

  • My static blog generator: blogcpp.org (Mercurial repository). I have updated it yesterday, a new release is scheduled for September or so, depending on how much I want to work on it. I would love to have a search functionality in it...
  • My bookmarks synchronization service: ymarks.org (Mercurial repositories). Currently, it has 43 users on Chrome and 67 on Firefox (yes, the one review was a bug... that happens when nobody helps me). This is your chance to participate in an upcoming cross-browser project. If you feel like it: I planned an Android client months ago as well, but I won't manage to do that in 2018 anymore.
  • My Twitter client: ZenTweet.net (Mercurial repository). If you have ever wondered how Twitter's API works, this is for you. You might see that the repository and the code are German-only ... this could be an easy first task? ;-)
Collapse
 
ravernkoh profile image
Ravern Koh

Might I ask why you use Mecurial for your projects?

Collapse
 
tux0r profile image
tux0r • Edited

Mercurial is common enough (used by Mozilla and similar projects) to be an interesting VCS for projects which could need contributors (I have others on Darcs and SVN), it has a good, mature and very alive ecosystem (unlike Bazaar), it has a lot of useful plug-ins (e.g. for history rewriting) and not a totally broken branching/merging mechanism (like Git).

Edit: at least I have managed to fsck up a Git repository twice while merging two incompatible branches. Never happened with Mercurial.

Thread Thread
 
ravernkoh profile image
Ravern Koh

Ahh I see.

Collapse
 
melezhik profile image
Alexey Melezhik • Edited

Hi devs. Do you have your small utilities, scripts, cli? Don't just use scripts, REUSE them.

Scripts kept in our github repos or local file systems are forgetable and eventually stale unless we share them with community. SparrowHub - Linux scripts repository is a good spot to distribute your sctipts. We support scripts written on one 4 languages - Perl, Bash, Pyhton and Ruby. Dependency managers, versioning, markdown documentation and configuration are out of the box. A few dozens scripts are already here, come and add your creation.

Collapse
 
alexdovzhanyn profile image
Alex Dovzhanyn • Edited

The Elixium Network is an open source blockchain looking for contributors!

Elixium is an anonymous, fast, and javascript contract scriptable blockchain written in Elixir, and has the potential to process up to 20,000 transactions per second (roughly the speed of the Visa network, at 24,000 transactions per second).

We're currently building out a base layer for the blockchain, so this is an opportunity to get in early. Come join the team, any contribution (especially documentation) helps!

Links:

Telegram Group
Github
Twitter
Reddit
Facebook
Website

Collapse
 
juanfrank77 profile image
Juan F Gonzalez

This is something that quite piques my interest!

Collapse
 
alexdovzhanyn profile image
Alex Dovzhanyn

Hop in the Telegram group and let's figure something out!

Collapse
 
dsaw profile image
Devesh Sawant • Edited

Hello!

I made a tiny Python library called perfect_game_player that helps predict the best move you can play in games. I made use of minimax and its variants. You can make your own AI by implementing the Node class and calling the minimax function.
Currently, I have tried it on Tic tac toe and connect 4.

I just made it because I loved the idea of a game playing AI! :)
There are a ton of things left to do. Initially I wanted to make a graphical client XO game and visual minimax stepper but spent a lot of time getting the games to run.

Here's the project, would love it if you could take a look! Contributions and even feedback is welcome.

Cheers!

Collapse
 
josephmancuso profile image
Joseph Mancuso • Edited

Masonite is an awesome community of developers so far. We are all building the next great Python web framework and looking for some awesome players to join the community!

You can join the Slack channel to learn more if you like.

Collapse
 
sublimegeek profile image
Jonathan Irvin

Anyone interested in helping me out with #jellyfin?

Collapse
 
vinistock profile image
Vinicius Stock

Hey, everyone!

I've created a Ruby gem that when added to a Rails application will profile memory and/or CPU of controllers and jobs when running specs. At the end of the execution, it can generate a JSON or HTML output with the results (depending on how the gem has been configured).

I started it out for fun and now I'm not really sure where to go with it (if anywhere).

If anyone is interested in contributing, suggesting ideas or simply taking a look, you can find it here.

Happy coding, everybody!

Collapse
 
nickytonline profile image
Nick Taylor

By no means a huge OSS project, but for those that use Gatsby for their blog or other purposes, feel free to contribute to my Gatsby code snippets extension

VS Code Gatsby Snippets Extension screen shot

Collapse
 
cjbrooks12 profile image
Casey Brooks

I just started a new project yesterday to add JSON output formatting to Dokka, the code documentation tool for Kotlin. I'm just starting to get my feet wet and figure the thing out, and I would love some help getting the right information in the JSON output.

copper-leaf / dokka-json

Dokka formatter to output JSON

dokka-json

Dokka formatter to output JSON

Usage

build.gradle

configurations { dokka }
repositories {
    maven { url 'https://jitpack.io' }
}
dependencies {
    dokka 'org.jetbrains.dokka:dokka-fatjar:0.9.17'
      dokka 'com.github.copper-leaf:dokka-json:0.1.0'
}
task runDokkaWithJsonFormatter(type: JavaExec) {
    dependsOn classes
    outputs.files(fileTree("${project.buildDir}/docs/dokkaJson"))

    main = "org.jetbrains.dokka.MainKt"
    classpath = configurations.dokka
    args = [
            "-format", "json",
            "-src", "${project.projectDir}/src/main/kotlin",
            "-output", "${project.buildDir}/docs/dokkaJson"
    ]
}
project.tasks.assemble.dependsOn runDokkaWithJsonFormatter

The default output of Dokka is pretty minimalistic and not very pretty, and is created to be deployed directly, which makes it not very useful for other tools to do cool things with the output. The ultimate end-goal for this small project is to add full KDoc support to the Orchid static site generator, my main project, which I would also love feedback on and help with documentation.

JavaEden / Orchid

A beautiful and truly unique documentation engine and static site generator.

Orchid

Linux and Mac Build Status Windows Build status Current Version License: LGPL-3.0 Codacy Grade Codacy Coverage Gitter chat

A beautiful and truly unique documentation engine and static site generator.

Example Orchid site

Orchid is a brand-new, general-purpose static site generator for Java and Kotlin, with a focus on extensibility and aimed at developers looking to improve their technical documentation. Orchid was born out of a desire for better-looking Javadocs and frustration with how difficult is it to manage large Jekyll sites and keep it up-to-date with your code.

Orchid supports a variety of plugins, including a wiki, static pages, blogs, and much more. It aims to have high compatibility with many of the existing static site generators, such as Jekyll, Gitbook, and Hugo, so that migration to Orchid is painless. And if you can't find a plugin to do what you need, Orchid provides an intuitive way to add your own private plugins and a rich API so you can make your site as beautiful and unique as an Orchid.

…
Collapse
 
pranay_rauthu profile image
pranay rauthu

Can you explain why someone should choose zuix?