bucket3

Το bucket3 (θα) είναι ένα blog engine γραμμένο σε python που παράγει στατικές σελίδες. Είναι ακόμη σε πολύ πρώιμο στάδιο, κατεβάστε το μόνο αν έχετε ώρα για χάσιμο και γνωρίζετε python.

Οι αρχές του:
- να δημιουργήσει ένα “περιβάλλον” για blogging που θα θυμίζει το modularity του unix: πολλά απλά εργαλεία που συνδυάζονται με εύκολους τρόπους για να καλύψουν κάθε περίεργη ανάγκη.
- το blog που παράγεται να είναι σε μία μορφή (βλ. static html) εύκολη να αντιγραφεί και να αρχειοθετηθεί, χωρίς να χρειάζονται πολύπλοκα εργαλεία.
- να είναι ένας “κουβάς” στον οποίο εγώ (ή άλλα προγράμματα, bots κ.λ.) ρίχνω πληροφορία (π.χ. κείμενα, εικόνες, audio) και αυτόματα μετατρέπονται σε blog posts.

Το συγκεκριμένο project με διάφορες μορφές γυρνάει εδώ και χρόνια στο μυαλό μου. (όσοι θυμούνται τα “audionotes” μου, ίσως να διακρίνουν μία μακρινή σχέση, αν και νομίζω ότι δεν είχα κάνει public τα scripts που είχα φτιάξει για αυτό τον σκοπό). Πηγές έμπνευσης, με περίεργους τρόπους: amazon s3, drop.io, jekyll

Θα με χαρακτήριζα python newbie. Κάθε διόρθωση στον (άσχημο!) κώδικα του bucket3 είναι ευπρόσδεκτη από python developers με μεγαλύτερη εμπειρία.

12 Responses to bucket3

  1. λ:ηρ says:

    Καλή αρχή. Υπόσχομαι πως αν έχω λίγο χρόνο ως τα Χριστούγεννα θα προσπαθήσω να κάνω κάτι contributed. Μου αρέσει πολύ η ιδέα του modularity + static portability — ειδικά έχοντας μετακομίσει το δικό μου blog διαπίστωσα από πρώτο χέρι τα προβλήματα που θα μπορούσε κανείς να αποφύγει με κάτι σαν το bucket3.

    (δελεαστική πρόταση: έλα τα Χριστούγεννα κι από Σικάγο και θα κάτσουμε οι 3 μας να δουλέψουμε το bucket3 — o David Beazley θα ναι ο τρίτος της παρέας).

  2. Chrys says:

    Ενδιαφέρον. Έχω μερικές ερωτήσεις.
    1. Γιατί blog platform; ‘Εχεις σκοπό να ρίξεις το matt απο το θρόνο του;
    2. Γιατί δεν χρησιμοποιείς το django;
    3. Δεν κατάλαβα τη χρήσιμότητα των static pages.

    αυτά. Μέχρι να πάρω τις απαντήσεις μου…

    git clone git://github.com/vrypan/bucket3.git

    :)

  3. Panayotis says:

    @λ:ηρ, η πρόταση δελεαστική. Θυμίζω όμως ότι είναι ταξίδι του μέλιτος και μάλλον αυτό που προτείνεις απέχει πολύ από αυτό που θα είχε η Ελίνα στο μυαλό της :-) Άσε που ΝΥ-Σικάγο δεν είναι και 10 λεπτά δρόμος… Thanks όμως!

  4. Panayotis says:

    @Chrys,
    1. Γιατί αυτό χρειάζομαι ;-)
    2. Too complex, σε αυτή την κατηγορία είναι και το WP με το οποίο είμαι μία χαρά.
    3. http://vrypan.net/weblog/2009/08/09/4792/

    Γενικά: το filesystem μου αρέσει ως DB και ως interface. Π.χ. με το bucket3 μπορείς χωρίς να γνωρίζεις καθόλου python να γράψεις ένα script (σε bash, σε όποια άλλη γλώσσα θες) στον server σου που να τραβάει κάθε μέρα τα twitter favorites σου, να τα βάζει σε ένα text file (.markdown) και να δημιουργεί ένα νέο post. Άσε που μπορείς να κάνεις ένα grep -R σε όλα τα post σου -ή ένα find … exec .. replace για να αλλάξεις παντού του παλιό σου email με το νέο…

  5. j95 says:

    3. Δεν κατάλαβα τη χρήσιμότητα των static pages.

    Για να σερβιριστεί ένα static page απαιτείται περίπου το 1/10 του χρόνου CPU και της μνήμης σε σχέση με το dynamic. Όταν έχεις εκατομμύρια hits την ημέρα το static μπορεί να κάνει τη διαφορά ανάμεσα στον server των 300 ευρώ το μήνα και στο server των 3000 ευρώ το μήνα.

  6. Με τα σχόλια τι σκέφτεσαι να κάνεις; outsourcing, π.χ. Disqus, ή θα τα χειρίζεσαι εσύ;

  7. Panayotis says:

    @Konstantinos: Στην αρχή outsource (ιδανικά, outsource + pull in περιοδικά, ώστε να υπάρχουν και στο σύστημα).

    Αλλά είπαμε: όπως το unix. Θα μπορούσε να υπάρχει κάποια στιγμή ένα open source σύστημα όπως το disqus που π.χ. να το εγκαθιστά κανείς στον server του ή στο AppEngine. Ή θα μπορούσε να υπάρχει ένα web interface που θα παίρνει το νέο σχόλιο και θα το σώζει στο filesystem σαν αρχείο.

    Πολλά από αυτά που λέω, τα κάνει ήδη το blogspot.com που “σερβίρει” στατικές σελίδες.

  8. Pingback: Κυριακή πρωί: apple tv 3.0, boxee, bucket3 – vrypan|net|weblog

  9. Δύο ερωτήσεις:

    1) Αν και διάβασα το wiki page περί SQLite, δεν κατάλαβα γιατί την χρειάζεσαι στο generation των στατικών αρχείων.

    2) Δοκίμασες κάποιο από τα πολλά διαθέσιμα projects που υπάρχουν γι’ αυτό το σκοπό και δε σε κάλυψε, ή απλά θες να φτιάξεις κάτι δικό σου;

    Καλή αρχή! :-)

  10. Panayotis says:

    @Aggelos:

    1) Ο parser (bucket3.py) σώζει προσωρινά τα στοιχεία των posts σε μία db ώστε να μπορεί εύκολα να κάνει τα queries που θα χρειαστούν για να δημιουργηθούν π.χ. οι index pages ή το rss feed (δεν υπάρχουν ακόμη, αλλά στο μέλλον). Θα μπορούσαν όλα αυτά να κρατιούνται στην ram σε κάποιο structure, αλλά νομίζω ότι η sqlite είναι καλύτερη λύση, που δεν θα έχει και πρόβλημα με χιλιάδες posts.

    Όμως στην db δεν σώζεται τίποτα που να μην υπάρχει στην δομή του filesystem. Μπορείς άνετα να την διαγράψεις, να ξανατρέξεις τον parser και θα δημιουργήσει ακριβώς το ίδιο blog -απλά ίσως να κάνει λίγο περισσότερο χρόνο.

    2) έχω ψάξει τα παρόμοια projects και τα έχω αναφέρει σε posts στο παρελθόν (π.χ. webby, jekyll, hyde, pyblosxom). Δεν με κάλυψαν :-)

  11. PanosJee says:

    Παναγιώτη μπορείς να ενσωματώσεις το mercurial. Είναι η python version του Git και θα μπορούσαν να γίνουν πολύ ενδιαφέροντα πράγματα. Πχ όλο το blog είναι ένα mercurial tree και το repost μπορεί να είναι ένα checkout κλπ κλπ

  12. @vrypan: Thanks. Ναι, το #1 τώρα έχει νόημα έτσι όπως το θέτεις. Εμένα το webby με έχει καλύψει απόλυτα (ήταν εντυπωσιακά όμοιο σε φιλοσοφία και δυνατότητες από ένα custom system που είχα πριν).