Entrega1 - npelle/seia-gpv GitHub Wiki

Nombre del proyecto

  • Devs of the web.

1. Justificación del Proyecto

El proyecto elegido para desarrollar en la cátedra se trata de una comunidad de desarrolladores web. La idea consiste en un sitio en el cual los usuarios del mismo tengan la posibilidad de realizar publicaciones referidas a temáticas asociadas al desarrollo web. Estas publicaciones estarán categorizadas bajo diferentes tópicos (.NET, Django, HTML, CSS, JavaScript, etc.).

Cualquier persona que acceda será capaz de navegar, leer contenido y realizar búsquedas, pero solo aquellos usuarios registrados y logueados estarán habilitados para publicar y realizar valoraciones (positivas/negativas), como así también para realizar comentarios en las publicaciones.

El contenido será autorregulado por los propios usuarios en función de las valoraciones que éstos hagan en las diferentes publicaciones.

La motivación surge, en primer lugar, en base a nuestras preferencias personales hacia esta temática. En segundo lugar, debemos añadir el hecho de no conocer ningún sitio que se destaque y enmarque dentro de las características recientemente mencionadas.

Como expectativa para el proyecto nos planteamos que el mismo pueda cautivar y agrupar a todo tipo de desarrolladores web, de modo tal que puedan compartir e intercambiar su conocimiento. Por otro lado, mediante el sistema de valoraciones pretendemos que sea la comunidad misma quien otorgue reconocimiento y prestigio a las personas.


2. Análisis competitivo

Como alternativas online a nuestra propuesta, se pueden enumerar las siguientes opciones:

stackoverflow.com

Sitio web de preguntas y respuestas para programadores y profesionales de la informática.

  • Ventajas
    • Gran número de usuarios registrados (evidenciando un alto grado de difusión).
    • Rápido tiempo de respuesta (promedio de 11 minutos en el 92% de las preguntas).
    • Autoeliminación de publicaciones según diversos criterios.
  • Desventajas
    • El agregado de contenido es a demanda, es decir, la información tiene lugar como respuesta a la pregunta de un usuario (no está enfocado netamente a publicaciones como nuestra propuesta).
    • Para usuarios interesados en aprender desde cero, no existe mucho contenido general, sino más bien, preguntas concretas, sólo aplicables a situaciones determinadas.

programacion.net

El sitio está conformado por diversas secciones (foros, noticias, tutoriales, etc.) relacionadas a la programación.

  • Ventajas
    • Posee una sección dedicada a la búsqueda de empleo para programadores.
    • Una de las secciones está especialmente referida a tutoriales, los cuales son útiles a la hora de aprender.
    • Cuenta con una sección cuya finalidad es compartir eventos relacionados a la informática y, de ese modo, colaborar con la difusión de los mismos.
  • Desventajas
    • Las noticias sólo son cargadas luego de ser aprobadas por el administrador del sitio.
    • El catálogo de temas disponibles no es muy amplio.
    • El buscador no es personalizado. Se trata de uno genérico brindado por Google (por lo que agrega publicidades en los primeros resultados).

Blogs personales

Blogs pertenecientes a aficionados de la programación, los cuales brindan sus experiencias a la comunidad. Por ejemplo: hanselman.com, ingeniuz.com, etc.

  • Ventajas
    • El autor de cada blog tiene la posibilidad de publicar contenido de acuerdo a su interés.
    • Se puede encontrar gran cantidad de temáticas (sólo que dispersas en muchos sitios).
    • No necesita de métodos agregados para la regulación de contenido, ya que es únicamente su propietario quien publica.
  • Desventajas
    • Al ser de índole personal, no brindan la posibilidad de que los usuarios puedan publicar contenido.
    • Generalmente, no brindan un gran número de temáticas, sino que se centran sólo en el rango de tópicos de interés del programador.
    • El agregado de contenido depende exclusivamente de la dedicación de una única persona, por lo que no se puede considerar como una comunidad.

Por el lado de las opciones offline, podemos encontrar:

Revistas impresas o libros

Revistas como "Solo Programadores", destinadas a la difusión de contenido relacionado al mundo de la programación web. Libros como “The Pragmatic Programmer” de Hunt y Thomas o “El lenguaje de programación C” de Kernighan y Ritchie.

  • Ventajas
    • A pesar de que es relativo a preferencias personales, generalmente, la gente prefiere ediciones impresas para la lectura.
    • No corren el riesgo de ser borradas de un servidor.
    • No requieren de un suministro de corriente eléctrica para ser utilizadas.
  • Desventajas
    • Falta de inmediatez.
    • Poca cobertura geográfica, ya que las revistas impresas no ofrecen el mismo alcance que los medios electrónicos.
    • Costo asociado a su impresión y distribución física.

Convenciones

Encuentros organizados sin fines de lucro con el objetivo de difundir conocimientos sobre lenguajes de programación o temáticas relacionadas a la informática. Ejemplos de esto pueden ser las Jornadas Argentinas de Informática organizada por la SADIO o el PyDay organizado por la Comunidad Python Argentina.

  • Ventajas
    • Generalmente son varias charlas, de las cuales el visitante puede decidir cuáles son de su interés para asistir.
    • Posibilidad de realizar preguntas al disertante, por lo que, en caso de surgir dudas, pueden ser resueltas en el momento.
    • Se encuentran muchas personas en un mismo lugar físico que genera un intercambio de conocimiento interesante.
  • Desventajas
    • Si bien las charlas son generalmente filmadas y se publican, para aprovechar este tipo de eventos es recomendable asistir físicamente, lo cual trae asociado el traslado de la persona.
    • Cada evento tiene una temática determinada, enfocada en un solo lenguaje de programación.
    • Puede que exista una falta de inmediatez en la difusión de contenido.

Cursos presenciales

Cursos referidos a diversos lenguajes de programación y temáticas asociadas. Los mismos son dictados por diversas universidades o instituciones.

  • Ventajas
    • El programa de estudio fue previamente analizado y conformado por un grupo de profesionales, lo cual garantiza su calidad.
    • El hecho de ser presenciales, brindan la posibilidad de que el estudiante pueda plantear preguntas y obtener respuestas en forma personal y directa.
    • Suelen otorgar certificaciones.
  • Desventajas
    • En algunos casos es necesario que la persona deba trasladarse hasta el lugar en el cual se dicta el curso.
    • Tienen horarios y cronogramas preestablecidos.
    • Cada curso está enfocado en una temática particular.
    • Algunos de estos cursos son pagos.

3. Identificación de usuarios

  • Clases de usuarios

    • Desarrollador (o estudiante) que ingresa al sitio para publicar contenido y poder así compartir su conocimiento.
    • Desarrollador (o estudiante) que ingresa al sitio para responder consultas asociadas a sus publicaciones anteriores.
    • Desarrollador (o estudiante) que ingresa al sitio para buscar contenido referido a algún tema de interés.
    • Representante de alguna empresa que ingresa al sitio buscando desarrolladores en función de su reputación y las necesidades de la organización.
  • Perfiles de usuarios

    • Juan Pérez

      • Edad: 35 años
      • País: Argentina
      • Localidad: Rafaela
      • Profesión: Desarrollador
      • Nivel: Semi-Senior
      • Tecnología: Microsoft .NET (C#)
      • Años de experiencia: 4
      • Dispositivo con el cual accede: PC
      • Expectativa: Publicar contenido que sirva a la comunidad para aprender más acerca de esta tecnología como así también encontrar publicaciones útiles que le permitan crecer técnicamente como profesional.
    • Pablo Mármol

      • Edad: 22 años
      • País: España
      • Localidad: Madrid
      • Profesión: Estudiante de Ingeniería en Informática
      • Año: 4to año
      • Tecnología: Django (Python)
      • Dispositivo con el cual accede: PC
      • Expectativa: Encontrar contenido que le permita aprender más acerca de la tecnología que utiliza y conocer a personas con un alto conocimiento dentro del mismo.
    • Richard Adams

      • Edad: 50
      • País: Estados Unidos
      • Localidad: Seattle
      • Profesión: Desarrollador
      • Nivel: Senior
      • Años de experiencia: 25
      • Tecnología: Ruby on Rails (Ruby)
      • Dispositivo con el cual accede: PC
      • Expectativa: Publicar contenido con el objetivo de fomentar el uso de esta tecnología y poder cautivar a más programadores.
    • Miguel Ángel Juarez

      • Edad: 28
      • País: México
      • Localidad: Monterrey
      • Profesión: Diseñador HTML
      • Nivel: Senior
      • Años de experiencia: 6
      • Dispositivo con el cual accede: PC
      • Expectativa: Dar a conocer las principales técnicas de maquetado y poder ser reconocido dentro de la comunidad.

4. Escenarios de uso

  • Realizar una publicación

    • Necesidad/Motivación: un usuario pretende publicar nuevo contenido en la comunidad.
    • Pasos: el usuario accede al sitio y se identifica (previo registro si es necesario). Luego se dirige a la opción correspondiente para generar una nueva publicación y procede a redactar el contenido que desea publicar. Además deberá completar el título y seleccionar la categoría correspondiente para su publicación. Una vez finalizada esta tarea, simplemente publica el contenido para que el mismo sea visible dentro del sitio.
  • Responder una consulta en una de sus publicaciones

    • Necesidad/Motivación: un usuario pretende responder una consulta que otro usuario planteó en una de sus publicaciones.
    • Pasos: el usuario accede al sitio y se identifica. Luego ingresa a la publicación correspondiente y en la parte inferior de la misma puede observar la consulta de otra persona. Inmediatamente debajo de la misma el usuario procede a redactar su respuesta y, al finalizar, publica la misma para que sea visible dentro del sitio.
  • Buscar una persona para ocupar un puesto en una organización

    • Necesidad/Motivación: una persona, representante de una organización, pretende buscar dentro del sitio al usuario que mejor califique para un puesto de trabajo que la empresa pretende cubrir.
    • Pasos: la persona ingresa al sitio y dentro del mismo procede a observar las publicaciones y comentarios, teniendo la posibilidad de filtrarlas por alguna de las categorías que ofrece el sitio. En cualquier momento, cuando las contribuciones de un usuario le parecen interesantes y acordes al perfil que necesitan en la organización, procede a visualizar la información pública del mismo para poder establecer algún tipo de contacto.

5. Registro de nombre del proyecto

Por cuestiones económicas decidimos no registrar un dominio.


6. Derechos de copia/Licenciamiento/Contrato Cliente-Desarrolladores

Luego analizar los diferentes tipos de licencias existentes aplicables al software, decidimos utilizar una licencia de código abierto. Dentro de esta categoría escogimos la GNU General Public License en su versión 2, de esta forma, se permite que el código sea público, editable y distribuido siempre y cuando se mantengan estas mismas condiciones de uso.

En cuanto al contenido de la comunidad, decidimos aplicar la licencia conocida como CC BY-ND (Reconocimiento - Sin Obra Derivada) escrita por Creative Commons. La misma permite la exhibición, copia y distribución de una "obra", comercial y no comercial, siempre y cuando se transmita en su totalidad, reconociendo su autoría.