¿Qué es JavaMexico 2.0?

Estamos en proceso de planeación para un nuevo sistema para manejar este sitio. Será un proyecto obviamente hecho en Java, será software libre para que otras comunidades lo puedan utilizar y adaptar a sus necesidades, y será hecho por miembros de esta comunidad.

Para poder empezar, aparte de la planeación de base de datos (que ya tenemos como guía la base de datos actual, a fin de cuentas), necesitamos definir algunas cosas:

  • Un nombre para el proyecto (se puede quedar como JavaMéxico o se puede llamar otra cosa, porque esto va a ser una aplicación que se pueda usar para otras cosas con algunas modificaciones)
  • Especificación detallada. Aunque podemos empezar simplemente con clonar la funcionalidad actual, creo que es mejor que aprovechemos para agregar algunas características que pueden ser muy útiles.
  • Tecnologías. Donde creo que nos vamos a estar un buen rato, decidiendo el framework web a usar, el ORM, etc etc.
  • Plan de migración de datos. Porque la base de datos seguramente no va a quedar igual que la actual, tendremos que migrar los datos al nuevo sistema.
  • Plan de releases. Tal vez no tengamos que terminar todo lo que se defina inicialmente para poder salir al aire sino que se puedan hacer releases previos. Pero como mínimo se tiene que tener la funcionalidad actual para poder migrar datos y ya no tener que regresar al sistema actual.
  • Integrantes, y la manera en que vamos a trabajar sobre el proyecto.

El repositorio ya se decidió: el proyecto estará hospedado en Google Code. Para lo demás, pues creo que iremos definiendo las cosas aquí mismo. La idea es que este proyecto sirva también como referencia para las dudas que mucha gente viene a preguntar aquí y además que sirva como ejemplo de lo que una comunidad puede lograr cuando se lo propone.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de benek

Lugar de discusión del proyecto.

También estaría interesante definir el lugar donde discutiremos el proyecto, quizá podamos abrir una nueva sección de los foros dedicada a este proyecto ya que vamos a ver varios temas.

¿Qué opinan?

Imagen de ezamudio

De acuerdo

para poder seguir aquí mismo, tener una sección dedicada a esto.

Imagen de 1a1iux

Interesante

Pero, tengo una duda. Porqué no pusieron este mensaje como un post en la página principal? Aquí como que está "escondido". De suerte yo lo ví :P

Sale y vale
Byte

Imagen de ezamudio

top secret

es que se trata de un proyecto ultrasecreto... ahora que lo descubriste, en cualquier momento estaran agentes tocando a tu puerta.

No, pero vamos poner una seccion especial para esto; aunque vamos a aceptar sugerencias de los usuarios del sitio, no vamos a poder darle gusto a todos, pero iremos informando del progreso y podremos llevar algunas discusiones tecnicas de manera publica en esa seccion del foro. Creo que sera interesante para todos poder ver el progreso de un proyecto real, e incluso para los que ya han visto algo similar, pues ver el progreso y la interaccion de un equipo geograficamente disperso realizando un proyecto de software libre.

Imagen de benek

Discusión

Yo creo que como en este momento lo que se pretende es crear discusión sobre como será el proyecto debe ir aquí en los foros. Una vez que tengamos definido lo principal ya lo anunciamos en la página principal :-)

Le vas a entrar o qué Laliux?

Imagen de 1a1iux

Ahhh Oohhh..

Bien bien,

Pues si hay chance, seguro que le entro. Por lo menos para echarles porras! jajaja

Quizás alguna que otra ideo-ta, quizás algún mal consejo, quizás un poco de código..

"perhaps, perhaps, perhaps..." :P

En fin, por aquí los sigo leyendo...

Sale y vale
Byte

Imagen de ezamudio

Nueva funcionalidad

Yo lo que quiero meter de nueva funcionalidad es principalmente algo como una mezcla entre la mecánica de Slashdot (moderación de los comentarios) y la de StackOverflow (dar votos positivos o negativos a los comentarios y además también a los foros). Una moderación positiva a los comentarios de un usuario le da reputación positiva a ese usuario, al igual que moderación positiva a lo que ponga en un foro. Tal vez los blogs no requieran moderación, o en todo caso podríamos ver la posibilidad de dar moderación positiva pero no negativa a los blogs (aunque si permitimos moderación positiva, lo justo es permitir moderación negativa).

Imagen de iberck

+1

+1
Anotenme al proyecto, haré lo que pueda en mis ratos libres...
Lo que a mi me gustaría tomar de stackoverflow es la reputación (por niveles) a cada usuario en base a sus puntos (basados en comentarios en el sitio y votos que tenga)
En cuanto al framework web yo propongo tapestry5

Imagen de ezamudio

T5

No ps yo también propongo Tapestry 5 :)
Lo de StackOverflow de la reputación de usuarios basada en los votos que obtiene creo que estaría muy bueno. Que por cierto para evitar trolls lo que hacen es que cualquiera puede dar un voto bueno, pero para dar un voto malo tienes ya que tener cierta reputación; así si eres un troll y nadie te ha dado suficientes votos buenos pues no vas a poder estar dando votos malos a todo.

Imagen de iberck

Las ventajas que tendríamos

Las ventajas que tendríamos con T5 frente a otros frameworks web es la de programar por componentes y la velocidad de programación (En un rato que tenga, publico un post de cómo trabajar con un plugin que hice de T5 para Netbeans)

En cuanto a tecnologías, creo que independiente al framework web que utilicemos es buena opción maven para no pelearnos con qué IDE utilizar
- Maven 2.0

Imagen de jali

Apuntenme

Pues esta super chida la idea y pues me gustaría entrarle y apoyar en lo que se pueda.
y Si... tapestry 5 estaría bien.

Saludos

Imagen de Nopalin

mas descripción?

Pues a mí tambien me gustaria participar en lo que pueda, no conozco ninguna de las tecnologias que mencionaron pero pues igual y se aprenden, nunca estan de más.

En donde si me queda algo de duda es, será un CMS orientado a que? a sitios para comunidades como esta?, para blogueros?, para creación de paginas personales?. Soportará plugins?

sobres

Imagen de ezamudio

poco a poco

El que mucho abarca poco aprieta... si nos disponemos a hacer un CMS que haga de todo, no vamos a acabar nunca. Creo que lo primero sera dejar la funcionalidad basica: foros y blogs, con lo de las votaciones. Luego podremos dejar espacio para pagina personal y veremos que mas. La idea efectivamente es tener un sistema orientado a comunidades como esta.

Imagen de benek

Tap5

Yo tampoco conozco Tapestry 5 a fondo, solo tengo el conocimiento de los artículos que escribió ezamudio por aquí, pero apoyo la propuesta, hagamos JM2.0 en Tap5!

ezamudio dijo:
Lo de StackOverflow de la reputación de usuarios basada en los votos que obtiene creo que estaría muy bueno. Que por cierto para evitar trolls lo que hacen es que cualquiera puede dar un voto bueno, pero para dar un voto malo tienes ya que tener cierta reputación; así si eres un troll y nadie te ha dado suficientes votos buenos pues no vas a poder estar dando votos malos a todo.

Me gustaría más diseñar algoritmos de "reputación" basados en varios factores, es decir que todos puedan votar pero que el voto de cada usuario tenga un valor calculado en base a su reputación, que a su vez se calcularía en base a factores como:

  • Preguntas enviadas
  • Votos a favor en preguntas enviadas
  • Votos negativos en preguntas enviadas
  • Preguntas respondidas
  • Votos a favor en preguntas respondidas
  • Votos negativos en preguntas respondidas

De esta manera los usuarios nuevos también podrían votar lo que quieran, pero tendrían un impacto menor en la votación y los que tienen ya buena reputación tendrían un peso mayor en sus votos, el trolleo no afectaría sustancialmente con este esquema. Es más o menos como el "karma" que diseñó Ricardo Galli en meneame.net.

Imagen de ezamudio

Diseño

Bueno y entonces... cómo empezamos? Yo por lo general comienzo con el diseño de base de datos, pero sé que hay quienes prefieren empezar con los objetos de entidades y de ahí generar el esquema de base de datos.

Para ORM vamos a usar Hibernate o exploramos alguna otra opción como Cayenne, TopLink, iBatis...?

Imagen de jali

Voto por el diseño de BD

Yo también comienzo con la BD. Bueno... una vez que se tenga aterrizado que se desea hacer hago el diseño de la BD y ya despues pues los objetos y cosas así.

Voto por Hibernate... no lo conozco mucho, pero sirve y aprendo a utilizarlo
Sobre las votaciones... pues esta bien lo que propone bnk. Asi se da peso dependiendo de lo que el usuario haya dicho/preguntado/respondido.

Estaría bien tener un ranking como en javaranch :P Se podría comenzar como un troll y terminar como gandalf jajaja bueno algo asi :P

Imagen de Nopalin

mailing list?

donde hospedaran el proyecto no cuentan con servicio de mailing list?, a mi me parece mas adecuado que en el foro.
Tambien estoy de acuerdo con hibernate. Yo en lo personal empiezo con el modelo de entidades y de ahi sale el esquema de la base de datos.

Para empezar yo creo que javier deberia postear al menos el esquema o entidades que usa en esta version de javamexico para partir de ahi.

sobres

Imagen de ezamudio

mailing list

El proyecto está hospedado en Google Code, no sé si cuentan con un mailing list pero en todo caso ese será un mecanismo de comunicación interno para los que estén participando directamente como committers; la discusión decidimos publicarla aquí para enterar a toda la comunidad.

Imagen de iberck

Apache cayenne

Le di un rapidisimo ojo al tutorial de cayenne

- Por lo que veo, las ventajas más evidentes de cayenne son la integración fácil con tapestry por medio del proy tap-cayenne.
- Parece que cayenne tiene una GUI para generar código (Yo preferirìa utilizar las anotaciones de Hibernate en vez de una herramienta que genere còdigo)
- Las deventajas evidentes son entender los detalles finos del ORM
- Tiene casi las mismas caracterìsticas que hibernate aunque utilizadas de diferente forma... igual voto por hibernate

-1 Chile rojo
+1 Hibernate, sobre JPA ?

Imagen de benek

Mapa de funcionalidades

Yo creo que antes del diseño de la BD debemos hacer un mapa de funcionalidades, es decir acomodar a manera de lista lo que va a tener el portal, con esto también delimitamos el alcance inicial que queremos abordar, y nos va a dar una idea de lo que tenemos que considerar para el diseño.

Nopalin dijo:
Para empezar yo creo que javier deberia postear al menos el esquema o entidades que usa en esta version de javamexico para partir de ahi.

Es verdad, comenzaré a extraer eso.

Nopalin dijo:
donde hospedaran el proyecto no cuentan con servicio de mailing list?, a mi me parece mas adecuado que en el foro.

Ya hay un Google Group para jM que nunca hemos ocupado, en caso de que no nos acomode del todo la nueva sección del foro podríamos ocuparlo:

------

Sobre el ORM... ¿Sí es lo mejor que ocupemos uno? Porque ya no consideramos ni discutimos la posibilidad de que sea más conveniente ocupar por ejemplo Spring-JDBC (aunque no sea para programadores de verdad), sé que será un desarrollo pequeño pero también tenemos la encomienda de demostrar al mundo (ay si) que Java no es lento, el rendimiento no se verá afectado con el uso de un ORM?

Imagen de ezamudio

ORM

Yo no me opongo a usar Spring-JDBC y algunos RowMappers; en mi opinión los ORM son muy útiles cuando tienes que manejar algunas transacciones complejas y no quieres complicar demasiado tu código, o si necesitas hacer consultas dinámicas (uno de los fuertes de Hibernate es el HQL y los Criterion etc). Creo que entonces según veamos los requerimientos podemos determinar si es necesario realmente un ORM o sobra.

Imagen de benek

Aclaración

Solo quiero aclarar que no estoy en contra de usar un ORM, solamente quería que no lo pasemos por alto en la discusión, hasta ahorita la balanza se ha inclinado más hacia utilizar Hibernate :-)

Imagen de Nopalin

otro framework

y ya que metieron a colacion spring-jdbc, que tal les parece spring web mvc, yo una vez lo vi de rapidito y se me hizo complicadón, o tal vez fue que no lo supe usar, ustedes que opinan?

y con el orm no creo que sea lento, en mi antigua chamba hizimos un sistema con jboss y le agregamos jsp para la parte web, y apesar de los mas de 500 mil registros con sus 8 relaciones, nunca note que se viera lento, solo al cargar la pagina con algunos 500 de ellos.

sobres

Imagen de cfpmx

Suena bastante atractivo

Suena bastante atractivo este proyecto, y si en algo puedo hechar la mano estoy dispuesto, aunque igual, no he trabajado con muchas de las herramientas que mencionan.

Imagen de 1a1iux

perense, perense...

Que no nos ganen la emoción, las ganas y el entusiasmo :P

Veo que están hablando ya de ORM, Toplink, Hibernate, Tapestry, JPA, Spring Web, bla,bla, bla..

Más, no hemos llegado aún al punto de tener 100% claro qué es lo que va a hacer el sistema, ¿o si? que características debe tener y que funcionalidad debe cumplir.

No han escuchado hablar de algo que se llama ¿Análisis de Requerimientos?. jeje.

Bueno, sugiero dediquemos un poco de tiempo a pensarle bien que queremos. Vamos al menos justificando porqué la necesidad de desarrollar un nuevo sistemita, ¿nop? Si no se justifica, pues para que le hacemos al cuento.

@benek, supongo que eres el indicado:

¿Cuál es la situación actual? ¿Qué tiene tu sistema? ¿Qué no te gusta? ¿Qué le falta? ¿Qué quisieras tener? ¿Porqué estás interesado en tener un nuevo sistema? Evidentemente, muchas de estas preguntas ya se comentaron en algunos posts, sólo hay que dejarlo bien planchadito.

Bueno, empiezo con mis sugerencias.

Sugiero se arme un primer documento en donde @benek responda estas preguntas y algunas otras que no se me ocurrieron en este momento, claro. Este primer documento y todos los demás que vayan saliendo pintan para que sean creados en Google Docs. ¿no? Todos los vemos y en su caso, le escribimos/editamos.

En fin, aquí sigo...

Sale y vale
Byte

Imagen de jiturbide

De acuerdo con laliux

Hola,

Completamente de acuerdo con laliux.

Primero se debe definir los objetivos del sistema y la funcionalidad requerida para cumplir estos objetivos.

¿Que es lo que le hace falta al software del foro que motive cambiarlo?
¿No hay otro producto que cubra las necesidades?
¿Cual es la funcionalidad que se busca?
¿La funcionalidad de la "reputacion" se puede agregar modificando el software actual?

Con gusto los apoyo en este esfuerzo pero antes de tirar una linea de codigo y de pensar en frameworks y librerias debe quedar claro que es lo que se va a hacer, y despues de esto se podra pensar en base a los requerimientos cual es la tecnologia mas adecuada.

Saludos

Imagen de ezamudio

Aclaraciones

Alguna vez han leído o escuchado algo acerca de que muchos proyectos de software libre nacen de la simple curiosidad o necesidad de un programador? Y de ahí crecen a ser algo útil para mucha gente.

  • Esto no es un proyecto pagado, al igual que el sitio de la comunidad no es un sitio para obtener ganancias. Por lo tanto no hay una fecha de entrega, no hay un presupuesto, ni hay varias de las restricciones que se tienen en un proyecto pagado (aquí el cliente somos nosotros mismos).
  • El nuevo sitio será una aplicación hecha en Java porque este sitio es JavaMéxico (sí, aquí sale el peine; el sitio actual no está hecho en Java y la neta sí da penita).
  • Queremos hacerlo como proyecto de software libre, por varias razones:
    • Otras comunidades podrán beneficiarse de este proyecto si quieren usar la aplicación
    • Otros podrán adaptarlo a sus necesidades para comunidades similares y no tan similares
    • Para este sitio será la aplicación ideal porque tendrá justo lo que necesitamos
    • Qué mejor que la aplicación que lleva el sitio haya sido hecha por los mismos miembros de la comunidad?
    • Puede servir de ejemplo (completa o por partes) para los más nuevos, para poder ver una aplicación funcionando, ver el código, hacer preguntas a los autores, etc.
  • Este proyecto representa una oportunidad para varias personas:
    • Para aprender el uso de frameworks que no conocen a fondo
    • Para aprender a realizar la integración de distintos frameworks
    • Para aprender a trabajar en proyectos con equipos geográficamente dispersos
    • Para hacer curriculum; una vez que el proyecto se encuentre terminado no hay razón para que alguien no pueda ponerse una estrellita en su CV diciendo "yo participé en el desarrollo de javamexico.org"

Incluso para los que no participen directamente, puede servir para aprender algunas cosas; tenemos la intención de continuar algunas discusiones en cuanto al proyecto de forma pública para que toda la comunidad pueda darle seguimiento y saber qué está pasando con el desarrollo. Por razones de logística habrá que limitar la participación a quienes tengan algo de experiencia en distintas áreas pero ya iremos resolviendo algunos problemas conforme surjan.

El objetivo final es continuar con este sitio pero ya sabiendo que debajo del cofre reside una aplicación en Java, hecha por miembros de la comunidad, para esta comunidad y cualquier otra que quiera sacarle provecho. Habrá a quienes no les importe si el sitio está hecho en Java o en Ruby o en C++ o en Python o en Go, pero algunos creemos que es mejor seguir esa filosofía de "eat our own dog food". No tenemos la intención de afectar la funcionalidad actual, ni bajar el sitio durante el tiempo que se haga el desarrollo ni nada por el estilo. Para los que vienen a consultar información, exponer dudas, participar en foros, blogs, etc todo tiene que seguir igual; una parte del proyecto muy importante será migrar los datos a la nueva aplicación.

Imagen de cfpmx

Me gusta como suena lo que

Me gusta como suena lo que comenta ezamudio...

Imagen de Jvan

Excelente idea, y estoy

Excelente idea, y estoy dispuesto a colaborar, cuenten conmigo =)

Imagen de benek

Re:

laliux dijo:
No han escuchado hablar de algo que se llama ¿Análisis de Requerimientos?. jeje.

Bueno, sugiero dediquemos un poco de tiempo a pensarle bien que queremos.

Exacto! Precisamente para cubrir eso mencioné lo del Mapa de Funcionalidades :-)

Con respecto a la BD actual, veré como exportarla a manera de que alguna herramienta nos pueda generar un DER.

Imagen de benek

Google Wave

¿Alguno de ustedes tiene Google Wave?

Hemos descubierto ezamudio y yo que esta herramienta puede servirnos de mucho en la comunicación entre los que participaremos en este proyecto, así que estaría bien comenzarnos a agregar o si algunos no tienen comenzar a invitarnos (en cuanto nos lleguen invitaciones) para que nos comuniquemos allá.

Si alguien ya tiene páseme su cuenta por mensaje privado pf!

Saludos.

Imagen de benek

Polls

El post de willyxoft me trajo la idea de que también deberíamos considerar el sistema de encuestas que ya tiene este sitio, además de anexarle funcionalidad para que sea posible visualizar los resultados a manera de gráficas.

Imagen de E_Ortega

Que buen proyecto se tienen

Que buen proyecto se tienen entre manos la verdad !!!

De antemano los felicito, y pues no está de mas comenzar con lo primero no!??
Primero hay que aterrizar bien la idea para saber luego que hacer y cómo hacerlo; de otra manera va a haber muchos tropiezos durante la elaboración.
Mas vale invertirle un buen tiempo al Análisis de los requerimientos para tener una buena planeación que permita un buen diseño; eso del PSP se pega jajaja.

Ánimo, yo me mantengo desde la barrera aprendiendo como se le pasan los capotazos al toro !!
Si se puede ayudar o aportar algo lo haremos !!

Imagen de wdonet

Uno mas

Cuenten con mi participación, Yo he trabajado con hibernate, jdbc, spring, mvc, jsf, extjs, un poco de free marker y jasper entre otros y me parece que, independientemente de lo que se vaya a usar, debe quedar bien aterrizado lo que se pretende lograr, unos requisitos iniciales para corto plazo, visualizar lo que se quiere lograr a mediano plazo, digamos uno 2 años y cual es la espectativa a largo plazo (ademas de que sea libre y los demas lo puedan usar). Es importante tomar en cuenta que para que sea atractivo a ojos de otros usuarios que deseen usarlo, este sistema debe ser atractivo en casos como: facilidad de instalacion, documentacion clara y objetiva, y facilidad de uso y algunos demos. Si va a ser 2.0, tiene que se una web bastante dinámica, si es posible, sería bueno visualizar una web con portlets o mashlets (widgets) -> esa es la tendencia y ademas la intercomunicacion con redes sociales y otras del tipo 2.0. Quizá usar el single sign on con el open id

Imagen de benek

Re: Uno más

Perfecto, tienes cuenta de Google Wave?

Si no, envíame tu gmail por MP para enviarte invitación.

Imagen de wdonet

listo es wdonet

Imagen de Aaron

Interesante

Hola, acabo de leer sus comentarios sobre el proyecto y esta interesante.

La verdad, hasta este momento tengo desconocimiento total sobre las herramientas que mencionan (a excepción de lo básico relacionado con java escritorio y algo de jsp). lo que me motiva a investigar al respecto.

Me resulto muy importante lo que mencionaba "laliux" en el punto de aterrizar bien la idea, de lo que se tiene y lo que se quiere obtener, para poder descomponer el problema en módulos mas concretos y así administrar mejor el desarrollo del proyecto.

En lo que pueda ayudar, soy materia disponible.

Saludos.

- Sobre lo escrito por Ezamundio (respecto a los comentarios), es buena idea.

Imagen de Jose Manuel

Simplemente genial

Hola, yo me apunto como no, solo que se lo basico en java pero aprendo rapido,
mis conocimientos seran basicos pero estan bien planteados, gran proyecto se traen entre manos chicos.
Ademas se usar varias herramientas de diseño grafico por si se ofrece.
Bueno si soy de ayuda en algo avisenme , y ya si no soy de ayuda en nada los apoyo desde la distancia
(que emocionado estoy =3).

Imagen de ezamudio

Código

ya pueden ver el código fuente, bájenlo directo del repositorio de Mercurial que tenemos con Google.

Imagen de Shadonwk

jeje ya no me dio tiempo de

jeje ya no me dio tiempo de leer todo el post no lo habia visto pero esta interezante mañana le sigo chekando mas a fondo y le entro en lo poco o mucho que pueda aportar....

Saludos, Quisiera

Saludos,
Quisiera presentarme soy tempano
nuevo en este foro, vi este tema y me agrada mucho leer este tipo de ideas, vengo de otra area de ti (Redes y seguridad) quiero aprender mas sobre java por un proyecto que tengo en mente por otro lado es algo que es como un reto desde hace un tiempo
Uso plataforma Mac y linux, sin mas por el momento, los felicito y en lo que pueda los apoyo.

Imagen de max1704

hola buenas

no se como crear una barra de progreso en java, en c sharp lo hice pero en java no se como gracias

Imagen de paranoid_android

Sección que explique que es la comunidad javamexico

Estimados falta una sección que explique que es la comunidad java Mexico, ¿Que hace?, ¿Quien la forma?, ¿Porque? etc...

Imagen de Macrino

Ayuda

Hola carnal, sabes he visto que eres programador en java y pues necesito de tu ayuda, necesito realizar un applet que contenga un telnet, he estado experimentando con varios codigos, pero me resulta muy dificil poder hacerlo, soy programador novato y pues podrias aconsejarme como hacer...

explicarme el codifo

impo

Imagen de ingscjoshua

Aun sige en pie el proyecto?

Hola aun se tiene en pie este proyecto? me surge la duda ya que me gustaria colaborar!!! :)

Esta semi-muerto pero lleva

Esta semi-muerto pero lleva muy buen avance. Checa el repositorio y haz un clon y propon cambios.

Repo

en donde tienen el repo??

una url seria de ayuda

Gracias!

code.google.com/p/javamexico

code.google.com/p/javamexico

Imagen de ezamudio

sigue siendo ese?

No había hecho Benek la versión grails en github?