Αποτελέσματα διαγωνισμού ανάπτυξης ΕΛ/ΛΑΚ
Βγήκαν εχθές, 9 Μαρτίου, τα αποτελέσματα του διαγωνισμού για την ανάπτυξη ΕΛ/ΛΑΚ από την νεοϊδρυθείσα Εταιρία ΕΛ/ΛΑΚ. Συμμετείχα και εγώ στον διαγωνισμό και η πρότασή μου αφορούσε την περαιτέρω ανάπτυξη του πελάτη για το έργο Grub (ούχι του loader, αλλά του crawler) στο οποίο έχω αναφερθεί πολλές φορές στο blog μου.
Με λίγα λόγια το έργο αφορά μέρος της διαδικασίας δημιουργίας μηχανών αναζήτησης (το crawling) και ο στόχος του project είναι η δημιουργία κοινοτικών μηχανών αναζήτησης, με διαφάνεια και υπευθυνότητα.
Από τεχνολογικής σκοπιάς το έργο ακολουθεί μια λογική p2p και κατανέμει την διαδικασία επίσκεψης και αποθήκευσης σελίδων (crawling) σε όσους υπολογιστές τρέχουν έναν πελάτη για το έργο. Στη συνέχεια οι σελίδες αυτές συγκεντρώνονται σε κεντρικά μηχανήματα και μπορούν να γίνουν index για να δημιουργηθεί μια μηχανή αναζήτησης. Τα αποτελέσματα του crawling από το Grub είναι διαθέσιμα σε όλους από το Internet Open Index και έτσι ο καθένας μπορεί να δημιουργήσει μια μηχανή αναζήτησης (όπως για παράδειγμα η Wikia). Δοθέντων αρκετών πελατών Grub, οι μηχανές αναζήτησης που βασίζονται σε αυτό μπορούν να έχουν και πλήρη και άμεση εικόνα του Διαδικτύου.
Tο έργο θα αντικαταστήσει αδιαφανείς μηχανές αναζήτησης και θα δώσει την δυνατότητα σε όλους να έχουν πρόσβαση αδιαμεσσολάβητα σε όλη την διαθέσιμη πληροφορία. Είναι κατά κάποιον τρόπο το αντίστοιχο του 'Free as in freedom' λογισμικού αλλά στο θέμα της Διαδικτυακής αναζήτησης. Δηλαδή μια μηχανή αναζήτησης που δεν είναι μόνο ελεύθερη προς χρήση (άλλωστε όλες είναι) αλλά ελεύθερη στην πρόσβαση, διαφανής και κοινοτική. Η ανάγκη για τέτοιες μηχανές γίνεται όλο και πιο έντονη, αφού τα κρούσματα censoring πληθαίνουν.
Χρηματοδοτήθηκαν συνολικά 33 από τις 62 προτάσεις. Δυστυχώς η πρότασή μου δεν χρηματοδοτήθηκε, αφού βαθμολογήθηκε με 4/10, με όριο το 5/10. Το σχόλιο "Πολύ niche εφαρμογή" συνοδεύει την πρότασή μου. Και για όσους δεν γνωρίζουν τι σημαίνει "niche" (και εγώ σε λεξικό έπρεπε να το ψάξω...) μάλλον θέλουν να πουν "εξειδικευμένη".
Μερικά σχόλια για τον διαγωνισμό για την επόμενη φορά, η οποία ελπίζω να υπάρξει, για να χρηματοδοτηθούν ξανά προγραμματιστές και project.
- Κάπως μπλέχτηκαν τα αποτελέσματα δύο φαινομενικά ξεχωριστών διαγωνισμών: αυτού της ανάπτυξης ΕΛ/ΛΑΚ και αυτού της μετάφρασης ΕΛ/ΛΑΚ. Εκτιμώ ότι είναι διαφορετικοί διαγωνισμοί, διαφορετική στόχευση και ανήκουν σε διαφορετική κατάταξη.
- Ήταν ασαφές από τον διαγωνισμό το ποσό της χρηματοδότησης. Η προκήρυξη ανέφερε "έως 4.000 ευρώ" χωρίς όμως να προσδιορίζει με ποια κριτήρια θα πάρεις 1,2,3 ή 4 χιλιάρικα. Επίσης είναι άγνωστο το συνολικό ποσό που ήταν διαθέσιμο, καθώς επίσης και η πηγή άντλησης του ποσού αυτού.
- Ήταν ασαφές ποιος αξιολόγησε τις προτάσεις.
- Ήταν ασαφές το πλαίσιο "ανάπτυξης και επέκτασης ΕΛ/ΛΑΚ που είναι χρήσιμο για επιχειρήσεις και την εκπαιδευτική κοινότητα" αφού τα περισσότερα project μπορούν να ενταχθούν κάτω από αυτή την ομπρέλα. Αλλά μπορεί να ήταν και ηθελημένη αυτή η ασάφεια, ακριβώς για να χωράνε όλοι.
- Στείλτε emails! Παραλάβατε την αίτηση; Στείλτε ένα μαιλ! Βγήκαν τα αποτελέσματα; Στείλτε ένα mail!
Τελευταίο και σημαντικότερο. Συγχαρητήρια σε όσους τα κατάφεραν αλλά όπως και να έχει να δουλέψουμε όλοι πάνω σε αυτά που σκεφτόμαστε. Χρειαζόμαστε πιο ενεργή προγραμματιστική κοινότητα! Φυσικά θα συνεχίσω να δουλεύω στο Grub για να κατακτήσουμε τον κόσμο
GrubNG Python Client 0.4
This is the fourth release of the Grub NG Python Client. This release closes critical bug, so update your clients!
What is Grub?
Grub started back in 2000 with a simple concept of distributing part of the search process pipeline: crawling. In a way, we were a bit ahead of our time, but our intention then was what it is now. We want to help fix search.
Learn more at http://www.grub.org
This release features:
- Support for the new workunits format, featuring more HTTP headers per request.
- Added Uploading thread. Now all ARC uploads are executed by a single thread, to prevent server hammering. Features like upload bandwidth limit will be added in the future.
- ...full changelog
GrubNG Python Client v0.3
I'm very happy to announce you the 0.3 version of the Python Client
This is a major release, so please update your clients.
Changelog 0.3
- Fixed bug which produced wrong arcs. No more 401 errors. Closes bug: http://grub.org/?q=en/node/237 (thanks to Chris Hall, Bartek Jasicki and Balinny)
- Handle compressed pages correctly
- Return grub-error when we get only headers and no body
- Better response type handling to deal with broken web servers
- Works with the new upload server
- Added config file support for username password
- Close bug http://grub.org/?q=en/node/243
- Added some sleep code to deal with dispatch server downtimes
- Added some sleep code to deal with upload server errors
- Username and password can be read from config file
- Debug flag added
- Info flag to help with debugging (thanks to Chris Hall)
- Code cleanup
Grub Project Cafepress Shop
I though that I would be cool to wear a Grub Project t-shirt at the FOSDEM, so I created a Cafepress Grub Store for everyone to buy the needed merchandise
Note that I get no money from selling this stuff, the prices are the starting prices Cafepress sets.
You can use the coupon code "BECALMCALMS" (without the quotes) to get your stuff with $5 discount! Sadly the offer only applies if that's your first Cafepress order, it's over $50 and only until 23 Jan 2009.
BTW I'm always looking for good DIY services, like lulu for creating t-shirts to publishing your own (photo)book. Please let me now if you know of a great service, that respects it's users and the opensource community!
Grub Crawler – Python Client
Since the last December I've been hacking on a python client for the (in)famous crawling project, Grub. The Grub project's goal is to crawl the whole web, in a decentralized way, and provides the data, for search engines to be build. Wikia Search is actually based on Grub's data. Only a C# client existed -which is actively developed now- so because I'm not a big fan of the whole .Net (or Mono, if you like it this way) idea I decided that should write a Python client.
You can grab the sources and start crawling yourself. Remember that you need a Wikia account first. The client is not in complete state but it works good enough for me to produce more than 3000 units of crawled pages, with 255 pages per unit, every day. Not bad, right?
Please give it a shot and let me know what you think and fill out some bug reports.
“Open Source” Μηχανές Αναζήτησης
Η αναζήτηση είναι μέρος της βασικής υποδομής του Διαδικτύου. Και προς το παρών είναι προβληματική
Γιατί είναι προβληματική; Για τον ίδιο λόγο που το ιδιόκτητο λογισμικό θα είναι πάντα προβληματικό: έλλειψη ελευθερίας, έλλειψη της κοινότητας, έλλειψη υπευθυνότητας, έλλειψη διαφάνειας.
Το παραπάνω κείμενο προέρχεται από την πρώτη σελίδα του έργου Grub. Και με βρίσκει απόλυτα σύμφωνο. Χωρίς την αναζήτηση το Διαδίκτυο είναι απλά σχεδόν άχρηστο. Η πληροφορία θα βρίσκεται εκεί, αλλά εάν δεν μπορείς να την προσπελάσεις σου είναι άχρηστη. Η αναζήτηση στο διαδίκτυο έχει αλλάξει πολύ τα τελευταία χρόνια και η παροχή αυτής έχει έρθει σχεδόν ολοκληρωτικά στα χέρια της Google.
Μπορεί το μοτο της Google να είναι "don't be evil" αλλά ας μην εθελοτυφλούμε. Η Google παρουσιάζει απίστευτο συγκεντρωτισμό ενώ τα τελευταία χρόνια γίνεται "evil" όλο και περισσότερο. Θα αναφέρω μόνο δύο παραδείγματα: To φιλτράρισμα των αποτελεσμάτων που με χαρά προσφέρει το Google China στην Κινεζική κυβέρνηση (και ποιος ξέρει τι γίνεται με τον "δυτικό" κόσμο) και το γεγονός ότι το Google αποθηκεύει τις αναζητήσεις και την IP μας για 9 μήνες (πρόσφατα ήταν 18-24 μήνες!).
Όμως η Google κάνει απλά την δουλειά της, όπως θα έκανε και οποιαδήποτε άλλη εταιρία στη θέση της. Το ζητούμενο είναι οι κοινότητες Ελεύθερου Λογισμικού και Ελευθερίας του Διαδικτύου να αναπτύξουν τις κοινοτικές υποδομές αναζήτησης που θα εξυπηρετούν τις ανάγκες μας στο μέλλον. Έτσι ώστε να μπορούμε να έχουμε ένα μέσο από την κοινότητα για την κοινότητα, που θα έχει διαφανή λειτουργία και θα είναι ελεύθερο.
Υπάρχουν ήδη κάποιες προσπάθειες προς αυτή την κατεύθυνση. Αφιέρωσα χρόνο σε δύο: το Yacy και το Grub / Wikia Search
Το Yacy είναι μία μηχανή αναζήτησης με την λογική P2P. Οι χρήστες μπορούν να τρέχουν το λογισμικού που θα κάνει το crawling (δηλαδή θα επισκέπτονται σελίδες και θα τις αποθηκεύουν) και στην συνέχεια το indexing, στον υπολογιστή τους. Επίσης ο κάθε υπολογιστής του δικτύου παρέχει, μέσω ενός web interface, την δυνατότητα αναζήτησης. Σε κάθε αναζήτηση επιστρέφονται αποτελέσματα από το indexing που έχει γίνει τοπικά όπως και από το indexing που έχουν κάνει άλλοι κόμβοι του δικτύου αυτού.
Εξαιτίας της P2P φύσης του, το Yacy είναι λίγο αργό στην επιστροφή των αποτελεσμάτων, γιατί πρέπει να επικοινωνήσει με άλλους κόμβους. Ωστοσό τα αποτελέσματα του είναι σχετικά καλά. Το πρόβλημα του Yacy είναι ότι δεν υποστηρίζει ελληνικά (και πιθανώς όλους τους non-latin χαρακτήρες) στην αναζήτησή του! Παρόλες τις ερωτήσεις τις ερωτήσεις που κάναμε στα forums του yacy, δεν πήραμε καν απάντηση γιατί συμβαίνει αυτό. Οπότε το yacy, που φαινόταν ενδιαφέρον και με δυνατό interface, είναι απλά άχρηστο.
(Update! Στο forum post που γκρινιάζαμε για το support, υπάρχουν πλέον απαντήσεις ότι το Yacy δουλεύει και με ελληνικά και με όλες τις γλώσσες!
)
Το δεύτερο έργο που κοίταξα είναι το Grub / Wikia Search. Στην πραγματικότητα είναι δύο έργα. Το Grub είναι ένας κατανεμημένος crawler, ενώ το Wikia Search είναι μία μηχανή αναζήτησης με δυνατότητες παρέμβασης του χρήστη που χρησιμοποιεί δεδομένα από το Grub.
Η λογική του Grub είναι απλή: Θα κατανείμουμε το crawling σε πολλούς χρήστες και θα συγκεντρώνουμε τα αποτελέσματα. Κάθε χρήστης πρέπει να τρέχει έναν client που συνδέεται με τον dispatch server του Grub και παίρνει ένα πακέτο σελίδων που πρέπει να επισκευτεί. Στη συνέχεια επισκέπτεται τις σελίδες και τις αποθηκεύει με ένα ειδικό format σε ένα αρχείο. Το τελικό αρχείο αποστέλλεται πάλι πίσω στο Grub. Υπενθυμίζω ότι το Grub δεν κάνει indexing και επομένως δεν είναι μηχανή αναζήτησης. Προσφέρει όμως απλόχερα τα αποτελέσματα του crawling σε όποιον θέλει να κάνει!
Εδώ έρχεται το Wikia Search. Το wikia search, θέλει να κάνει τον χρήστη μέρος της αναζήτησης, προσφέροντας την δυνατότητα σε αυτόν να επεξεργαστεί, να διαγράψει, να σχολιάσει και "προωθήσει" αποτελέσματα. Προσπαθεί τόσο πολύ να σε κάνει μέρος του site που μπορείς να μεταφράσεις on-the-fly το site τους στην γλώσσα σου! (Μερικά από τα ελληνικά είναι δικά μου
Βοηθήστε να το τελειώσουμε!)
Επίσης στην κατηγορία fun υπάρχουν αρκετά ενδιαφέροντα πράγματα που μπορείς να κάνεις με τα αποτελέσματα μιας αναζήτησης, όπως το Faviconnery (που συγκεντώνει τα fav icons από όλες τις σελίδες των αποτελεσμάτων). Επίσης μπορείτε να δείτε ζωντανά από ποιούς γίνεται οι τελευταίες προσθήκες στην μηχανή. Μάλιστα, η wikia προσφέρει υπό την άδεια CC-BY-SA 3.0 το index που χρησιμοποιεί για την αναζήτηση!
Τα αποτελέσματα και τον δύο μηχανών δεν μπορούν ακόμη να συγκριθούν με τα πολύ καλά αποτελέσματα άλλων μηχανών, όπως η Google. Είναι όμως προσπάθειες προς την σωστή κατεύθυνση της ελευθερίας και της διαφάνειας και είναι και έργα ελεύθερου λογισμικού. Οπότε είναι απλά θέμα χρόνου το πότε θα κερδίσουμε!
Ήδη δουλεύω σε έναν python based grub client και τώρα που το Yacy υποστηρίζει ελληνικά θα πρέπει να στήσω ξανά ένα node!
