Rubinius Language Platform

Rubinius is a platform for building programming language technology.

It is difficult to imagine human society without the presence of language. Every advance in human history results from processing and sharing information. The digital revolution is merely the latest of many such advances. Languages are the preeminent tool for processing information. Through the use of languages, humans do the work of information processing and transform the world around them. Humans discovered fire; they invented rocket engines.

Computers are the engines for information processing. Extremely powerful computers are everywhere now. Hundreds of millions of people use them every day. But a tiny fraction of those people actually use the computer itself. A computer is the most powerful machine humans have created and yet most people only use the computer through an app someone else made. The next leap forward for society requires widespread ability to use computers directly.

Rubinius is not the only project focused on making computers better for more people. Most projects aim to make computers easier to use in some respect. Rubinius is instead focused on making people more able to use computers. Technology is transformative. Henry Ford didn't just manufacture cars, he helped create a nation of drivers. Rubinius envisions a world where people use computers to solve problems, building their own roads in a sense, not merely following the roads someone else built for them.

Rubinius Book

We are writing The Rubinius Book as a guide to all aspects of building the Rubinius language platform and community.

You can view the previous documentation while we transition content to The Rubinius Book.

Installing Packages

Docker

Rubinius provides Docker images based on Ubuntu 15.10 and 14.04. The images are automatically built on Docker Hub and available at the Rubinius Docker organization. To use the Rubinius Docker image, follow these steps:

  
    your-shell$ docker pull rubinius/docker
    your-shell$ docker run -it rubinius/docker bash
  docker-shell# ruby -v
  

OS X Homebrew

Rubinius provides Homebrew binaries that should be compatible with 10.8 (Mountain Lion) and newer OS X releases. To install Rubinius on Homebrew, follow these steps:

  
  $ brew update
  $ brew tap rubinius/apps
  $ brew install rubinius
  

Ubuntu

Rubinius builds binaries for Ubuntu for versions 12.04, 14.04, and 15.10. These binaries are built so that they can be used on Travis with RVM. They can also be manually expanded for use with chruby.

Other Unix/Linux

We would like to assist building packages and binaries for other Unix/Linux systems. We are removing the Ruby build dependency to make the process of building Rubinius much easier. If you'd like to help build Rubinius binaries or packages, join us in the Rubinius Gitter channel.

Source Code

Source code tarballs are available for the following releases:

Reporting Security Issues

We work hard to provide a secure environment for running your code. If you find a security issue, please email security@rubinius.com. Encrypt your email using our public key (also available on our website or from the MIT PGP database).

Our policy is to respond to you within 72 hours and we will work with you to create a fix for the issue. Sending an email to security@rubinius.com will not result in a public disclosure. We will work with you on a public disclosure after we have prepared a fix.

For security issues with the standard libraries that are copied from Ruby, please report them directly to that project. We are notified as part of their reporting procedures and we ensure that Rubinius is patched in the cases when those vulnerabilities affect Rubinius as well.

Community

Remember that your real job is that if you are free, you need to free somebody else. If you have some power, then your job is to empower somebody else. — Toni Morrison

Code of Conduct

The Rubinius project is committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, religion, or non-religion.

As part of our commitment, we adopt a Code of Conduct that applies to any Rubinius project, space, and event, whether online or in-person. If you are subject to, or witness to, possible violations of the Code of Conduct, see the detailed reporting guidelines.

The Rubinius Code of Conduct is not intended to create any procedural or substantive rights under any system of law. Participation in the Rubinius community is voluntary and subject to complying with the Code of Conduct.

The Rubinius community Code of Conduct is adapted from the Stumptown Syndicate's Code of Conduct. We thank them for their ongoing work to create inclusive and helpful communities.

Community Roles

A role in the Rubinius community is not a person or a position. A person may participate as part of a role, or in multiple roles, or any combination. A role has two fundamental parts: 1. a problem to solve, and 2. a network of collaboration with other roles.

Advice Process

The advice process is a method of making decisions in a network of collaborating roles. The advice process contrasts markedly from the decision making process in a typical hierarchy, where one's position confers and limits one's authority to make decisions.

Using the advice process, anyone is empowered to make decisions by following the principles of the process:

  1. Describe the problem to be solved. Without a firm understanding of the problem, time is wasted and unnecessary conflict is created.

  2. Describe the solution that is desired. It is not necessary that everyone understands or agrees with the solution, but the person proposing to implement it should be able to communicate it effectively.

  3. Consult the people who would be affected by the change the person wants to make. This is an especially challenging part when working on something like an open-source project where we often don't know who is using the project. Working to improve this is a major part of implementing the advice process.

  4. Seeking input from people with relevant expertise. Nothing requires following someone else's recommendation, but if the person is going to disagree with someone who has relevant expertise, they should be able to articulate a very good reason for doing so.

The advice process is not a panacea, nor is it necessarily a conflict resolution mechanism. However, since it allows people to make progress solving problems without requiring everyone to agree ahead of time, it can significantly reduce needless, counter-productive conflict.

Why Rubinius Exists

The Rubinius community is a group of people who work together, influenced by our values, to accomplish things that fulfill the Rubinius vision and mission.

Vision

Our vision is a world where everyone can use the tremendous computing power humanity has created to improve their well-being and quality of life.

By "everyone" we mean creating the most benefit for the least amount of effort for the greatest number of people. There will always be incredibly smart people who do very difficult things. For the rest of us, to steal a quote by Moshe Feldenkrais, we want to "make the impossible possible, the hard easy, and the easy elegant".

Mission

Our mission is to build the best platform and tools for people to use the power of languages to process information to create value and solve problems, prioritizing our efforts to improve access for people who have been marginalized and excluded.

Every aspect of our lives is touched by our ability to process information. Living things process and share information and this capability results in an exponentially decreasing cost of goods over time (to some minimum limit), a concept Pieter Hintjens calls cost gravity.

Languages are the most powerful tools humanity has invented for processing and sharing information. As with any technology, these tools are multipliers of our efforts; they can be used for good or ill. To give people the opportunity to create health, wealth, and happiness in the world, we must give them access to these tools.

Values

We value impact, quality, inclusiveness, diversity and balance, and we actively promote them.

We celebrate our differences and appreciate them as a source of strength. We prioritize improving access and championing the needs of people who have traditionally been excluded. We get things done, lead by example, and we constantly strive to improve. We realize that we enjoy a lot of privilege and we work hard to empower others rather than advancing our own interests.

We welcome anyone who shares our vision, mission, and values to be a part of the Rubinius community. We describe the many opportunities to participate and contribute in our section on Roles, and one of those roles is to help better define the roles.

Rubinius Team

  • Valerie Concepcion: If you're interested in getting things like Raspberry PI's, Legos, and Wii Remotes to play well together, Valerie can help. Drawn to the Maker movement and inspired by her friends who work in non-profits, she is interested in applying technology for social good.

  • Jesse Cooke: As co-founder of Watsi, a venture to fund healthcare for people around the world, Jesse was part of YCombinator's first ever non-profit. Jesse has been contributing in any way he can to Rubinius for a long time. If you visit Portland, OR, you may see him riding this weird bike with a belt instead of a chain.

  • Stacy Mullins: At one point, Stacy would have gladly chosen a typewriter over a computer. But at school for graphic design, she became fascinated by technologies like HTML and CSS and the ability to create something from scratch. Now she's learning about crafting code and communicating well with other developers.

  • Yorick Peterse: When not breaking code, Yorick is fixing it and asking questions. Either way, there is a lot of code happening. He's drawn to the deep technical details of systems like just-in-time compilers and concurrency. He may or may not be a Dr. Evil character hatching plans for world domination.

  • Sophia Shao: A recent graduate of Carnegie Mellon University's Electrical & Computer Engineering department, Sophia has tackled modernizing massive legacy applications. She's also delved into the deepest corners of Rubinius. Hit her up for tips about debugging machine code.

  • Brian Shirai: Having once passed over Ruby for being too much like Perl, Brian rediscovered Ruby over ten years ago and has been working on Rubinius for the past nine. Inadvertently, he's also learned Perl and Bash.