1. Introducción

Este documento describe cómo construir el software LinuxCNC y la documentación desde las fuentes. Esto es útil principalmente si eres un desarrollador que está modificando LinuxCNC. También puede ser útil si eres un usuario que está probando ramas de desarrollo, aunque también se tiene la opción de instalar paquetes únicos Debian desde buildboot: (http://buildbot.linuxcnc.org) o como un paquete normal de tu distribución Linux (https://tracker.debian.org/pkg/linuxcnc). Ciertamente, esta sección también existe por que LinuxCNC es un esfuerzo comunitario y te alentamos a contribuir al desarrollo de LinuxCNC. Generalmente, querrás compilar LinuxCNC por ti mismo para un acceso funcional inmediato

  • para un nuevo desarrollo de LinuxCNC o

  • un desarrollo nuevo que quizás quieras contribuir a LinuxCNC o ayudar a otros a completarlo.

Por lo tanto, podrías portar LinuxCNC a una nueva distribución Linux, o como es común, un desarrollador reacciona a un problema que has reportado y cuya solución quieres probar. Cualquier cambio como tal no tendrá buildbot de ayuda, o esa ayuda estará desfasada, dependiendo de la revisión de alguien mas que no quieras esperar o eres el único individuo con un hardware en particular para probar el código.

Además de los programas que controlan tu máquina que están construidos desde el árbol fuente, también puedes construir los mismos archivos PDF y/o HTML que seguramente has encontrado en línea en https://linuxcnc.org/documents/.

Si deseas contribuir a LinuxCNC pero no estas seguro de dónde empezar, por favor considera seriamente en contribuir a la documentación. Cada quien encuentra siempre algo que mejorar, y si solo dejas en el texto un "ARREGLAME: con un comentario" como referencia para ti y otros de revisar esa sección después. Además, hay traducciones a otros lenguajes distintos al inglés en https://hosted.weblate.org/projects/linuxcnc que muy probablemente se beneficiarán de tu escrutinio.

2. Descargando el árbol fuente

El repositorio git del proyecto LinuxCNC está en https://github.com/LinuxCNC/linuxcnc. Github es un popular servicio de alojamiento git y un sitio web para compartir código.

Para obtener el árbol fuente tienes dos opciones:

Descargar tarball

En la página del proyecto LinuxCNC en Github encontrarás una referencia a "releases" o "tags", haz clic en esa liga y descarga el archivo .tar mas reciente. Notarás que el archivo esta comprimido como .tar.xz o tar.gz. Este archivo comúnmente conocido como un "tarball" es un archivo muy similar a un .zip. Tu escritorio de Linux sabrá como tratar ese archivo cuando hagas doble clic sobre él.

Prepara una copia local del repositorio de LinuxCNC

Primero instalarías en tu máquina la herramienta "git" si no esta disponible (sudo apt Install git). Luego prepara una instancia local del árbol fuente como a continuación: .

$ git clone https://github.com/LinuxCNC/linuxcnc.git linuxcnc-source-dir

. El primer argumento al comando git se explica por si mismo: Esto es lo que se llama un "clon" del repositorio de LinuxCNC. La ventaja es que este clon local mantiene la comunicación sobre los cambios que hayas decidido hacer en el árbol fuente.

GitHub es una infraestructura por sí solo y se explica a profundidad en otros lados. Sólo para motivarte, si no lo sabes, ofrece crear un clon para ti y hacer esa instancia disponible al público. GitHub se refiere a tal instancia adicional de otro repositorio como un "fork" (bifurcación). Puedes crear fácilmente (sin ningún costo) una bifurcación del repositorio git de LinuxCNC en GitHub, y usarla para dar seguimiento y publicar tus cambios. Después de crear tu propia bifurcación de LinuxCNC en GitHub, clónala en tu computadora de desarrollo y procede a hackear como de costumbre.

Nosotros, el proyecto LinuxCNC, esperamos que comparta sus cambios, para que la comunidad pueda beneficiarse de su trabajo. GitHub hace que compartir sea muy fácil: Después de pulir sus cambios y añadirlos a su bifurcacion github, envíenos una solicitud de extracción.

2.1. Inicio rápido

Si usted es un impaciente, intente esto:

$ git clone https://github.com/LinuxCNC/linuxcnc.git linuxcnc-source-dir
$ cd linuxcnc-source-dir/src
$ ./autogen.sh
$ ./configure --with-realtime=uspace
$ make

¡Eso probablemente fallará!. No es culpa suya; solo significa que debe leer todo este documento para averiguar cómo solucionar tus problemas. Especialmente la sección sobre Satisfacer Dependencias de Construcción.

Si estás manejando un sistema con capacidad de tiempo real (como una instalación desde la imagen de LinuxCNC Live/Install, ve la sección Tiempo Real más abajo); se necesita un paso de compilación adicional:

$ sudo make setuid

Después de haber compilado con éxito LinuxCNC, es hora de ejecutar las pruebas:

$ source ../scripts/rip-environment
$ runtests

¡Esto también podría fallar! Lea todo este documento, pero especialmente la sección en Configuración del entorno de prueba.

3. Plataformas compatibles

El proyecto LinuxCNC apunta a distribuciones modernas basadas en Debian, que incluyen Debian, Ubuntu y Mint. Continuamente probamos en las plataformas listadas en http://buildbot.linuxcnc.org.

LinuxCNC compila en la mayoría de las otras distribuciones de Linux, aunque la gestión de dependencias será más manual y menos automática. Siempre son bienvenidos parches para mejorar la portabilidad a nuevas plataformas .

3.1. En tiempo real

LinuxCNC es un controlador de máquina herramienta, y requiere una plataforma en tiempo real para hacer este trabajo. Esta versión de LinuxCNC soporta las plataformas siguientes. Las primeras tres en la lista son sistemas operativos de tiempo real:

RTAI

De https://www.rtai.org. Del archivo de Debian en https://linuxcnc.org hay disponible un kernel de Linux con el parche RTAI. Vea Obtener LinuxCNC para las instrucciones de instalación.

Xenomai

De https://xenomai.org. Tendrá que compilar u obtener un kernel Xenomai por usted mismo.

Preempt-RT

De https://rt.wiki.kernel.org. Un kernel de Linux con el parche Preempt-RT, que está disponible ocasionalmente en el archivo Debian en https://www.debian.org, y desde la "máquina wayback" en https://snapshot.debian.org.

Tiempo diferido

LinuxCNC también puede compilarse y ser ejecutado en plataformas en tiempo no-real, como una instalación normal de Debian o Ubuntu sin ningún kernel de tiempo real especial.
En este modo LinuxCNC no es muy útil para controlar máquinas herramientas, pero es útil para simular la ejecución de código G y para probar partes del sistema en tiempo no-real (como interfaces de usuario, algunos tipos de componentes y controladores de dispositivo).
Para hacer uso de las capacidades de tiempo real de LinuxCNC, ciertas partes de él necesitan ejecutarse con privilegios de root. Para habilitar dichas partes, ejecuta este comando extra después del make que compila LinuxCNC:

$ sudo make setuid

4. Build modes

Hay dos modos de compilar LinuxCNC en una máquina: El modo amigable con el desarrollador "ejecución en el sitio” (run in place o RIP) y el modo amigable con el usuario empaquetado Debian.

4.1. Building for Run In Place

En una compilación Run-In-Place, los programas de LinuxCNC se compilan desde las fuentes y luego se ejecuta directamente desde el directorio de compilación. Nada queda instalado fuera del directorio de compilación. Es fácil y rápido, y adecuado para una iteración rápida de cambios. El conjunto de pruebas de LinuxCNC solo se corre en una compilación Run-In-Place. La mayoría de los desarrolladores compilan primordialmente con este modo.

Para una compilacion Run-In-Place, sigua los pasos en la sección Inicio rápido en la parte superior de este documento, posiblemente con diferentes argumentos para src/configure y` make`.

4.1.1. Argumentos src/configure

El script src/configure configura cómo será compilado el código fuente. Admite muchos argumentos opcionales; para enlistarlos todos ejecuta:

$ cd directorio-codigo-fuente-linuxcnc/src
$ ./configure --help

Los argumentos más utilizados son:

--with-realtime=uspace

Compilar para cualquier plataforma en tiempo real, o para tiempo diferido. Los ejecutables LinuxCNC resultantes se ejecutarán tanto en un kernel de Linux con parches Preempt-RT (que proporcionan control de la máquina en tiempo real) como en un kernel de Linux original (sin parches) (que proporciona simulación de código G pero sin control de máquina en tiempo real).

Si los archivos de desarrollo están instalados para Xenomai (típicamente del paquete libxenomai-dev) o RTAI (típicamente desde un paquete con un nombre que comienza por "rtai-modules"), también estará habilitado el soporte para estos kernels en tiempo real.
--with-realtime=/usr/realtime-$VERSION

Compilación para la plataforma RTAI en tiempo real utilizando el antiguo modelo "kernel realtime". Esto requiere tener un kernel RTAI y los módulos RTAI instalados en /usr/realtime-$VERSION. Los ejecutables LinuxCNC resultantes solo se ejecutarán en el kernel RTAI especificado. A partir de LinuxCNC 2.7, esto produce el mejor rendimiento en tiempo real.

--enable-build-documentation

Build the documentation, in addition to the executables. This option adds significantly to the time required for compilation, as building the docs is quite time consuming. If you are not actively working on the documentation you may want to omit this argument.

--disable-build-documentation-translation

Deshabilitar la traducción de documentación para todos los lenguajes disponibles. La construcción de la documentación traducida toma una enorme cantidad de tiempo, así que se recomienda omitirla si no es realmente necesaria.

4.1.2. make arguments

The make command takes two useful optional arguments.

Parallel compilation

make admite un argumento opcional -jN (donde N es un número). Esto permite compilación en paralelo con N procesos simultáneos, que puede acelerar significativamente tu construcción.

Un valor útil para N es la cantidad de CPU’s en su sistema de compilación.

Usted puede averiguar el número de CPUs ejecutando nproc.

Building just a specific target

If you want to build just a specific part of LinuxCNC, you can name the thing you want to build on the make command line. For example, if you are working on a component named froboz, you can build its executable by running:

> cd directorio-codigo-fuente-linuxcnc/src
> make ../bin/froboz

4.2. Construyendo paquetes Debian

Al construir paquetes Debian, los programas LinuxCNC se compilan desde el código fuente y luego se almacenan en un paquete Debian, completado con información de dependencias. Este proceso incluye de forma predeterminada la construcción de la documentación, lo cual toma su tiempo debido a toda la E/S para muchos idiomas, pero no puede ser omitida. Entonces LinuxCNC es instalado como parte de esos paquetes en la misma máquina o en cualquier máquina con la misma arquitectura a la que se copien los archivos .deb. LinuxCNC no puede ejecutarse hasta que se instalen los paquetes Debian en una máquina destino, y hasta entonces estarán disponibles los ejecutables en /usr/bin y /usr/lib, tal y como otro software del sistema.

Este modo de compilación es principalmente útil cuando se empaqueta el software para entrega a usuarios finales, o para construir el software para una máquina que no tiene instalado el entorno de compilación, o que no tiene acceso a Internet.

Si usted es un impaciente, intente esto:

$ sudo apt-get install build-essential
$ git clone https://github.com/LinuxCNC/linuxcnc.git directorio-fuente-linuxcnc
$ cd directorio-fuente-linuxcnc/src
$ ./debian/configure
$ sudo apt-get build-dep .
$ DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -uc -B

La construcción de paquetes Debian se hace con la herramienta dpkg-buildpackage que viene en el paquete dpkg-dev. Para ejecutarla se tiene una serie de pre-requisitos que se detallan a continuación: * se debe instalar la infraestructura general de construcción, p. ej. compiladores, etc. * deben estar instaladas las dependencias de compilación, p. ej. los archivos de encabezados para las librerías de código externo utilizadas, como se describe en la sección Satisfacer dependencias de construcción. * el archivo que describe el paquete debe estar completado y en el directorio debian

Las herramientas de compilación han sido reunidas en un paquete virtual nombrado build-essential. Para instalarlo ejecute:

$ sudo apt-get install build-essential

Once those prerequisites are met, building the Debian packages consists of two steps.

The first step is generating the Debian package scripts and meta-data from the git repo by running this:

$ cd linuxcnc-dev
$ ./debian/configure
Nota

The debian/configure script is different from the src/configure script!

El script debian/configure acepta argumentos diferentes dependiendo de la plataforma en/para la que se está compilando; ver la sección argumentos debian/configure. Esta predeterminado para correr LinuxCNC es espacio de usuario ("uspace"), esperando que el kernel preempt_rt minimice latencias.

Once the Debian package scripts and meta-data are configured, build the package by running dpkg-buildpackage:

$ dpkg-buildpackage -b -uc
Nota

Se necesita que dpkg-buildpackage se ejecute desde la raíz del árbol de fuentes, el cual podrías haber nombrado directorio-codigo-fuente-linuxcnc, y no desde directorio-codigo-fuente-linuxcnc/debian.
dpkg-buildpackage toma un argumento opcional ``-j``N (donde N es un número). Esto habilita la ejecución de múltiples tareas simultáneamente.

4.2.1. Argumentos debian/configure de LinuxCNC

El árbol de fuentes de LinuxCNC tiene un directorio debian con toda la información de cómo armar el paquete Debian, pero algunos archivos esenciales solo se distribuyen como plantillas. La secuencia de comandos debian/configure prepara esas instrucciones de armado para las utilerías de empaquetamiento Debian habituales y por lo tanto deben ser ejecutadas antes que dpkg-checkbuilddeps o dpkg-buildpackage.

La secuencia de comandos debian/configure admite un solo argumento que especifica la subyacente plataforma de tiempo real o de tiempo no-real para la que se compila. Los valores normales para este argumento son:

no-docs

Saltar construcción de documentación.

uspace

Configure the Debian package for Preempt-RT realtime or for non-realtime (these two are compatible).

noauto
rtai
xenomai

Normally, the lists of RTOSes for uspace realtime to support is detected automatically. However, if you wish, you may specify one or more of these after uspace to enable support for these RTOSes. Or, to disable autodetection, specify noauto.

If you want just the traditional RTAI "kernel module" realtime, use -r or $KERNEL_VERSION instead.

rtai=<package name>

Si el paquete de desarrollo para RTAI, lxrt, no comienza con "rtai-modules", o si el primer paquete de este tipo aparece en la búsqueda de apt-cache no es el deseado, especifique explícitamente el nombre del paquete.

-r

Configure the Debian package for the currently running RTAI kernel. You must be running an RTAI kernel on your build machine for this to work!

$KERNEL_VERSION

Configura el paquete Debian para la versión de kernel RTAI especificada (por ejemplo, "3.4.9-rtai-686-pae"). Los encabezados del kernel del paquete Debian coincidente deben estar instalados en su máquina de compilación (p. ej. "linux-headers-3.4.9-rtai-686-pae"). Tenga en cuenta que puede construir LinuxCNC en esta configuración, pero si no está ejecutando el kernel RTAI coincidente, no podrá ejecutar LinuxCNC, incluyendo el conjunto de pruebas.

4.2.2. Satisfacer dependencias de compilación

En las plataformas basadas en Debian, proporcionamos metadatos de empaquetado que saben qué paquetes de software externos deben instalarse para compilar LinuxCNC. Esas son referidas como dependencias de compilación de LinuxCNC, p. ej. aquellos paquetes que deben estar disponibles de tal manera que

  • la compilación se exitosa y

  • la compilación pueda compilarse reproduciblemente.

Puedes usar estos metadatos para enlistar fácilmente los paquetes requeridos faltantes en tu sistema de compilación. Primero, ve al árbol de fuentes LinuxCNC e inicia su auto-configuración predeterminada, si aún no se ha realizado:

$ cd linuxcnc-dev
$ ./debian/configure

Esto preparará el archivo debian/control que contiene la lista de paquetes Debian a crear con la dependencias en tiempo de ejecución para esos paquetes y, para nuestra causa, las dependencias de compilación para aquellos paquetes a ser creados.

La manera más directa de instalar todas esas dependencias de compilación es simplemente ejecutar (desde el mismo directorio):

sudo apt-get build-dep .

la cual instalará todas las dependencias requeridas, aún no instaladas, pero disponibles. El . es parte de la línea de comandos, p. ej. una instrucción para obtener a mano las dependencias para el árbol de fuentes, no para las dependencias de otro paquete. Esto completa la instalación de dependencias de compilación.

El resto de esta sección describe un enfoque semiautomático. La lista de dependencias en debian/control es larga y es tedioso comparar el estado actual de los paquetes ya instalados. Los sistemas Debian proporcionan un programa llamado dpkg-checkbuilddeps que analiza los metadatos del paquete y compara los paquetes enumerados como dependencias de compilación contra la lista de paquetes instalados, y te dice lo que falta.

Primero, instala el programa dpkg-checkbuilddeps ejecutando:

$ sudo apt-get install dpkg-dev

Esto genera el archivo debian/control en un formato legible para el usuario yaml, el cual enlista las dependencias de compilación cercanas a lo más alto. Puedes usar estos metadatos para enlistar los paquetes requeridos faltantes en tu sistema de compilación. Puedes decidir inspeccionar manualmente esos archivos si tienes un buen entendimiento de lo que ya esta instalado.

Alternativamente, los sistemas Debian proporcionan un programa llamado dpkg-checkbuilddeps que analiza los metadatos del paquete y compara los paquetes enlistados como dependencias de compilación contra la lista de paquetes instalados, y te dice qué falta. Además, dpkg-buildpackage te informará de lo que falta, y estará bien. Sin embargo, reportará las dependencias de compilación faltantes solo después de que se hayan aplicado automáticamente los parches del directorio debian/patches (si hay alguno). Si eres nuevo en la gestión de versiones en Linux y git, un inicio desde cero puede ser preferible para evitar complicaciones.

Se le puede pedir al programa dpkg-checkbuilddeps (también del paquete dpkg-dev que se instala como parte de build-essential-dependencies) que haga su trabajo (ten en cuenta que necesita ser ejecutado desde el directorio directorio-codigo-fuente-linuxcnc, no desde directorio-codigo-fuente-linuxcnc/debian):

$ dpkg-checkbuilddeps

Esto emitirá una lista de paquetes necesarios para compilar LinuxCNC en tu sistema, pero que aún no están instalados. Ahora puedes instalar las dependencias de compilación faltantes de forma

manual

Se instalan todas con sudo apt-get install, seguido de los nombres de los paquetes. Puedes volver a ejecutar dpkg-checkbuilddeps cuando quieras para enlistar los paquetes faltantes, lo cual no tiene efecto en el árbol de fuentes.

automatizada

Ejecute sudo apt build-dep . .

En caso de duda sobre lo que trae un paquete en particular de una dependencia de compilación, revisa la descripción del paquete con ``apt-cache show``nombre-de-paquete.

4.2.3. Opciones para dpkg-buildpackage

Para un armado de paquete típico de Debian, ejecutarías dpkg-buildpackage sin argumentos. Como si señaló anteriormente, el comando tiene dos opciones extras a pasarle. Como en todas las buenas herramientas de Linux, la página del manual tiene todos los detalles con man dpkg-buildpackage.

-uc

No firmar digitalmente los binarios resultantes. Querrás firmar tus paquetes con una llave GPG tuya solo si quieres distribuirlo a otros. El no tener la opción establecida y fallar la firma del paquete no afectará el archivo .deb.

-b

Solo compila los paquetes dependientes de arquitectura (como los binarios de linuxcnc y GUIs). Esta es muy útil para evitar compilar lo que es dependiente de hardware. Para LinuxCNC, es la documentación, la cual esta disponible en línea de todos modos.

Si llegaras a tener dificultades con la compilación, revisa el foro de LinuxCNC en línea.

Actualmente esta surgiendo el soporte de la variable de ambiente DEB_BUILD_OPTIONS. Se le puede asignar

nodocs

para omitir la construcción de la documentación, preferentemente usa en su lugar la bandera -B de dpkg-buildpackage.

nocheck

para omitir las auto-pruebas del proceso de compilación de LinuxCNC. Esto ahorra algo de tiempo y reduce la demanda de algunos paquetes de software que pudieran no estar disponibles para tu sistema. Por ejemplo, el xvfb en particular. No deberías establecer esta opción para tener más confianza en el desempeño esperado de tu compilación a menos que caigas en dificultades meramente técnicas con las dependencias de software específicas para pruebas.

Una variable de ambiente puede ser establecida junto con la ejecución del comando, p. ej.

DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -uc -B

combinará todas las opciones presentadas en esta sección.

4.2.4. Instalando paquetes Debian auto-compilados

Un paquete Debian puede ser reconocido por su extensión .deb. La herramienta que lo instala es dpkg y es parte de toda instalación Debian. Los archivos .deb creados por dpkg-buildpackage se encuentran en el directorio arriba del directorio-codigo-fuente-linuxcnc, p. ej. en ... Para ver qué archivos vienen en un paquete ejecuta

dpkg -c ../linuxcnc-uspace*.deb

La versión de LinuxCNC será parte del nombre del archivo, la que deberá estar en el lugar del asterisco. Pueden haber demasiados archivos enlistados como para que quepan en tu pantalla. Si no puedes hacer desplazamiento hacia arriba en tu terminal, agrega | more al comando para que su salida pase por lo que se llama un "paginador", del cual sales presionando la tecla "q".

Para instalar los paquetes ejecuta

sudo dpkg -i ../linuxcnc*.deb

5. Setting up the environment

This section describes the special steps needed to set up a machine to run the LinuxCNC programs, including the tests.

5.1. Increase the locked memory limit

LinuxCNC intenta mejorar su latencia en tiempo real bloqueando la memoria que utiliza en la RAM. Hace esto para evitar que el sistema operativo intercambie LinuxCNC al disco, lo que tendría malos efectos sobre la latencia. Normalmente, bloquear memoria en RAM es mal visto, y el sistema operativo pone un límite estricto sobre cuánta memoria se le permite bloquear a un usuario.

When using the Preempt-RT realtime platform LinuxCNC runs with enough privilege to raise its memory lock limit itself. When using the RTAI realtime platform it does not have enough privilege, and the user must raise the memory lock limit.

If LinuxCNC displays the following message on startup, the problem is your system’s configured limit on locked memory:

RTAPI: ERROR: failed to map shmem
RTAPI: Locked memory limit is 32KiB, recommended at least 20480KiB.

To fix this problem, add a file named /etc/security/limits.d/linuxcnc.conf (as root) with your favorite text editor (e.g., sudo gedit /etc/security/limits.d/linuxcnc.conf). The file should contain the following line:

* - memlock 20480

Log out and log back in to make the changes take effect. Verify that the memory lock limit is raised using the following command:

$ ulimit -l

6. Compilación en Gentoo

Es posible compilar en Gentoo, pero sin soporte. Asegúrate que ejecutas un perfil de escritorio. Este proyecto usa el conjunto de Widgets Tk, asciidoc y tiene algunas otras dependencias; deben ser instaladas como root:

~ # euse -E tk imagequant
~ # emerge -uDNa world
~ # emerge -a dev-libs/libmodbus dev-lang/tk dev-tcltk/bwidget dev-tcltk/tclx
~ # emerge -a dev-python/pygobject dev-python/pyopengl dev-python/numpy
~ # emerge -a app-text/asciidoc app-shells/bash-completion

Puedes cambiarte de vuelta a un usuario normal para la mayoría del resto de la instalación. Como ese usuario, crea un ambiente virtual para pip y luego instala los paquetes pip:

~/src $ python -m venv   --system-site-packages ~/src/venv
~/src $ . ~/src/venv/bin/activate
(venv) ~/src $ pip install yapps2
(venv) ~/src $

Entonces puedes continuar normalmente:

(venv) ~/src $ git clone https://github.com/LinuxCNC/linuxcnc.git
(venv) ~/src $ cd linuxcnc
(venv) ~/src $ cd src
(venv) ~/src $ ./autogen.sh
(venv) ~/src $ ./configure --enable-non-distributable=yes
(venv) ~/src $ make

No hay necesidad de ejecutar "make suid", solo asegúrate que tu usuario está en el grupo "dialout". Para arrancar linuxcnc, debes estar en el Ambiente Virtual Python y configurar el ambiente linuxcnc:

~ $ . ~/src/venv/bin/activate
(venv) ~ $ . ~/src/linuxcnc/scripts/rip-environment
(venv) ~ $ ~/src/linuxcnc $ scripts/linuxcnc

7. Options for checking out the git repo

The Quick Start instructions at the top of this document clone our git repo at https://github.com/LinuxCNC/linuxcnc.git. This is the quickest, easiest way to get started. However, there are other options to consider.

7.1. Bifurcación en Github

El repositorio git del proyecto LinuxCNC está en https://github.com/LinuxCNC/linuxcnc. GitHub es un popular servicio de alojamiento git y un sitio web para compartir código. Puedes crear fácilmente (y sin costo) una bifurcación (una segunda instancia con una copia que tú controlas) del repositorio de git de LinuxCNC en GitHub. Entonces podrás usar esa bifurcación para rastrear y publicar tus cambios, recibir comentarios a tus cambios y aceptar parches de la comunidad. .

Después de crear tu propia bifurcación en GitHub de LinuxCNC, clónala en tu computadora de desarrollo y procede con tu hackeo como de costumbre.

Nosotros, el proyecto LinuxCNC, esperamos que compartas tus cambios, para que la comunidad pueda beneficiarse de tu trabajo. GitHub hace que compartir sea muy fácil; después de pulir tus cambios y añadirlos a tu bifurcación GitHub, envíanos una solicitud de extracción.