DEV Community

Ben Halpern
Ben Halpern Subscriber

Posted on

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

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

Happy coding!

Oldest comments (54)

Collapse
 
tmcsquared profile image
TMcSquared • Edited

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
 
codemouse92 profile image
Jason C. McDonald • Edited

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
 
lsm profile image
Marc Liu • Edited

Looking for users, testers and contributors.

Project link: github.com/lsm/alfa

Alfa

Effortless React State Management.

Alfa - Effortless React State Management

Why Alfa?

React is an excellent library for creating interactive and stateful views. However, things become unclear when you need to share & change data across components.

Alfa is an intuitive and straightforward way to manage React state. It completely decouples the complex relationships between components and let you focus on making components that work anywhere.

Its simple design allows you to adopt it in a matter of minutes while at the same time provides your essential tools to keep your application code easy to change and understand. Here is a list of things why it is the perfect fit for your next React app:

  • Easy - Only 4 functions/APIs to learn.
  • Fast - Alfa wraps your components with a thin layer. It introduces a little or no performance impacts.
  • Small - ~ 190LOC & 3KB minified + gzipped.
  • Async - Alfa supports asynchronous operation natively without additional packages.
  • Explicit - Alfa lets you know what a component requires (input) and what it changes (output).
  • Transparent - You can use and unit test your components as it is without Alfa. Users of your lib/component could but don't have to use Alfa at all.
  • React Native - Support React Native out of the box.
  • Server Render - Support isomorphic app out of the box.
  • Production Ready - 100% test coverage and being used in productions.

Links

Quick Guide

Installation

Use npm to add it to your package.json.

npm install --save alfa

Alternatively, use yarn if you prefer:

yarn add alfa

Getting Data for Components

Alfa converts your regular React component into a dependency injected component by injecting application data from a key/value store. Let Alfa handle the data if you use it in different components:

// hello.js
import React from 'react'
import { subscribe } from 'alfa'

// A stateless functional component.
function HelloMessage(props) {
  // Data is injected as the property of props.
  return <div>Hello ${props.name}!</div>
}

export default subscribe(HelloMessage, ['name'])

subscribe makes a new component which gets the variable name and feeds it into the HelloMessage as props.name on (re)rendering.

Now let's see how to use the above component in our app:

// index.js
import React from 'react'
import { render } from 'react-dom'
import { provide, subscribe } from 'alfa'

import HelloMessage from './hello.js'

// Define the root app which renders HelloMessage as a child.
const App = () => (
  <div>
    <HelloMessage />
  </div>
)

// Create the Root component by wrapping the App component with initial data
// using `provide(Component, data)`.
const Root = provide(App, { name: 'Motoko' })

// Render it!
render(<Root />, document.getElementById('root'))

You don't need to pass the variable name to HelloMessage as alfa gets it from the store and pass it to HelloMessage component automatically. It allows us to quickly move the component around without worrying about how to get the data it depends on.

Changing Data

The simplest way to modify the data of the Alfa store is to inject the built-in set function to the component.

// change.js
import { subscribe } from 'alfa'
import React, { Component } from 'react'

// A stateful class component.
class ChangeName extends Component {
  handleChange = event => {
    // Calling `set('mykey', 'my value')` will change the data `mykey`
    // in store to value `my value`.
    this.props.set('name', event.target.value)
  }

  handleSubmit = event => {
    event.preventDefault()
  }

  render() {
    return (
      <form onSubmit={this.handleSubmit}>
        <label>
          Name:
          <input
            type="text"
            value={this.props.name}
            onChange={this.handleChange}
          />
        </label>
      </form>
    )
  }
}

export default subscribe(ChangeName, ['set', 'name'], ['name'])

As mentioned earlier Alfa makes things explicit. So we need to define the output (the 3rd argument when calling function subscribe) of the component explicitly if we want to change a value of a key in the data store. Otherwise, Alfa complains we are trying to use set without defining the correct output.

Now add the ChangeName component to App and your index.js ends up like this:

// index.js
import React from 'react'
import { render } from 'react-dom'
import { Provider, subscribe } from 'alfa'

import HelloMessage from './hello.js'

const App = () => (
  <div>
    <HelloMessage />
    <ChangeName />
  </div>
)

// Alternatively, you can use Provider - the declarative interface of the
// provide function.
render(
  <Provider data={{ name: 'Motoko' }}>
    <App />
  </Provider>,
  document.getElementById('root')
)

Now each time you make a change in the input box React will rerender both HellowMessage and ChangeName components to reflect the change.

You can find the finished version of the above example in the folder examples/hello.

Please check documentation for API and advanced usages.

License

MIT

Collapse
 
agusnavce profile image
Agustin Navcevich

How can I contribute? Are there issues to start?

Collapse
 
lsm profile image
Marc Liu

That's an excellent question. You can first try Alfa for your side projects and see if you have any problems when using it. Please feel free to create any issues on GitHub - suggestions, bugs or everything is welcomed.

Collapse
 
rajagopal2000 profile image
Rajagopal2000

Hey Agustin!
I am currently working on building a platform where people can post their projects and interested developers can take up those projects. Please sign up if you are interested.
Website: hacklyst.com

Collapse
 
stargator profile image
Stargator

Bootstrap for the Dart language is looking not only for contributors, but also new maintainers!

github.com/richerlariviere/bootstr...

The current state of the project takes the JavaScript version of bootstrap and uses a transformer to allow the API to be used in a Dart context.

Tagging my fellow Dart fanatics/developers
@jvarness @graphicbeacon @stevenroose

Collapse
 
ben profile image
Ben Halpern

This looks very interesting.

Collapse
 
stevenroose profile image
Steven Roose

Don't have time for my Dart projects anymore. I'm desperately trying to keep Pointy Castle maintained with the Dart v2 changes..

Collapse
 
stargator profile image
Stargator

No problem. Let anyone know you think might be interested

Collapse
 
rajagopal2000 profile image
Rajagopal2000

Hey Steve!
I am currently working on building a platform where people can post their projects and interested developers can take up those projects. Please sign up if you are interested.
Website: hacklyst.com

Collapse
 
ghaberek profile image
Gregory Haberek

OpenEuphoria

Euphoria is an interpreted language with a C backend and Euphoria frontend (so it's mostly self-hosted). The Euphoria interpreter is very fast and uses reference-counting dynamic memory management. Euphoria uses only two types: atom for storing numbers and sequence for storing dynamic arrays and strings.

Homepage: openeuphoria.org/
Project: github.com/OpenEuphoria/Euphoria

We could really use a few people with any of the following skills:

  • C development in general
  • Compiler and interpreter design
  • Cross-platform build systems (make, autotools, etc.)
  • Linux software packaging (dpkg/rpm, private repos, etc.)
  • MacOS development in general
  • Learn Euphoria and use it for your projects!

Anyone who's interested, please check us out and join the discussion on our forum. If you sign up, please send an email to openeuphoria@gmail.com with the subject "all_admins email verification" so we can activate your account. (Sorry for that, but we contended with some bad actors recently so this policy is in effect for a while.)

Collapse
 
ntrupin profile image
Noah Trupin

notmarkdown is a family of opensource markup libraries. Check out the repo to learn and contribute.

Collapse
 
adhocore profile image
Jitendra • Edited

i need someone to help with phint - a PHP scaffolding &/or code generating tool. we shall be working together. 😁
edit: after a good PR or two, i will be happy to mention the credit in visible part of readme and invite as project collaborator 👏

Collapse
 
ogfris profile image
Fris

i'd love to help you on this, can you add me and message me on discord: Fris#5390 or on twitter: @GangMemberFris.

Collapse
 
adhocore profile image
Jitendra

thanks for coming forward 😊 if you could follow back we can have quick chat here in devto

Thread Thread
 
ogfris profile image
Fris

sure thing !

Collapse
 
rajagopal2000 profile image
Rajagopal2000

Hey Fris!
I am currently working on building a platform where people can post their projects and interested developers can take up those projects. Please sign up if you are interested.
Website: hacklyst.com

Collapse
 
ben profile image
Ben Halpern

Of course, we'd love help with dev.to

We are a Rails app using Preact on the frontend.

thepracticaldev / dev.to

Where programmers share ideas and help each other grow


DEV

DEV Community 👩‍💻👨‍💻

The Human Layer of the Stack

ruby version rails version Travis Status for thepracticaldev/dev.to

Welcome to the dev.to codebase. We are so excited to have you. With your help, we can build out DEV to be more stable and better serve our community.

What is dev.to?

dev.to (or just DEV) is a platform where software developers write articles, take part in discussions, and build their professional profiles. We value supportive and constructive dialogue in the pursuit of great code and career growth for all members. The ecosystem spans from beginner to advanced developers, and all are welcome to find their place within our community. ❤️

Table of Contents



Many folks from the community have chipped in so far, but this is just the beginning.

We're also working on native, iOS is closest and getting most of my attention on this front (mostly because PWA works way better on Android)

thepracticaldev / DEV-ios

DEV Community iOS App

Build Status

DEV iOS 💖

This is the repo for the dev.to iOS app. It is still a work in progress, but getting there!

Design ethose

We will grow to include more native code over time, but for now we are taking the approach of native shell/web views. This approach lost favor early in iOS days, but I believe it is a very valid approach these days. It is inspired by how Basecamp does things. Our tech stack is a bit different, but the ideas are the same.

m.signalvnoise.com/basecamp-3-for-...

signalvnoise.com/posts/3743-hybrid...

signalvnoise.com/posts/3766-hybrid...

youtube.com/watch?v=SWEts0rlezA

By leveraging wkwebviews as much as possible, I think we can make this all pretty awesome and sync up with our web dev work pretty smoothly. And where it makes sense, we can re-implement certain things fully native, or build entirely native features. Life's a journey, not a destination.

Contributing

  1. Fork and clone the project.
  2. Install Carthage. If…
Collapse
 
david_j_eddy profile image
David J Eddy

davidjeddy / normie

Wrapper library attempting to normalize the PHP standard library function parameter order for arrays and strings.

Normie

Badges

Build Status

Latest Stable Version Latest Unstable Version License composer.lock

Monthly Downloads Daily Downloads Total Downloads

Contributors

Description

Normie (short for Normalizer) attempts to make using the PHP Standard Library (SPL) function calls more consistent by implementing a norm_{function name}() wrapper function declarations. This library DOES NOT over ride the SPL functions in any way.

Examples

Function parameter order examples.

Arrays fn()

Normie array functions follow the 'array source X, operator Y (callback,key, needle, etc), other parameters are Z' mentality. The complete list of array functions are viewable here.

SPL: array array_map ( callable $callback, array $arr1, array $_ = null) { }

Normie: array norm_array_map( array $array, callable $callback, array $userdata = null): array

Strings fn()

Normie string functions follow the 'Search X string or Y target, replace with Z string' mentality. The complete list of string functions are viewable here.

SPL: array explode ( string $delimiter , string $string [, int $limit = PHP_INT_MAX ] )

Collapse
 
david_j_eddy profile image
David J Eddy

davidjeddy / normie

Wrapper library attempting to normalize the PHP standard library function parameter order for arrays and strings.

Normie

Badges

Build Status

Latest Stable Version Latest Unstable Version License composer.lock

Monthly Downloads Daily Downloads Total Downloads

Contributors

Description

Normie (short for Normalizer) attempts to make using the PHP Standard Library (SPL) function calls more consistent by implementing a norm_{function name}() wrapper function declarations. This library DOES NOT over ride the SPL functions in any way.

Examples

Function parameter order examples.

Arrays fn()

Normie array functions follow the 'array source X, operator Y (callback,key, needle, etc), other parameters are Z' mentality. The complete list of array functions are viewable here.

SPL: array array_map ( callable $callback, array $arr1, array $_ = null) { }

Normie: array norm_array_map( array $array, callable $callback, array $userdata = null): array

Strings fn()

Normie string functions follow the 'Search X string or Y target, replace with Z string' mentality. The complete list of string functions are viewable here.

SPL: array explode ( string $delimiter , string $string [, int $limit = PHP_INT_MAX ] )