Showing posts with label soc. Show all posts
Showing posts with label soc. Show all posts

Apr 12, 2007

Not selected

I'm rejected :(, next year I'will apply again. This blog will be open next year, see you in http://liquidbits.blogspot.com (my spanish blog)

Mar 26, 2007

GNU/DEBIAN AND UBUNTU: Per Package Wiki and API

Abstract

This application is based on another application named "Possibility
to comment and rate packages in Synaptic" which was also written by
me. It was published on my blog and submitted to GSoC for the GNU/
Debian and Ubuntu organisations. I got a lot of feedback from the
mentor (Erich Schubert), from synaptic developers (Sebastian Heinlein)
and the Ubuntu and Debian community (ubuntuforums.com, #ubuntu-devel
in freenode, debian in freenode, the ULPGC software libre mailing
list, and everybody who send comments and critics).
Sometimes a new package makes your life easier, a music player, an editor, a new library... this don't come in the standard GNUDebian/(X|K|EDU)Ubuntu/Debian based distribution and it isn't too common to apperar in a guide. You discover the package thanks to a friend, a blog, a tutorial.
Every package has a "metaconscience" in the user comunity: screenshot, opinions, comments, Howtos, bugs, issues. That is named as user metainformation.

The idea is a community maintained metainformation system with an Api. The main frontend will be a like-wiki web application, crossing information from users and other sources like package repositories, popcon, debtags, debram, user tags...

http://wiki.debian.org/CRMI maybe a good starting point.

Some Use Cases

I'm a user, when I was installing some package did some postinstall configuration, I sing-in and add some comments to the package wiki and a howto link.

The same user discover a free good game in the repository, he rate it in the wiki and upload some screenshots.

Other user looking for a good video player, do a search and select the most rated one, reading the comments of other users in the web application.

A developer upload some screenshots about new features in his software.


Description

I'm the kind of guy that read and reread the "new packages" section, looking for good software, I think the feedback given by popularity contest is incomplete because the use of a package does not means that it is popular, only that a lot of people had installed. That people do not know if there is a better package for his necessities.

I apply for a way to know new and good software, to now bugs, to see screenshot, to talk about with users and developers and contributte with de project.

Desing autodiscussion

History and changelog from packages, some kind of package tracking.
User control.
And the trolls? a sysop, a moderator, a moderator team?
Bandwith problems? a mirror system. replicate and propagate the changes.
sort by package class/debtags/usertag/popcon...
Rate packages, user ranking? some kind of karma?
Some ajax will help, mind the step with this (requestrequet)

Details

I think this is a instance of Model-controller-View pattern. For the model I think in a relational database, postgresql or mysql.
I've have experience in Ruby on Rails and Perl Catalyst, I've preffer Ruby. Using REST (http://rest.blueoxen.net/cgi-bin/wiki.pl?RestInPlainEnglish) interfaces will help, added in 1.2 Ruby on Rails. Here http://weblog.infoworld.com/stratdev/archives/2007/01/rest_and_ruby_o.html
and here http://devnull.blogs.banot.net/articles/category/ruby Spanish (Richard Dale,rubyqt developer success history)
For some ajax (only where be necesary), the prototype rails pluging

Packages side

Package Info Tracker: in orther to retrieve new packages.gz and diff files from the repositories, calling the method which do the task to update.

Package Info Updater: Update the database, creating the wikipage, setting a directory (for screenshots). some lexical analisis for the packages.gz and de diff/* files

Package Info Model: Stored in relational database,

A package table with id(key) field, md5sum, name, section, mantainer, versions (with changelog), size, Arch.

A dependecies table with id, idpackage, idpackage, relation 1-*.

A suggested table, identica al anterior

Metainformation

Debtags, I dont know exacty how retrieve debtags, but in http://debtags.alioth.debian.org/cloud/, is a good example, I'm sure that it's possible and not too difficult.

Description Wiki alike, first filled which package description, next edited by the users, moderated by someway (maintainer, developet, wiki maintainer?). Some kind of text render like Textile http://whytheluckystiff.net/ruby/redcloth/
The model data is a table which Id, PackageId, UserId, Date, Description, last (boolean), keeping the history of changes.

The wiki controller, manage the modifications, log de changes, send to admin controller the changes to be approbed, recieve the approbation and make the changes in database.

Rating information

The model will be a table Id, PackageId, rate (float) 1-10. No history rates.

The rate controller, calc and set new the rate with (previousrate+newrate*Someuserkarma)/2, get rate from a package.

Usertags

I will use http://wiki.rubyonrails.org/rails/pages/ActsAsTaggablePluginHowto, for the model two tables, tags for tag info and taggings for relations

Comments

Database model, a table with commentid, comment, userid and another table id with id, packageid and commentid.

Users
Common user system with categories. The model are tables in the same database. The user controller will calc the user karma, I dont know the ways, investigate ¿Digg?.

Roadmap

  1. Study the CRMI project, complete and decide.
  2. Modelize the store system, decide the best option
    1. Decide what metainformation we want to handle.
    2. how store it? structure of files or/and databases
  3. UMLize the project.
  4. write some examples of metainfo
  5. Package tracking
    1. A bot generate the static information from the package system
  6. Metainfo reader/writer class (some kind of adapter or control, look for paterns).
    1. Possibility to set and get metainfo from the net.
  7. A simply web frontend (to incremental approach)
  8. The user control
    1. some kind of user ranking or karma (need to discuss)
    2. history of contributtions
  9. Web frontend with user control
  10. Test and retest, get some feedback.
  11. De-bug the code. repeat 10,11 until I'm happy.
  12. Look for the propagate system, do some test with more users, diferent mirrors etc...
  13. inprove and inprove.

Possible problems

Data incosistensy through mirrors
Server congestion.
Trolls, spam.

Possible security problems

Trust the data
Privacity for the users

Application under Creative Commons Attribution License.

Mar 21, 2007

GNU/DEBIAN and UBUNTU: Possibility to comment and rate packages in Synaptic

Abstract

Sometimes a new package makes your life easier, a music player, an editor, a new library... this don't come in the standard GNUDebian/(X|K|EDU)Ubuntu/Debian based distribution and it isn't too common to apperar in a guide. You discover the package thanks to a friend, a blog, a tutorial.
My idea is to give synaptic the infraestruture to make comments and rate the packages by the users.
To develop the idea, synaptic need an external centralized system to store the data.

Scenario

I'm a user, when I was installing some package did some postinstall configuration, I comment it in synaptic for the community.
The same user discover a free good game in the repository, he rate it.
Other user looking for a good video player, do a search and select the most rated one, reading the comments of other users.

Description

The project will improve the features of synaptic giving some community direct interaction with the package system. I'm the kind of guy that read and reread the "new packages" section, looking for good software, I think the feedback given by popularity contest is incomplete because the use of a package does not means that it is popular, only that a lot of people had installed. That people do not know if there is a better package for his necessities.

Domain

User looking for new software or feathures.
Packages and package system (apt).
User who like to share his experience.

Desing autodiscussion

We need some infraestructure to store online the comments and the ranking.

User control? I think no, only a username
And the trolls? a sysop, a moderator?
Bandwith problems? a mirror system. replicate and propagate the changes.
Get the comments on demand will be best option.
Get the ranking should be very fast (its only a number) to sort lot of packages by ranking.
The ranking system should be separately from the comments systems.
What kind of data for the comments, some rich text, quotes, bullets, links.
Possibiliti to deactivate de comments and the ranking system

Use Cases

1: right click in a package --->contextual menu with the usual options, "rate", "add comment", "read comments" .
2: select "rate"---> submenu with stars rate system
3:select number of stars ---> "rate successful" and store information.
4: select "add comment"--->display a window with a text field to add coments and a button "OK"
5: select ok --> store the comment.
6: select "read comments"-->download the comments about a package and show it pagining.
7: sort by ranking -->current packages view is sorted by rank

Roadmap

  1. Modelize the store system, decide the best option.
  2. Study the synaptic source, get some feedback from the project admins
  3. UMLize the project.
  4. Coding a prototype of the ranking system.
  5. Test and retest, get some feedback.
  6. De-bug the code. repeat 5,6 until I'm happy.
  7. Codding a prototype of the comments system.
  8. Test and retest, get some feedback, take care about load times.
  9. De-bug the code. repeat 8,9 until I'm very happy.
  10. Look for the propagate system, do some test with more users, diferent mirrors etc...
  11. inprove and inprove.

Possible problems

Data incosistensy through mirrors
Server congestion.
Trolls, spam,

Possible security problems

Trust the data
Privacity for the users

Mar 15, 2007

Happy for the help.

Soren Hansen in Google Summer of Code Discuss send me some feedback, The SoC Web application don't let me make changes, but I modify the application in the blog.
Pedro asked me in the comments of the application post to write the --help option for svn, I think I'm not the appropiate guy do ask for this, but is possible that the svn project think about this sooner or later.
Thanks

The Mentoring organization list is up!

You can find it in the Soc Homepage, it's time to apply!

Mentoring Org, comming soon

We can read it in SoC official web page
The list of accepted orgs will be posted here soon.
The students can now fill the student formulary an add applications. There are, the add applications form, a drop-down field with a listing of organizations that is growing, I think they (Google guys) are inserting the mentoring organizations in de DB just now.

Mar 14, 2007

Summer of code, March 14th.

Today start the students deadline. I'd created this blog to show my application, help somebody toapply and share information about the Google Summer of Code program. My native language is spanish, I'll try to do the best in english. Right, in the Link section, I will post interesting links for student who will do an application.
For a first post, it's ok. Lot of thanks for your attención and bye.