Difference between revisions of "BayHac2017/CodeWorld"

From HaskellWiki
Jump to: navigation, search
(add some more project ideas)
(more ideas, restructure)
Line 22: Line 22:
 
The main intent of CodeWorld is to be used for middle school aged children.  Because of this, it defaults to a simplified variant of Haskell.  However, a full Haskell version is available and widely used.
 
The main intent of CodeWorld is to be used for middle school aged children.  Because of this, it defaults to a simplified variant of Haskell.  However, a full Haskell version is available and widely used.
  
== Installing ==
+
== Possible Projects ==
  
Installation is done by cloning the repository, and then running <code>install.sh</code>, then <code>build.sh</code>, and finally <code>run.sh</code>.  '''Be aware that running <code>install.sh</code> will delete your <code>~/.ghc</code> directory!'''
+
CodeWorld is a large project, and has a lot going on!
  
Installing takes some time (mostly building and installing node.js and GHCJS), but only needs to be done once. Future changes can just run the build and run scripts, which is considerably faster.  I'll be happy to help with this process, either at BayHac or earlier.
+
'''If you're a beginner:''' consider using CodeWorld to build your own project! There are APIs that make it ease to create fractals and geometric patterns, animations, physics simulations, and casual gamesIn fact, I'm fairly comfortable saying that CodeWorld's collaboration API is the easiest way to build multi-player games in Haskell that you'll find!
  
== Possible Projects ==
+
New contributions to the gallery are helpful ([https://github.com/google/codeworld/issues/452 bug]).  So are contributions to the online guide!
  
CodeWorld is a large project, and has a lot going on.  Here's a list of tasks of reasonable scope for a weekend.
+
'''If you want to jump in''' and work on more fundamental changes to CodeWorld, then here's a list of tasks of reasonable scope for a weekend.
  
 
* Improving the editor with better autocomplete ([https://github.com/google/codeworld/issues/33 bug], [https://github.com/google/codeworld/issues/135 bug]), links between declarations and usage ([https://github.com/google/codeworld/issues/136 bug]), collaborative coding using together.js ([https://github.com/google/codeworld/issues/17 bug]), or other editor features ([https://github.com/google/codeworld/issues/134 bug], [https://github.com/google/codeworld/issues/10 bug]).
 
* Improving the editor with better autocomplete ([https://github.com/google/codeworld/issues/33 bug], [https://github.com/google/codeworld/issues/135 bug]), links between declarations and usage ([https://github.com/google/codeworld/issues/136 bug]), collaborative coding using together.js ([https://github.com/google/codeworld/issues/17 bug]), or other editor features ([https://github.com/google/codeworld/issues/134 bug], [https://github.com/google/codeworld/issues/10 bug]).
Line 37: Line 37:
 
* Better support for console-mode programs. ([https://github.com/google/codeworld/issues/254 bug])
 
* Better support for console-mode programs. ([https://github.com/google/codeworld/issues/254 bug])
 
* Constructive area geometry ([https://github.com/google/codeworld/issues/28 bug])
 
* Constructive area geometry ([https://github.com/google/codeworld/issues/28 bug])
* Improve multi-player game framework by using WebRTC ([https://github.com/google/codeworld/issues/391 bug]), implementing desync detection ([https://github.com/google/codeworld/issues/434 bug]), or adding smoothing for delayed events ([https://github.com/google/codeworld/issues/447 bug])
+
* Improve multi-player game framework by improving the lobby UI and error handling ([https://github.com/google/codeworld/issues/450 bug], [https://github.com/google/codeworld/issues/398 bug]), random player matching ([https://github.com/google/codeworld/issues/451 bug]), WebRTC ([https://github.com/google/codeworld/issues/391 bug]), desync detection ([https://github.com/google/codeworld/issues/434 bug]), or smoothing network latency ([https://github.com/google/codeworld/issues/447 bug])
  
 
There are other possibilities, as well, if none of this catches your eye.
 
There are other possibilities, as well, if none of this catches your eye.
 +
 +
== Installing ==
 +
 +
You do not need to install anything to use CodeWorld for your own project!  Just visit [http://code.world] or [http://code.world/haskell] to get started.  (The first link is the simplified educational language variant; the second is plain Haskell.)
 +
 +
If you want to make deeper changes, installation is done by cloning the repository, and then running <code>install.sh</code>, then <code>build.sh</code>, and finally <code>run.sh</code>.  '''Be aware that running <code>install.sh</code> will delete your <code>~/.ghc</code> directory!'''
 +
 +
Installing takes some time (mostly building and installing node.js and GHCJS), but only needs to be done once.  Future changes can just run the build and run scripts, which is considerably faster.  I'll be happy to help with this process, either at BayHac or earlier.

Revision as of 02:37, 13 March 2017

Project: CodeWorld
Description: Educational computer programming environment using Haskell
Maintainers/liaisons: Chris Smith
Source: https://github.com/google/codeworld
Website: https://code.world/

What It Is

CodeWorld is a web-based development system for Haskell programming in education. The web site provides a code editor, in-browser preview, and options to load and save programming projects. The library is inspired by Gloss, and provides a purely functional API for drawing pictures, animations, and interactive programs.

The main intent of CodeWorld is to be used for middle school aged children. Because of this, it defaults to a simplified variant of Haskell. However, a full Haskell version is available and widely used.

Possible Projects

CodeWorld is a large project, and has a lot going on!

If you're a beginner: consider using CodeWorld to build your own project! There are APIs that make it ease to create fractals and geometric patterns, animations, physics simulations, and casual games. In fact, I'm fairly comfortable saying that CodeWorld's collaboration API is the easiest way to build multi-player games in Haskell that you'll find!

New contributions to the gallery are helpful (bug). So are contributions to the online guide!

If you want to jump in and work on more fundamental changes to CodeWorld, then here's a list of tasks of reasonable scope for a weekend.

  • Improving the editor with better autocomplete (bug, bug), links between declarations and usage (bug), collaborative coding using together.js (bug), or other editor features (bug, bug).
  • Exporting drawings and animations to image files, animated gifs, or video files. (bug)
  • Debugging features (bug, bug, bug)
  • Better support for console-mode programs. (bug)
  • Constructive area geometry (bug)
  • Improve multi-player game framework by improving the lobby UI and error handling (bug, bug), random player matching (bug), WebRTC (bug), desync detection (bug), or smoothing network latency (bug)

There are other possibilities, as well, if none of this catches your eye.

Installing

You do not need to install anything to use CodeWorld for your own project! Just visit [1] or [2] to get started. (The first link is the simplified educational language variant; the second is plain Haskell.)

If you want to make deeper changes, installation is done by cloning the repository, and then running install.sh, then build.sh, and finally run.sh. Be aware that running install.sh will delete your ~/.ghc directory!

Installing takes some time (mostly building and installing node.js and GHCJS), but only needs to be done once. Future changes can just run the build and run scripts, which is considerably faster. I'll be happy to help with this process, either at BayHac or earlier.