Sobre el proyecto
CodeWorld es un entorno de programación educativo implementado en Haskell. Proporciona un modelo matemático simple para figuras geométricas, animaciones y juegos interactivos o multijugador. El entorno basado en web tiene como objetivo apoyar la enseñanza con un editor y compilador sin configuración, compartir fácilmente y almacenar proyectos en la nube, y la capacidad de ejecutar programas directamente en el navegador usando GHCJS.
Variantes
- CodeWorld (code.world) usa una variante educativa de Haskell y bibliotecas diseñadas para apoyar la enseñanza de matemáticas.
- CodeWorld Haskell (code.world/haskell) está dirigido a Haskell estándar, por lo que los programas pueden ejecutarse en el sitio con GHCJS o compilarse de forma nativa usando el paquete codeworld-api y blank-canvas.
- CodeWorld Blocks (code.world/blocks) ofrece una interfaz de arrastrar y soltar para estudiantes más jóvenes; el README señala que todavía tiene errores y no se recomienda su uso.
Estado y soporte
CodeWorld se describe como estable y se ha utilizado en escuelas durante años, con una lista parcial de usuarios en los documentos del repositorio. Los cambios importantes se programan entre los semestres escolares típicos de EE. UU. (K-12) para reducir las interrupciones. Google distribuye el código pero declara que CodeWorld no es un proyecto oficial de Google y no proporciona soporte; las preguntas van a la lista de correo codeworld-discuss, y existe un foro de preguntas y respuestas orientado a estudiantes en help.code.world.
Cómo empezar
Los usuarios pueden visitar code.world directamente; no se requiere descarga ni instalación para usar el servicio alojado. El repositorio está destinado a quienes desean bifurcar, modificar o contribuir al entorno.
Compilación y despliegue
Compilar y ejecutar CodeWorld se describe como extenso pero automatizado por scripts de instalación en el directorio raíz, que funcionan en la mayoría de las distribuciones de Linux, incluidas Debian, Ubuntu, RedHat y CentOS. Pasos: cambiar al directorio raíz del proyecto, ejecutar ./install.sh, luego ./run.sh, y acceder al sistema en localhost:8080. Después de los cambios, ./build.sh recompila CodeWorld en sí usando las herramientas y bibliotecas previamente instaladas, y luego ./run.sh inicia el servidor. También se documentan los comandos de compilación y ejecución con Docker, aunque el README dice que Docker aún no es el método de desarrollo recomendado y que el contenedor carece de acceso al ID de cliente, montaje compartido de NFS y otros pasos de configuración. Se señala que Stack no es compatible con las compilaciones locales y que actualmente no funciona como sustituto de los scripts de shell o Docker.
Autenticación
CodeWorld admite autenticación de Google, autenticación local o ejecución con la autenticación deshabilitada con funcionalidad reducida. Sin autenticación, los usuarios pueden escribir, compilar y ejecutar código, pero no pueden guardar ni gestionar proyectos y carpetas.
La autenticación de Google requiere una clave de API de Google almacenada en web/clientId.txt; la instancia en ejecución detecta los cambios en ese archivo. El README enlaza a la documentación de Google Cloud para crear un proyecto y un ID de cliente de OAuth, y señala que este es el mecanismo utilizado por el sitio oficial en vivo.
La autenticación local usa una base de datos SQLite3, almacena solo hashes de contraseñas BCrypt y utiliza autenticación sin estado basada en JWT. Se habilita cuando hay un archivo codeworld-auth.db presente en la raíz de la aplicación. La herramienta CLI codeworld-auth gestiona las cuentas: init-accounts crea una base de datos vacía, create-account crea un usuario con una contraseña generada aleatoriamente y un estado de cuenta como Expired, y otros subcomandos gestionan actualizaciones y eliminación. Se debe generar un secreto JWT en codeworld-auth.txt con generate-secret; el servidor no debe exponer este secreto.
Advertencias
En servidores virtuales, la RAM predeterminada suele ser insuficiente para GHC porque CodeWorld compila proyectos Haskell muy grandes durante la instalación. El README sugiere crear un archivo de intercambio (swap) de 2 GB con dd, mkswap y swapon; la instalación puede ser lenta pero debería tener éxito, y el archivo de intercambio normalmente se puede eliminar después de la primera ejecución del servidor, a menos que se pretendan usar programas muy grandes.
Contribuir
Contribuir implica aceptar un Acuerdo de Licencia de Colaborador, con detalles en CONTRIBUTING.md. Los errores y las solicitudes formales de funciones van al rastreador de problemas de GitHub.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.