Skip to content
PragTob edited this page Jul 1, 2012 · 27 revisions

Welcome to the shoes4 wiki! This is a great place to get started with shoes4.

What is shoes4?

shoes4 is the new version of the shoes DSL (Domain Specific Language) for writing GUI applications in ruby. shoes4 is rethinking the way shoes works, from an implementation point of view. The DSL itself however should stay intact as shooooesers all over the planet love it as it is. The shoes DSL is pretty simple which is the main reason for its beauty. Also cross-platform compatibility is at the heart of goals for shoes. For further information you can check out the homepage, an awesome talk by Steve Klabnik called the return of shoes and the most famous shoes application hacketyhack.

So what is different about shoes4? shoes4 aims at nailing down the shoes DSL/API and making the backend configurable. So for now our backend for the GUI implementation is SWT(Standard Widget Toolkit), but we want there to possibly be more backends for shoes. Maybe Qt, maybe GTK - you name it! There have been lots of different flavors of shoes before, but this is an effort to concentrate on one project to make shoes shine again!

Installing shoes4

You should check out the README for up to date information about how to install Shoes4 on your machine and what dependencies are needed.

Getting started with contributing to shoes4

You want to help out with the development of shoes4? Great! Let's get you started!

What to work on

You can always check out our open issues and see if you can contribute either by implementing something, discussing something or testing something. Everything helps and every help is highly appreciated!

If you don't find anything there you can also work on something else. You can check out the manual and see if the described functionality is implemented and if not go ahead and implement it.

Also you may check out the samples/ directory - it contains a lot of samples which you can try to run and if they don't work you can go ahead and try to fix some of them. There is a README in the samples folder detailing which samples are currently considered to be working.

Project Structure

The general directory structure of shoes4 is as follows:

  • bin: contains all the different executables we use - mor prominently swt-shoooes
  • coverage: contains a test line coverage report generated by simplecov - it's not in the repository but auto generated when you run rake spec
  • *fonts: surprisingly, some fonts we use
  • *images: images we use, another surprise!
  • lib this is were the real implementation resides. All implementation work should go here. It contains the shoes directory. It contains the DSL implementation of shoes4 - which means that no backend specifics should be used here. In our case this means that no java and no swt should be used. The real backend implementation belongs into the swt sub-folder.
  • samples: a variety of samples that should show that a given shoes implementation works as intended. When they all work, we'll be very happy!
  • spec: shoes4 is written with Test Driven Development (TDD) - which means we want to have tests for everything, and these tests (also called specs) go into this directory! The ones for the DSL and common implementation go into the shoes directory while the tests for our current backend swt go into the swt_shoes directory.
  • static: contains static images and text files mainly for the manual.
  • testing: a couple of random scripts for testing purposes

Style Guide

Shoes 4 has a comfortably-fitting style guide. While it is not laced too tightly, it might help you get your footing.

Get your changes merged

If you work on something, please let us know! Make a comment on an issue you are currently working or if you are working on a new implementation please open an appropriate issue so we have a place for discussion and people don't end up implementing the same thing twice!

Don't be afraid to make an early pull request with an incomplete implementation! This is great for discussions, receiving feedback and helping each other!

Resources

This section is meant to help you with some resources regarding some of the main technologies used in the development of shoes 4.

JRUBY

we use JRuby and...

SWT

RSpec

We use RSpec for TDD...