Desarrollo de Maktor

Responder
Mensaje
Autor
Avatar de Usuario
quique
Mensajes: 720
Registrado: 30/03/2004 12:00 am
Ubicación: Por ahí

Desarrollo de Maktor

#1 Mensaje por quique » 08/11/2005 12:40 am

Hola a tod@s,

desgraciadamente, he tenido este fin de semana bastante tiempo para pensar/meditar sobre el tema del proyecto software, y esto es lo que creo:
1) El proyecto debe ser lo suficientemente sencillo para que los "no expertos" puedan participar

2) A la vez, lo suficientemente amplio para que bastante gente pueda aportar algo

3) Deben utilizarse herramientas libres y tender a ser multiplataforma

4) El objetivo primordial no es la aplicación a realizar sino que el proyecto sea educativo

He tomado estos dos requisitos como los unicos que realmente son importantes. Todos los demas, los he considerado secundarios.

Así, junto con las opiniones de todo el mundo, creo que lo ideal es realizar un proyecto al que llamo (de momento) "Maktor": un editor de makefiles.

En el proyecto, habrá una parte de procesado de texto que interprete un Makefile para ver que modulos incluye, para poder editar el Makefile. Habrá otra parte que pueda crear un nuevo makefile, a partir de un archivo de configuracion o algo así.

Primero, el proyecto puede ser desarrollado para trabajar en la consola, para posteriormente, realizar un interface gráfico.

Otra ampliacion será la posibilidad de exportar los Makefiles a otros formatos, como XML, HTML, etc, primero con desarrollos propios y luego con librerías.

Para el desarrollo en sí, habrá un coordinador/administrador (yo) y varios "programadores expertos" (a definir) para cada una de las partes que se desarrollen. Cada uno coordinará o dará apoyo a varios "programadores no expertos". Se trata de que no sean los expertos los que realmente tecleen el código, sino los "no expertos".

Repito, el principal objetivo es que el proyecto sea educativo y que todos podamos aprender algo.

Respecto al desarrollo: creo que es interesante que utilicemos una forma de desarrollo moderno: en esa dirección creo que lo mejor es que hagamos un proyecto "agil" basado en el método "eXtreme Programming (XP)".

Las herramientes a utilizar: En cuango a la gestión del proyecto, lo haremos en Source Forge. De ahí cada uno puede ir tomando la versión actual del código mediante CVS e ir enviando sus modificaciones. Para gestionar el proyecto en sí (dónde estamos, que puntos quedan por desarrollar, tests, documentación, etc), creo que Source Forge tiene herramientas propias, pero también estoy buscando algo que pueda ayudarnos con la XP antes citada. Otra herramienta que utilizaremos será una Wiki o FAQ en la que se explicarán más cosas sobre XP, CVS, Source Forge, etc..

El primer paso a dar es que envieis vuestros comentarios a este mensaje ASAP, contando que os parece y si algo os parece mal, el por qué.

Salu2
/* no comment */

Avatar de Usuario
Ercik
Mensajes: 24
Registrado: 29/10/2005 11:00 pm

#2 Mensaje por Ercik » 08/11/2005 8:03 am

:idea: Estoy de acuerdo, por fin se han tomado decisiones; en todo caso quique ingreso a la categoría de programadores no expertos; aún así el proyecto no debería ser tan abierto debe existir un poco más de restricción, restricción en cuánto a la continuidad del proyecto porque si programadores no expertos nuevos y/o recién llegados intentan aportar cuando el proyecto este con un 50% de avance, sólo retrasarán más el proyecto al tratar de ponerse al día.
Para solucionar ese problema propongo que el administrador del proyecto ponga fecha a la "inscripción" de colaboradores.

Avatar de Usuario
mbrenes
Mensajes: 81
Registrado: 02/10/2005 11:00 pm
Ubicación: Costa Rica
Contactar:

#3 Mensaje por mbrenes » 10/11/2005 3:09 pm

Estoy de acuerdo con la propuesta llevada hasta este momento, siempre como base algo "sencillo" para desarrollar pero ampliable y hasta donde puede tender a ser multiplataforma(en mi caso trabajo en Linux :P ), pero para que pueda aportar algo al proyecto aunque como la idea orig. del proyecto no es el codigo lo mas importante si no la organizacion para llevarlo a cabo.
Moises Brenes
http://mbrenes.wordpress.com/

Richard Stallman «It's GNU/Linux, dammit!»

mbrenes linux user #399265

Avatar de Usuario
rir3760
Mensajes: 7553
Registrado: 01/10/2004 11:00 pm
Ubicación: Mexico

Re: Desarrollo de Maktor

#4 Mensaje por rir3760 » 11/11/2005 4:35 am

quique escribió:desgraciadamente, he tenido este fin de semana bastante tiempo para pensar/meditar sobre el tema del proyecto software
Antes que nada pienso que lo mejor es, como ya lo indico Ercik, que alguien (en este caso tu como administrador del proyecto) tome decisiones en el caso de que no haya consenso ya que si tratamos de darle gusto a todo el mundo nunca vamos a empezar.

Por otra parte (y espero que no me tomen por necio) sigo pensando que la idea del preprocesador de texto es la mejor opcion.
quique escribió:1) El proyecto debe ser lo suficientemente sencillo para que los "no expertos" puedan participar
Con Maktor vamos, desde el principio, a enfrentarnos a un reto bastante interesante y que es realizar el 'parsing' de las 'translating units' (en buen cristiano archivos de codigo fuente .c) para construir una relacion de dependencias:
* Donde se encuentra la funcion de entrada (main).
* Que objetos/funciones se importan/exportan a otras UTs.
* Tomar en consideracion como las directivas del preprocesador de C afectan estas dependencias. En buen cristiano vamos a tener que realizar el parsing al menos de algunas directivas como #include, #define e #ifdef.
* Nuestro 'parser' debe verificar y reportar errores basicos como la falta de la funcion main, funciones no definidas, funciones con definiciones multiples, etc.

De nuevo el reto es interesante pero no es algo para un principiante, el menos no en mi opinion.
quique escribió:2) A la vez, lo suficientemente amplio para que bastante gente pueda aportar algo
El nucleo del preprocesador de texto se podria desarrollar 'a la Unix', esto es, como una aplicacion de consola cuya unica funcion (por lo menos al principio) seria procesar la entrada estandar y enviar el resultado a la salida estandar despues de procesar solo unas directivas basicas como define, ifdef e include.

Una vez conseguido esto si alguien quiere añadir alguna caracteristica de preprocesamiento que le parezca util ya sea en C estandar o como una extension especifica para su plataforma seria relativamente facil.

En cambio con Maktor esto es mas dificil (y nos va a llevar mas tiempo) ya que es un proyecto mas ambicioso.
quique escribió:4) El objetivo primordial no es la aplicación a realizar sino que el proyecto sea educativo
Con cualquiera de los proyectos vamos a aprender algo (espero).
quique escribió:Otra herramienta que utilizaremos será una Wiki o FAQ en la que se explicarán más cosas sobre XP, CVS, Source Forge, etc..
Aqui tampoco creo que tengamos problemas ya que Gorka y tu servidor ya tenemos algo de experiencia con el desarrollo de un wiki.

Algo que no se ha mencionado y que debes decidir antes de empezar el proyecto es el tipo de licencia que vamos a utilizar. Dos opciones viables son GPL 2.0 y MIT, si me dan a elegir yo prefiero esta ultima.

Por ultimo lo ideal seria que tomaras las decisiones que te parezcan correctas ASAP, esto para iniciar esta semana la discusion sobre los rasgos generales de la aplicacion.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

Avatar de Usuario
quique
Mensajes: 720
Registrado: 30/03/2004 12:00 am
Ubicación: Por ahí

#5 Mensaje por quique » 11/11/2005 8:18 am

sobre la dificultad del proyecto, no se trata de escribir un Makefile basándose en un listado de *.c o leyendo los archivos de una carpeta. Por lo menos en la primeras fases.

Al principio, se le pedirán al usuario que indique el compilador a usar, que parámetros usa, en qué carpeta están los includes y los fuentes, etc. A partir de esos datos, la aplicación genera un Makefile. El primer paso es generar un Makefile para una aplicación "Hola Mundo".

Posteriormente, se integrarán funcionalidades más complejas.

Por cierto, rir, no entiendo a qué te refieres con el ejemplo del "preprocesador de texto", puedes explicarte más?

Creo que la idea del wiki está bien: en cuanto se active, subo los primeros detalles.

Una pregunta a Gorka. Puedes instalar sw adicional en el servidor para llevar el desarrollo del proyecto? (XPWeb, lo puedes encontrar en SourceForge)

Sobre la licencia: será libre, aunque no sé exactamente cuál. No se si se aplica alguna "por defecto" en SourceForge, y no conozco las diferencias exactas entre la MIT y la GPL. Revisaré el tema.

Desde casa no suelo conectarme al foro, así que hasta el lunes.

Salu2
/* no comment */

Avatar de Usuario
rir3760
Mensajes: 7553
Registrado: 01/10/2004 11:00 pm
Ubicación: Mexico

#6 Mensaje por rir3760 » 12/11/2005 12:31 pm

quique escribió:Por cierto, rir, no entiendo a qué te refieres con el ejemplo del "preprocesador de texto", puedes explicarte más?
La idea es tener la capacidad de utilizar algunas de las caracteristicas comunes a los programadores de C en otro tipo de documentos, el caso mas comun es la generacion de paginas web.

Por ejemplo si estas desarrollando un tutorial sobre C en formato HTML y en cada pagina aparece tu nombre y direccion de correo electronico y en algun momento quieres cambiar esta direccion de correo tienes que:
1) Cambiar todos los documentos que incluyan la direccion de correo ya sea manualmente o mediante una aplicacion de busqueda y remplazo global.
2) En el caso de un PP para HTML solo tienes que cambiar la linea de texto que define la direccion de correo y generar de nuevo el tutorial completo lo que seria (al menos en teoria) un proceso totalmente automatico.

Nota: al parecer el foro no permite el uso de la etiqueta body, la remplace con B_O_D_Y.

Siguiendo esta idea el PP podria tomar como entrada el texto:

Código: Seleccionar todo

#define MENSAJE hola, mundo
<HTML>
<HEAD></HEAD>
<B_O_D_Y>

#insert MENSAJE

</B_O_D_Y>
</HTML>
Y generaria como salida el texto:

Código: Seleccionar todo

<HTML>
<HEAD></HEAD>
<B_O_D_Y>

hola, mundo

</B_O_D_Y>
</HTML>
Como puedes ver el proceso es casi identico al uso que le damos en C a la directiva #define y tiene las mismas ventajas.

Lo mismo ocurre con otras directivas comunes en C como #ifdef e #include, este es un ejemplo un poco mas extenso:

Código: Seleccionar todo

#define WIN32
<HTML>
<HEAD></HEAD>
<B_O_D_Y>
A continuacion se presenta un programa basico en 
C que permite verificar que hayamos configurado 
correctamente nuestro entorno o IDE:

#ifdef WIN32

<PRE>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   system("cls");
   printf("hola, mundo\n");
   
   return EXIT_SUCCESS;
}
</PRE>

#elif LINUX

<PRE>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   system("clear");
   printf("hola, mundo\n");
   
   return EXIT_SUCCESS;
}
</PRE>

#endif

</B_O_D_Y>
</HTML>
Y la salida que generaria el PP seria:

Código: Seleccionar todo

(HTML)
<HEAD></HEAD>
<B_O_D_Y>
A continuacion se presenta un programa basico en 
C que permite verificar que hayamos configurado 
correctamente nuestro entorno o IDE:

<PRE>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   system("cls");
   printf("hola, mundo\n");
   
   return EXIT_SUCCESS;
}
</PRE>

</B_O_D_Y>
</HTML>
Por cierto una aplicacion similar a la que tengo en mente es PPWizard.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

Avatar de Usuario
quique
Mensajes: 720
Registrado: 30/03/2004 12:00 am
Ubicación: Por ahí

#7 Mensaje por quique » 14/11/2005 12:07 am

En realidad, la idea del PP puede ser incluída en la aplicación. Yo puedo definir una estructura de "Makefile básico" como:

Código: Seleccionar todo

#Parametros definidos por el usuario
CC=COMPILADOR
CCPARMS=PARAMETROS
SRC=MIS_FUENTES
APP=MI_APLICACION

#Creacion de los objetos
OBJS=$(SOURCES:.c=.o)

#Compilar todo
all: $(SRC)
    $(CC) $(CCPARMS) -o $(APP) $(OBJS)
Los valores de COMPILADOR, PARAMETROS, MIS_FUENTES, MI_APLICACION pueden estar definidos en #defines en otro archivo o venir de entrada de usuario. A partir del "makefile básico" y de esas entradas, pues tenemos un Makefile.

También se puede definir el makefile básico NO en el programa, sino que se lea de un archivo, añadiendo más opciones de preprocesado de texto.

Así, se tienen:
- Una parte que lee el makefile y muestra qué parámetros necesitamos
- Otra parte que toma los parámetros necesarios por teclado y ventana
- Una tercera parte que toma los parámetros de un archivo externo

Yo creo que la aplicación no está muy lejos de ser un preprocesador de texto.

Por cierto, esta discusión es ya parte del desarrollo, para la definición de las "descripciones de usuario" que se indican en XP (ver otro mensaje en el foro), por lo que vuestros comentarios son muy útiles, respecto qué y cómo debería ser la aplicación.

Salu2
/* no comment */

Avatar de Usuario
rir3760
Mensajes: 7553
Registrado: 01/10/2004 11:00 pm
Ubicación: Mexico

#8 Mensaje por rir3760 » 14/11/2005 8:33 am

quique escribió:En realidad, la idea del PP puede ser incluída en la aplicación.

[snip]

También se puede definir el makefile básico NO en el programa, sino que se lea de un archivo, añadiendo más opciones de preprocesado de texto.

Así, se tienen:
- Una parte que lee el makefile y muestra qué parámetros necesitamos
- Otra parte que toma los parámetros necesarios por teclado y ventana
- Una tercera parte que toma los parámetros de un archivo externo

Yo creo que la aplicación no está muy lejos de ser un preprocesador de texto.
Me parece que nos estamos confundiendo un poco (por lo menos yo :wink:) con las definiciones:

* Con "Generador de Makefiles" tengo en mente una aplicacion donde la operacion principal es el analisis sintactico de las UT's: cada archivo de codigo fuente se analiza para determinar que objetos y funciones define o exporta y que objetos y funciones definidas en otros archivos utiliza o importa.

Es en base a estas relaciones entre los archivos de codigo fuente que se construye el Makefile.

Tambien se podrian dejar estas opciones para una fase posterior del desarrollo de la aplicacion y realizar al inicio un proceso digamos mas "manual", que me parece es tu idea con una aplicacion que, a grandes rasgos:
1) Defina un estado inicial.
2) Actualize ese estado mediante:
2.1) archivo(s) de configuracion.
2.2) la linea de comandos.
2.3) de forma interactiva.
3) Procese ese estado inicial.
4) Genere el archivo Makefile.


* Con "Preprocesador de Texto" lo que pienso es en una aplicacion que esta enfocada principalmente en el proceso del texto en base a ciertas directivas como define, ifdef/ifndef e include pero no en el analisis de la dependencia entre archivos, eventualmente se añadiria soporte para verificar que no existan dependecias circulares en la forma: A incluye B ==> B incluye C ==> C incluye A pero este analisis seria muy basico y seria el unico analisis de dependencias, al menos en la fase inicial de desarrollo.


Por lo mismo me parece que lo mejor es desarrollar una aplicacion con un objetivo unico y bien definido. Cuando esta aplicacion funcione de una forma aceptable podriamos replantearlos si la adicion de ciertas opciones es viable.

En resumen me parece que lo correcto es que tu (como administrador del proyecto) decidas (mientras mas pronto mejor) si vamos a desarrollar el "Generador de Makefiles" o el "Preprocesador de Texto" y en base a tu decision empezariamos a discutir/plantear detalles ya mas especificos del proyecto.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

Avatar de Usuario
Ercik
Mensajes: 24
Registrado: 29/10/2005 11:00 pm

Re: Desarrollo de Maktor

#9 Mensaje por Ercik » 14/11/2005 11:03 am

quique escribió: Así, junto con las opiniones de todo el mundo, creo que lo ideal es realizar un proyecto al que llamo (de momento) "Maktor": un editor de makefiles.
Bueno creo que ya estuvo decidido desde hace un buen rato... 8) ; En finnn un poco de debate nunca esta demás.

Ahora creo ya toca de una vez por todas montar el proyecto en base a la metodología XP planteada por quique, por otra parte no estaría demás que a medida que se cree el proyecto se pongan como referencia algunos links, faqs u otros medios de información que nos ayuden a "nosotros" los no expertos a seguir con el ritmo del proyecto.

gorkau
Site Admin
Mensajes: 396
Registrado: 13/08/2002 11:00 pm
Ubicación: Bilbao
Contactar:

#10 Mensaje por gorkau » 18/11/2005 4:05 pm

Un paso más: ya han aceptado el proyecto "Maktor" en SourceForge.

https://sourceforge.net/projects/maktor

Quique, cuando puedas date de alta en el proyecto para que te ponga como administrador.

¿Cuál sería el siguiente paso?

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado