MusicPool

Από Κοινότητα Ελεύθερου Λογισμικού ΕΜΠ
Μετάβαση σε: πλοήγηση, αναζήτηση

Πρόκειται για ένα open source project το οποίο ουσιαστικά απευθύνεται σε ομάδες ατόμων και επιχειρεί να προτείνει μία λύση στην ανάγκη για ομαδικές κοινωνικές μουσικές βιβλιοθήκες. Μέχρι στιγμής, οι λύσεις είτε προσφέρουν ατομικές βιβλιοθήκες μουσικής (iTunes, Amarok, κλπ.), είτε γενικευμένες λύσεις (last.fm) που όμως δεν απευθύνονται σε ομάδες, είτε λύσεις που είναι διαθέσιμες σε άτομα ή μικρές ομάδες, χωρίς όμως την δυνατότητα κοινωνικής συμμετοχής (Ampache). Καμία από αυτές τις λύσεις δεν καλύπτει την ανάγκη για ομαδική, κοινωνική μουσική. Η κοντινότερη λύση (last.fm) δεν επιτρέπει την ουσιαστική συμβολή του χρήστη, ούτε είναι ανοιχτού κώδικα.

Η συγκεκριμένη ιδέα στοχεύει στο να προσφέρει μία open source και ανοιχτών προτύπων λύση που να επιτρέπει στον καθένα να δημιουργήσει την δική του ομάδα ατόμων, με την δυνατότητα στα μέλη της ομάδας να συμβάλλουν στην διεύρυνση της μουσικής βιβλιοθήκης της ομάδας. Παραδείγματα τέτοιων ομάδων μπορεί να αποτελούν πανεπιστημιακές εστίες, πολυτεχνειακές ομάδες φοιτητών, ομάδες μουσικών συνθετών, μικρές ομάδες πάνω σε οικιακά LAN, ομάδες στον επαγγελματικό χώρο, κ.ό.κ.


Η σελίδα αυτή έχει στόχο τη συγκέντρωση χρήσιμων πληροφοριών για όσους θέλουν να συμμετάσχουν με κάποιο τρόπο στο project. Για συζήτηση και απορίες υπάρχει η αντίστοιχη ενότητα στο forum


Συμμετοχή

Για τη συμμετοχή στην ανάπτυξη του project, καλό είναι να γραφτείτε στην αντίστοιχη mailing list.

Για να κάνετε checkout την τελευταία έκδοση του κώδικα πρέπει να εγκαταστήσετε το subversion, και να εκτελέσετε:

 svn co http://dev.foss.ntua.gr/repos/project

Για να κάνετε commit τυχόν αλλαγές, χρειάζεστε username και password. Αν δεν σας έχει δοθεί, επικοινωνήστε μέσω της mailing list.

Αρχιτεκτονική

Η αρχιτεκτονική της εφαρμογής περιγράφεται σχηματικά στο σχετικό διάγραμμα (πηγή).

Τα επιμέρους στοιχεία είναι αναλυτικότερα:

File server / streaming server

Αυτό το τμήμα θα αναλαμβάνει να δέχεται file uploads και να επιτρέπει downloads και streams. Επίσης θα πρέπει να επιβεβαιώνει ότι τα αρχεία που ανεβαίνουν είναι σωστού τύπου (μουσικής) και να κάνει κάποιου είδους βασικό authentication ώστε να μην έχει πρόσβαση download / upload ο οποιοσδήποτε. Αυτοί που θα το αναλάβουν θα έχουν να κάνουν με πράγματα όπως mp3 meta-data extraction, μετατροπή ανάμεσα σε τύπους αρχείων ήχου και bitrates, το σχεδιασμό ενός file server API, καθώς και με βελτιστοποιήσεις στις λήψεις αρχείων. Οι τεχνολογίες που θα χρησιμοποιηθούν για web server είναι o lighttpd ή ο nginex.

Front-end

Αυτό είναι το τμήμα που θα βλέπουν οι χρήστες. Περιλαμβάνει τη διεπαφή και έχει να κάνει πολύ με design. Όσοι το επιλέξουν θα ασχοληθούν με τον αισθητικό σχεδιασμό των σελίδων, την ευκολία χρήσης, την ταχύτητα και βελτιστοποιήσεις σε επίπεδο front-end. Επίσης θα έχουν να κάνουν με πράγματα όπως συμβατότητα για διαφορετικούς browsers, search-engine optimizations και organic marketing, αλλά και accessibility. Όλα αυτά έχουν πολύ μεγάλες εφαρμογές και στον επαγγελματικό χώρο, οπότε είναι μία καλή επένδυση σε γνώσεις. Οι τεχνολογίες που θα χρησιμοποιηθούν θα είναι κυρίως XHTML, CSS, και Javascript.

Σχεδιασμός βάσης δεδομένων

Αυτό είναι το τμήμα που έχει να κάνει με την αποθήκευση των μετα-δεδομένων. Είναι το πιο "βαθύ" τμήμα του project. Όσοι το αναλάβουν θα έχουν να κάνουν με πράγματα όπως τον ορισμό των τύπων και των περιορισμό των δεδομένων που θα αποθηκεύονται, την δόμηση των δεδομένων σε τμήματα, τις σχέσεις μεταξύ των δεδομένων και το πώς συνδέονται, και βελτιστοποιήσεις στην ανάκτηση και στην αποθήκευση των δεδομένων. Οι τεχνολογίες που θα χρησιμοποιηθούν θα είναι κυρίως SQL σε PostgreSQL.

Back-end

Το back-end είναι το τμήμα που αναλαμβάνει την επικοινωνία ανάμεσα στην βάση δεδομένων και στην διεπαφή χρήστη. Είναι μάλλον από τα πιο ενδιαφέροντα τμήματα, καθώς καθορίζει την μορφή κώδικα που θα έχει το project κατά μεγάλο βαθμό. Αυτοί που θα ασχοληθούν με αυτό το τμήμα θα έχουν να μιλήσουν πολύ και με τα παιδιά που θα φτιάξουν την βάση δεδομένων αλλά και με τα παιδιά που θα φτιάξουν το front-end. Θα έχουν να κάνουν κυρίως με τον ορισμό του API που θα χρησιμοποιείται καθώς και τις δομές δεδομένων που θα έχουμε. Εδώ θα γίνονται όλοι οι υπολογισμοί και η επεξεργασία των δεδομένων πριν την αποθήκευσή τους και μετά την ανάκτησή τους. Αν χρειαστούν αλγόριθμοι επεξεργασίας, θα είναι εδώ το τμήμα στο οποίο θα περιλαμβάνονται. Η τεχνολογία που θα χρησιμοποιηθεί θα είναι κυρίως η Python.

Όλα είναι πολύ ενδιαφέροντα. Ωραίο θα ήταν όσοι συμμετέχουν να επιλέξουν έναν τομέα από αυτούς για να ασχοληθούν αρχικά (με τη δυνατότητα να αλλάξουν αργότερα αν θέλουν), ώστε να δούμε και πώς θα μπορούν να βοηθηθούν ώστε να μάθουν τις κατάλληλες τεχνολογίες. Αν σας ενδιαφέρουν περισσότεροι τομείς, επιλέξτε αυτόν που σας ενδιαφέρει περισσότερο.

Assignments

Πρέπει να υπογράψετε με το nickname σας και το τμήμα το οποίο σας ενδιαφέρει ώστε να πάρετε Subversion access. Συμπληρώστε το όνομά σας στη λίστα κάνοντας edit αυτή τη σελίδα του wiki.

  • dionyziz: Front-end
  • mikeX: Back-end
  • ramaya: Front-end
  • yiannis_t: Back-end
  • u_quark: File/streaming server, Front-end
  • philipgian: Back-end
  • thanosQR: Front-end, File/streaming server

Γλώσσες και εργαλεία υλοποίησης

Python

Κατ' αρχάς, ρίξτε μια ματιά στο σχετικό άρθρο του wiki: Γλώσσες Προγραμματισμού#Python

Θα χρησιμοποιηθεί python 2.5. Εκτός από το επίσημο tutorial και το library reference, μπορεί να βρείτε χρήσιμο και το βιβλίο, Dive into Python.

Πιο εξειδικευμένα links θα προστεθούν καθώς το project προχωράει.

Ρίξτε μια ματιά και στις συμβάσεις.

PostgreSQL

Το επίσημο site και κατεξοχήν πηγή πληροφοριών και τεκμηρίωσης: http://www.postgresql.org/. Το manual είναι αρκετά κατατοπιστικό, και περιέχει insight σχετικά με την SQL και το σχεδιασμό σχεσιακών βάσεων γενικότερα.

XHTML/CSS

Όσοι θα ασχοληθούν έστω και λίγο με front-end θα ήταν καλό να διαβάσουν αναλυτικά τα 6 σύντομα tutorials από το HTML Dog. Πιο προχωρημένη CSS μπορείτε να μάθετε και από το QuirksMode.

Javascript

Όσοι θα ασχοληθούν με front-end καλό θα ήταν να βελτιώσουν τις γνώσεις τους σε Javascript αφού φυσικά μάθουν βασική XHTML και CSS. Μία καλή αρχή είναι το Re-introduction to Javascript. Όσοι ενδιαφέρονται να μάθουν πιο αναλυτικά, μπορούν να διαβάσουν τα εξαιρετικά κείμενα από το QuirksMode καθώς και από τα κείμενα του Crockford.

Subversion

Ρίξτε μια ματιά στο άρθρο σχετικά με revision control.

Το επίσημο site: http://subversion.tigris.org/ και το svn book http://svnbook.red-bean.com/, που είναι must read. Δεν είναι ανάγκη να το ξεκοκαλίσετε, αλλά όλοι όσοι θα θέλατε να συμμετέχετε στο project και δεν έχετε προηγούμενη εμπειρία με version control ή και ειδικότερα με το subversion καλό θα ήταν να διαβάσετε αναλυτικά τα κεφάλαια "Preface", "1. Fundamental Concepts" και "2. Basic Usage".

Εξίσου χρήσιμος είναι ο οδηγός για το στήσιμο κάποιου repository με apache: Server_Configuration_για_SVN_με_Apache

Django

Προς το παρόν δουλεύουμε ένα prototype σε Django.

Ρίξτε μια ματιά στο tutorial. Αν χρησιμοποιείτε Debian μπορείτε να διαβάζετε offline το documentation με το πακέτο python-django-doc.

Χρήσιμα links:

Το django αφορά τόσο τους backend όσο και τους frontend authors.

Συμβάσεις

Καλό είναι να ακολουθούνται τουλάχιστον κάποια γενικότερα good practices.

Άδεια

Η εφαρμογή διατίθεται με τους όρους της GPLv3, με την εξαίρεση του flash player, ο οποίος βασίζεται στον κώδικα του neolao και είναι διαθέσιμος υπό την MPL 1.1.

Η τεκμηρίωση είναι διαθέσιμη υπό την Creative Commons CC by SA 3.0. Περιεχόμενο όπως εικονίδια, διατίθεται υπό CC by SA ή Free Art.

Εάν κάποιος επιθυμεί διαφορετική άδεια για κάποιου είδους συνεισφορά του, μπορεί να επικοινωνήσει μέσω της mailing list.

Διάφορα

Παρουσίαση στο συνέδριο ΕΛΛΑΚ 20/06/09

Οι διαφάνειες και τα συνοδευτικά αρχεία της παρουσίασης (public domain): musicpool-devconf.zip

Χρήσιμα links

Εδώ αποθηκεύουμε links που μπορούν να φανούν χρήσιμα στην εξέλιξη του project.