Linux αλλά static !!!

Δημοσθένης | Τετ, 10/03/2012 - 13:26 | 4' | 57

Καλημέρα,

αν και δεν γράφω συχνά στο φόρουμ μου ήρθε μια ιδέα που την βρήσκω ιδιαίτερα δελεαστική για συζήτηση.

Όσοι ασχολούνται με το Ubuntu θα γνωρίζουν το όραμα του Mark Shuttleworth που ο ίδιος δεν έχει κρύψει, δλδ να δημιουργήσει το αντίστοιχο mac os του linux κάτω από το όνομα ubuntu.

Οι αρχές που διέπουν αυτό το όραμα είναι:
- απλότητα
- να λειτουργούν τα πάντα
- ευκολία
- ολοκληρωμένες λύσεις όπως Find anything from dash lens!

Το ubuntu στα πρώτα χρόνια κινήθηκε στο να δημιουργήσει μια διανομή for human beings και έβαλε μια τάξη στο χαοτικό κόσμο των εξαρτήσεων των πακέτων, στις άπειρες βιβλιοθήκες που άλλες δουλεύαν και άλλες όχι και έκανε το linux μια desktop διανομή για το πολύ κόσμο.

Αυτή η πολιτική της canonical βασίστηκε στις αρχές "ευκολία, απλότητα, να λειτουργούν τα πάντα"

Κατόπιν στα τελευταία χρόνια βλέπουμε να γίνεται μια προσπάθεια να μιμηθεί καλούδια που κάποιος βρήσκει στα mac. Με αλλαγές στο user interface κτλ.

Κάτι όμως λείπει!

Η σταθερότητα που κανείς βλέπει στα mac και ότι όλα λειτουργούν δεν είναι μόνο στην αρχιτεκτονική posix του bsd που υπάρχει από κάτω.

Υπάρχει και η φιλοσοφία των static εφαρμογών.

Όσοι θα έχετε mac θα έχετε δει ότι η Apple και άλλοι software developers δεν κάθονται να μπλέκονται με εξαρτήσεις και βιβλιοθήκες.

Οι βιβλιοθήκες είναι για τους προγραμματιστές που θέλουν να υλοποιήσουν το τάδε feature και θα πάρουν την τάδε βιβλιοθήκη.
Ο τελικός χρήστης θέλει το εκτελέσιμο να λειτουργεί!

Οι εποχές που δεν είχαμε χώρο στον σκληρό έχουν παρέλθει. Το μακρινό παρελθόν των δίσκων των MB έχει περάσει και τώρα με 100 ευρώ έχεις 2ΤΒ.

Οπότε η σταθερότητα και η ευκολία έρχεται με τις λεγόμενες static εφαρμογές.

Θα έχετε δει ότι στα mac κατεβάζετε μια εφαρμογή και δεν θέλει install.
Απλά την αντιγράφεται στο αντίστοιχο Program Files.
Και αν θέλετε να την απεγκαταστήσετε απλά delete ένα αρχείο.
Και το σύστημα μένει ανέπαφο!

Τίποτα δεν χτυπάει αν εγκαταστήσετε άλλη εφαρμογή, τίποτα δεν απαιτεί την τάδε βιβλιοθήκη και όλα έχουν μια σιωπηλή σταθερότητα σε ένα βράχο bsd.

Οπότε μήπως ήρθε η ώρα να σκεφτούμε και μεις ή ίσως η canonical αλλά και όχι μόνο οποιαδήποτε διανομή να περάσουμε στην εποχή που όλες οι εφαρμογές θα είναι static?

Ήδη πολλά προγράμματα το κάνουν δείτε blender για παράδειγμα.

Πέραν αυτού εκτός από static είναι και portable να σημειώσω.
Βάζεις το blender στο usb stick και το τρέχεις στο Linux του φίλου σου ή στο σχολείο σου κτλ...

Μήπως πρέπει να περάσουμε στην εποχή λοιπόν του static linux?

 

Δώσε αστέρια!

MO: (ψήφοι: 0)

Σχόλια

Δημοσθένη κάτι άσχετο !!!
Με την ευκαιρία μιας και είσαι εδώ, και μιας και ασχολείσαι με τον προγραμματισμό...
Ξέρεις που παίζει κάποια μηχανή-περιβάλλον ανάπτυξης όπου να υπάρχουν έτοιμες
κλάσεις π.χ. με χαρακτήρες παιχνιδιών ώστε να τις παίρνω έτοιμες και να
δημιουργώ αντικείμενα πολεμίστριες (λέω τώρα ....) ώστε να γράφω

sexy_polemistria *xxpol1 = new sexy_polemistria(μπλα, μπλα, ορισματα, ...);

if(xxpol1->σεξυ_ματι_is_open() = = true) // το true δε χρειάζεται ...
{
    το αντικείμενο πολεμιστης πεθαίνει από τη γοητεία της .... ;
}
else
// και πάει λέγοντας

Λέω τώρα ... αν ξέρεις τίποτε γιατί δεν ξέρω που να ψάξω ....

ΥΓ1: Αν θέλεις ανοίγω άλλο tread γι'αυτό το θέματάκι ...
ΥΓ2: Προς το site ... Sorry για το άσχετο .... Aπλά με καίει .... tom1972

tom1972]Δημοσθένη κάτι άσχετο !!!
Με την ευκαιρία μιας και είσαι εδώ, και μιας και ασχολείσαι με τον προγραμματισμό...
Ξέρεις που παίζει κάποια μηχανή-περιβάλλον ανάπτυξης όπου να υπάρχουν έτοιμες
κλάσεις π.χ. με χαρακτήρες παιχνιδιών ώστε να τις παίρνω έτοιμες και να
δημιουργώ αντικείμενα πολεμίστριες (λέω τώρα ....) ώστε να γράφω

sexy_polemistria *xxpol1 = new sexy_polemistria(μπλα, μπλα, ορισματα, ...);

if(xxpol1->σεξυ_ματι_is_open() = = true) // το true δε χρειάζεται ...
{
    το αντικείμενο πολεμιστης πεθαίνει από τη γοητεία της .... ;
}
else
// και πάει λέγοντας

Λέω τώρα ... αν ξέρεις τίποτε γιατί δεν ξέρω που να ψάξω ....

ΥΓ1: Αν θέλεις ανοίγω άλλο tread γι'αυτό το θέματάκι ...
ΥΓ2: Προς το site ... Sorry για το άσχετο .... Aπλά με καίει .... tom1972

έλα εδώ 

Το μεγαλλίερο "πρόβλημα" του linux (εάν μπορεί να το πεις κανείς έτσι, αλλά σίγουρα από την πλευρά ενός σοβαρού παραγωγού που θέλει το πρόγραμμά του να τρέχει παντού είναι πρόβλημα) είναι η έλλειψη standards. Και όταν λέω standards στην προκείμενη συζήτηση εννοώ την ύπαρξη ενός ελάχιστου αριθμού εξαρτήσεων που θα είναι κοινές ή τουλαχιστον (διαχρονικά) συμβατές στους περισσότερους υπολογιστές που τρέχουν linux.

Η Apple (με την εντελώς κλειστή πλατφόρμα ανάπτυξης) και η Microsoft, αμφότερες με αραιές αναβαθμίσεις και εκδόσεις έχουν πετύχει να δημιουργήσουν ένα standard. Ο προγραμματιστής ξέρει ότι για την συγκεκριμένη λειτουργία μπορεί να ανατρέξει στην συγκεκριμένη προεγκατεστημένη dll ή σε εσωτερικές συναρτήσεις και διαδικασίες η οποία θα εκτελέσει την λειτουργία σε κάθε περίπτωση. Επίσης, ο προγραμματιστής για τον λόγο αυτό ξέρει όχι μόνο ότι η εφαρμογή του θα τρέξει (εφόσον πληρούνται και οι απαιτήσεις υλισμικού) σε κάθε υπολογιστή με OS ή Windows, αλλά και ότι σε βάθος χρόνου το πρόγραμμα έχει αυξημένες πιθανότητα να είναι συμβατό με νεώτερες εκδόσεις του λειτουργικού με ή χωρίς καθόλου (μικρότερες) τροποποιήσεις του κώδικα.

Αυτός εξάλλου είναι και ο λόγος για τον οποίο το Android δεν είναι τόσο ελκυστικό στους προγραμματιστές σε σχέση με το iOS: ο προγραμματιστής στο Android πρέπει να προβλέψει μόνος του το σύνολο των διαφορετικών συσκευών που τρέχουν Android - με το iOS έχει μόνο 3 συσκευές και το SDK παρέχει αυτόματα παραμετροποίηση για κάθε μία.

Στο linux ο κανόνας αυτός αντιστρέφεται και μάλιστα βίαια. Η ποικιλία και οι συνεχείς αναβαθμίσεις των εξαρτήσεων δημιουργούν ένα τεράστιο πρόβλημα. Δεν είναι λίγες οι φορές που μια αναβάθμιση από την έκδοση π.χ. χ.χ.1 στην χ.χ.2 επιφέρει τόσες πολλές αλλάγες στην εξάρτηση, ώστε εν τέλει η εφαρμογή σου να πάυει να λειτουργεί, ενδεχομένως ακόμη και όσο την αναπτύσεις, με αποτέλεσμα να πονοκεφαλιάζεις από την αναθεώρηση του κώδικα που έχεις ήδη ολοκληρώσει.

Για μένα το θέμα μεταξύ στατικής και δυναμικής σύνδεσης των εξαρτήσεων δεν αποτελεί τίποτε περισσότερο από μια προγραμματιστική επιλογή, στην οποία καταλήγεις λαμβάνοντας υπόψη πολλά κριτηρία.

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

Σκεφτείτε να έχετε μια εταιρία παραγωγής ηλ.παιχνιδιών και να πρέπει να φτιάξετε ένα σύγχρονο παιχνίδι που να τρέχει στις περισσότερες μεγάλες διανομές. Πώς θα εξασφαλίσετε ότι σε βάθος 1-2 ετών (όσο δηλαδή κατά την συνήθη πορεία των πραγμάτων ένα σχετικά πετυχημένο παιχνίδι κυκλοφορεί κανονικά στο εμπόριο) θα τρέχει απροβλημάτιστα. Εδώ η Cannonical μόνο θα έχει διανήμει 4 διαφορετικές εκδόσεις του Ubuntu (έχοντας φυσικά μόνο υπόψη της ότι to παρεχόμενο CD θα εγκαθιστά ένα σταθερό λειτουργικό - και όχι ότι θα τρέχει το σύνολο των εφαρμογών σtο λειτουργικό αυτό). Μόνο που σκέφτομαι τα αιτήματα τεχνικής υποστήριξης που θα δεχόταν η εταιρία παραγωγής πονάει το κεφάλι μου...

To DirectX είναι ο μοναδικός λόγος για τον οποίο παιχνίδια παράγονται κυρίως για Windows και όχι για άλλα λειτουργικά.

Η λύση λοιπόν δεν η στατική έναντι της δυναμικής σύνδεσης των εξαρτήσεων, αλλά η δημιουργία ελάχιστων standards (όσο ξένο ή "τρομακτικό" και αν ακούγεται αυτό στον χώρο του Linux) και ο περιορισμός της "πολυνομίας", ώστε να ξέρει ο κάθε προγραμματιστής ότι τουλάχιστον αυτά τα 2, 3, 10 ή 100 πράγματα θα δουλέυουν σε κάθε περίπτωση.

ωραία,,,,

και ποιος θα βάλει τα standards στο χάος (με την πολύ καλή ένοια) των βιβλιοθηκών στο linux?

Μια εταιρεία ίσως; RedHat, Canonical, SUSE, ένα ίδρυμα Debian?

Δεν βλέπω άλλους; το kernel.org είναι ειδική περίπτωση μιλάμε για εφαρμογές. 

Το ξέρω ότι είναι δύσκολο. Οι δύο περιπτώσεις για να συμβεί αυτό είναι είτε μέσω κάποιου DE (gnome, kde κ.λπ) είτε μια μεγάλη διανομή να αποφάσισει να θέσει.

Το μόνο σίγουρο είναι ότι οι αντιδράσεις θα είναι τεράστιες σε κάθε περίπτωση, αφού θα θεωρηθεί περιορισμός. Και εν τέλει στον χώρο και την λογική (φιλοσοφία) του Linux αυτό να είναι..

Νομίζω ότι εάν θέλουμε να δούμε παιχνίδια στο Linux θα πρέπει να ανατπύξουμε κάτι αντίστοιχο του DirectX των Windows. Κομμάτια υπάρχουν διάσπαρτα (ogre3d, irrklag, ODE κ.λπ.), αλλά θα πρέπει κάποιος να τα συγκεντρώσει και να εναρμονίσει σε ένα αξιόπιστο και σταθερο framework (ενδεχομένως με βάση την Qt/C++ ώστε να είναι cross platform και άρα πιο ελκυστικό για τους προγραμματιστές).

Λοιπόν μια διόρθωση ... τελικά στο Mac OS δεν είναι static τα προγράμματα.

τα app αρχεία είναι στην ουσία ένας κατάλογος με το εκτελέσιμο και τις βιβλιοθήκες και ότι άλλο έχει η εφαρμογή και χρησιμοποιεί και βιβλιοθήκες του συστήματος.

Μου έλυσε την απορία ένας φίλος.