Κατά τη λειτουργία του, το Firefox χρησιμοποιεί έναν κατάλογο ρυθμίσεων, που ονομάζεται «προφίλ», για τη διατήρηση όλων των στοιχείων του χρήστη, όπως οι σελιδοδείκτες, το ιστορικό και οι επεκτάσεις. Κατά την εκκίνηση, το Firefox επιλέγει αυτόν τον κατάλογο βάσει μερικών κριτηρίων, όπως τα ορίσματα της γραμμής εντολών, οι μεταβλητές περιβάλλοντος και ένα αρχείο που αναγράφει τα γνωστά και τα προεπιλεγμένα προφίλ.
Στόχος του Firefox 67 ήταν να επιτρέψει στους χρήστες την ταυτόχρονη χρήση διαφορετικών εγκαταστάσεών του χωρίς ορίσματα στη γραμμή εντολών και να σταματήσει τη χρήση των προφίλ με παλαιότερες εκδόσεις, καθώς η συμπεριφορά αυτή δεν υποστηρίζεται και είναι γνωστό ότι προκαλεί προβλήματα που ανιχνεύονται και διορθώνονται δύσκολα, ενώ σε μερικές περιπτώσεις είναι τόσο σοβαρά που καθιστούν το Firefox εντελώς ασταθές. Για τον λόγο αυτό, πραγματοποιήθηκαν αλλαγές στη διαδικασία της επιλογής προφίλ.
Αυτό το άρθρο εξηγεί λεπτομερώς πώς λειτουργούσε στο παρελθόν η επιλογή των προφίλ, πώς λειτουργεί πλέον στο Firefox 67 και πώς γίνεται η μετάβαση για τους χρήστες παλαιότερων εκδόσεων.
Πίνακας περιεχομένων
Παλαιότερη συμπεριφορά
Κατά την εκκίνηση, το Firefox φορτώνει μια λίστα με τα προφίλ από το αρχείο «profiles.ini», που βρίσκεται σε μια συγκεκριμένη τοποθεσία στον προσωπικό κατάλογο του χρήστη. Περιλαμβάνει μερικές ρυθμίσεις και μια λίστα με τα προφίλ και τις τοποθεσίες τους στον δίσκο. Ένα από αυτά ορίζεται ως το προεπιλεγμένο προφίλ. Αυτή η προεπιλογή ισχύει για οποιαδήποτε έκδοση ή εγκατάσταση του Firefox που εκτελεί ο χρήστης.
Έπειτα, το Firefox ελέγχει έναν αριθμό μεταβλητών περιβάλλοντος και ορισμάτων γραμμής εντολών που μπορούν να παρακάμψουν το προεπιλεγμένο προφίλ. Το παρόν άρθρο δεν καλύπτει λεπτομερώς αυτήν τη συμπεριφορά, καθώς δεν έχει αλλάξει. Μόλις γίνει αυτός ο έλεγχος, το Firefox θα έχει επιλέξει κάποιο προφίλ για εκτέλεση ή δεν θα έχει βρει κανένα.
Εάν δεν εντοπιστεί κάποιο προφίλ, ενώ υπάρχουν καταχωρήσεις στο profiles.ini (αυτό σημαίνει ότι υπάρχει ένα εσφαλμένο όρισμα γραμμής εντολών ή ότι δεν έχει οριστεί κανένα προφίλ ως προεπιλεγμένο), τότε εμφανίζεται η Διαχείριση προφίλ που επιτρέπει στον χρήστη να επιλέξει ή να δημιουργήσει ένα νέο προφίλ για χρήση ως προεπιλογή.
Εάν δεν βρεθεί κανένα προφίλ και το profiles.ini είναι κενό, αυτό θεωρείται ως πρώτη εκτέλεση του Firefox και δημιουργείται ένα νέο κενό, προεπιλεγμένο προφίλ, το οποίο χρησιμοποιείται χωρίς την παρέμβαση του χρήστη.
Ο χρήστης μπορεί να αλλάξει το προεπιλεγμένο προφίλ ανά πάσα στιγμή μέσω της Διαχείρισης προφίλ. Αυτό αλλάζει την προεπιλογή για όλες τις εγκαταστάσεις και τις εκδόσεις του Firefox.
Firefox Developer Edition
Μια επιπλοκή είναι το Firefox Developer Edition που χρησιμοποιεί ένα διαφορετικό προεπιλεγμένο προφίλ από τις άλλες εκδόσεις του Firefox. Αυτό επιτυγχάνεται παραβλέποντας τον δείκτη του προεπιλεγμένου προφίλ στο profiles.ini και χρησιμοποιώντας το προφίλ με όνομα «dev-edition-default» ως προεπιλογή. Αυτή η διαφορά προκαλεί διάφορα σφάλματα και για τον λόγο αυτό, υπήρξε η επιθυμία να κάνουμε το Developer Edition να συμπεριφέρεται όπως οι άλλες εκδόσεις.
Πολλαπλές παρουσίες
Μια ακόμα λεπτομέρεια είναι το τι συμβαίνει όταν εκτελείται ήδη μια παρουσία του Firefox. Πριν από την επιλογή του προφίλ, το Firefox επιχειρεί να βρει μια υπάρχουσα παρουσία του στο σύστημα. Αν υπάρχει κάποια, τότε αντί να γίνει εκ νέου εκκίνηση, τυχόν ορίσματα της γραμμής εντολών αποστέλλονται στην υπάρχουσα παρουσία και εκτελούνται εκεί.
Στα Windows, μπορεί να εκτελείται μόνο μία παρουσία του Firefox τη φορά, εκτός κι αν χρησιμοποιηθεί το όρισμα «-no-remote» στη γραμμή εντολών για τις επιπρόσθετες παρουσίες. Αυτές θα εκκινηθούν ανεξάρτητα από την άλλη εκτελούμενη παρουσία. Επίσης, οι παρουσίες αυτές δεν θα ανιχνευθούν από τυχόν μελλοντικές εκκινήσεις του Firefox, οι οποίες θα πραγματοποιηθούν εάν δεν βρεθεί καμία κανονική παρουσία. Όταν εκτελούνται πολλαπλές παρουσίες, θα πρέπει η καθεμιά να χρησιμοποιεί ένα ξεχωριστό προφίλ. Χρησιμοποιούνται κλειδώματα προφίλ για την εξασφάλιση αυτής της συνθήκης.
Στο Linux, τα πράγματα είναι παρόμοια αλλά λίγο πιο πολύπλοκα. Αν περαστεί ένα όρισμα γραμμής εντολών που καθορίζει κάποιο προφίλ, τότε το Firefox θα επιχειρήσει να το βρει και να το αποστείλει σε μια υπάρχουσα παρουσία. Εάν δεν βρεθεί, η εκκίνηση θα συνεχίσει. Επίσης, μπορεί να περαστεί το όρισμα «-new-instance» που προκαλεί εκκίνηση του Firefox, ανεξάρτητα από τις υπάρχουσες παρουσίες.
Νέα συμπεριφορά
Από την έκδοση 67 του Firefox και έπειτα, αντί να υπάρχει ένα προφίλ για όλες τις εγκαταστάσεις του Firefox, κάθε εγκατάσταση (βάσει της τοποθεσίας στον δίσκο αφού ακολουθηθούν τυχόν συμβολικοί δεσμοί) διαθέτει το δικό της προεπιλεγμένο προφίλ.
Κατά την εκκίνηση, το Firefox εξακολουθεί να φορτώνει το profiles.ini, το οποίο περιέχει τις ίδιες πληροφορίες με πριν. Κάποιο από τα γνωστά προφίλ ενδέχεται να έχει επισημανθεί ως η παλιά προεπιλογή. Επιπλέον, το profiles.ini περιλαμβάνει πλέον μια λίστα με τις εγκαταστάσεις του Firefox. Το όνομα κάθε νέας καταχώρησης βασίζεται σε ένα hash του καταλόγου εγκατάστασης του Firefox. Κάθε καταχώρηση εγκατάστασης περιέχει την τοποθεσία του ξεχωριστού προφίλ για τη συγκεκριμένη εγκατάσταση, καθώς και έναν δείκτη για το αν το προφίλ είναι «κλειδωμένο» σε αυτήν την εγκατάσταση.
Όπως και πριν, το Firefox εξακολουθεί να κάνει έλεγχο για ορίσματα γραμμής εντολών και μεταβλητές περιβάλλοντος που μπορούν να παρακάμψουν τη διαδικασία επιλογής του προεπιλεγμένου προφίλ. Μετά το πέρας αυτού του ελέγχου, εάν υπάρχει ήδη κάποιο ξεχωριστό προφίλ για αυτήν την εγκατάσταση, τότε αυτό θα χρησιμοποιηθεί ως προεπιλογή και η εκκίνηση συνεχίζεται.
Εκεί που διαφοροποιείται η συμπεριφορά είναι όταν δεν υπάρχει κάποιο ξεχωριστό προφίλ για τη συγκεκριμένη εγκατάσταση (αυτό περιλαμβάνει την περίπτωση όπου το Firefox εκκινείται ως αποτέλεσμα μιας επανεκκίνησης και η προηγούμενη εκτέλεση χρησιμοποιούσε το παλιό προφίλ· αυτό συμβαίνει συνήθως κατά τη διάρκεια μιας αυτόματης επανεκκίνησης, με σκοπό την εφαρμογή μιας ενημέρωσης στην έκδοση 67 ή νεότερες).
Εάν η καταχώρηση της εγκατάστασης υπάρχει στο profiles.ini, αλλά δεν σχετίζεται με κανένα υπάρχον προφίλ (ίσως έχει διαγραφεί), τότε δημιουργείται και χρησιμοποιείται ένα νέο, ξεχωριστό προφίλ.
Εάν δεν υπάρχει καμία καταχώρηση εγκατάστασης στο profiles.ini, τότε αυτό θεωρείται ως πρώτη εκτέλεση της εγκατάστασης αυτής στην έκδοση 67 ή νεότερη. Σε αυτήν την περίπτωση, χρησιμοποιείται μια ευρετική τεχνική για να αποφασιστεί εάν θα δημιουργηθεί ένα νέο, ξεχωριστό προφίλ ή εάν θα επισημανθεί το παλιό προφίλ ως η νέα προεπιλογή για αυτήν την εγκατάσταση:
- Περιέχει το παλιό προφίλ ένα αρχείο «compatibility.ini» και μπορεί να αναλυθεί; Αν όχι, τότε δημιουργείται ένα νέο, ξεχωριστό προφίλ και συνεχίζεται η εκκίνηση. (Μόνο οι πολύ παλιές εκδόσεις του Firefox δεν δημιουργούν αυτό το αρχείο· εάν απουσιάζει, αυτό σημαίνει ότι το προφίλ είναι εντελώς κενό ή τόσο παλιό που δεν μπορεί να χρησιμοποιηθεί στις σύγχρονες εκδόσεις του Firefox).
- Το αρχείο «compatibility.ini» περιλαμβάνει πληροφορίες σχετικά με την τελευταία εγκατάσταση του Firefox που χρησιμοποίησε το παλιό προφίλ. Αν αυτό την τελευταία φορά από μια διαφορετική εγκατάσταση του Firefox, τότε δημιουργείται ένα νέο, ξεχωριστό προφίλ και συνεχίζεται η εκκίνηση.
- Γίνεται έλεγχος εάν κάποια άλλη εγκατάσταση του Firefox έχει επισημάνει το παλιό προφίλ ως ξεχωριστό και αν το προφίλ έχει επισημανθεί ως «κλειδωμένο» στη συγκεκριμένη εγκατάσταση. Αν συμβαίνει αυτό, δημιουργείται ένα νέο, ξεχωριστό προφίλ και συνεχίζεται η εκκίνηση.
- Επισημαίνεται το παλιό προφίλ ως το ξεχωριστό προφίλ της συγκεκριμένης εγκατάστασης, αφαιρείται από τις άλλες εγκαταστάσεις του Firefox (γίνεται με τέτοιο τρόπο ώστε, κατά την επόμενη εκκίνηση, θα δημιουργηθεί ένα νέο προφίλ αντί να χρησιμοποιηθεί το παλιό). Συνεχίζεται η εκκίνηση. Σε αυτό το σημείο, το προφίλ εξακολουθεί να είναι επισημασμένο ως παλιό, επομένως οι παλαιότερες εκδόσεις του Firefox θα συνεχίσουν να το χρησιμοποιούν ως προεπιλογή, μέχρι να ενημερωθούν.
- Σε μεταγενέστερο στάδιο της εκκίνησης (αυτό δεν μπορεί να γίνει στα πρώτα στάδια της εκκίνησης για διάφορους λόγους), γίνεται έλεγχος εάν αυτή η εγκατάσταση του Firefox έχει οριστεί ως το προεπιλεγμένο πρόγραμμα περιήγησης του λειτουργικού συστήματος. Αν είναι η προεπιλογή, τότε το ξεχωριστό προφίλ ορίζεται ως «κλειδωμένο» σε αυτήν την εγκατάσταση.
Ο χρήστης μπορεί ακόμα να αλλάξει το ξεχωριστό προφίλ για αυτήν την εγκατάσταση του Firefox από τη Διαχείριση προφίλ. Η αλλαγή θα εφαρμοστεί μόνο για τη συγκεκριμένη εγκατάσταση. Η επιλογή του προφίλ με αυτήν τη μέθοδο θα το επισημάνει ως «κλειδωμένο» για την εγκατάσταση.
Firefox Developer Edition
Με το Firefox Developer Edition 67, η διαδικασία επιλογής του προεπιλεγμένου προφίλ έχει γίνει πιο απλή. Το Developer Edition χρησιμοποιεί πλέον το ίδιο σύστημα επιλογής ξεχωριστών προφίλ με τις άλλες εκδόσεις του Firefox 67, ενώ δεν βασίζεται πλέον σε προφίλ με ειδική ονομασία.
Πολλαπλές παρουσίες
Και η εκτέλεση πολλαπλών παρουσιών του Firefox άλλαξε στο Firefox 67. Πλέον, οι συμπεριφορές στα Windows και στο Linux είναι πανομοιότυπες:
Κατά την εκκίνηση, το Firefox εκτελεί την πλήρη διαδικασία επιλογής προφίλ για να καθορίσει το επιθυμητό προφίλ βάσει των ορισμάτων γραμμής εντολών, των μεταβλητών περιβάλλοντος και τις πληροφορίες του προεπιλεγμένου προφίλ. Έπειτα, το Firefox αναζητά τυχόν υπάρχουσες παρουσίες του που χρησιμοποιούν το επιθυμητό προφίλ. Εάν υπάρχει κάποια, τότε τα ορίσματα της γραμμής εντολών αποστέλλονται στην υπάρχουσα παρουσία αντί να γίνει εκ νέου εκκίνηση.
Αυτό είναι πολύ χρήσιμο, καθώς μπορείτε να εκτελείτε ταυτόχρονα διαφορετικές εγκαταστάσεις του Firefox χωρίς επιπρόσθετα ορίσματα στη γραμμή εντολών και καθεμιά θα έχει το δικό της προεπιλεγμένο προφίλ. Για παράδειγμα, αν εκτελείτε το Firefox Beta και το κανονικό Firefox είναι το προεπιλεγμένο πρόγραμμα περιήγησης του λειτουργικού συστήματος, τότε το άνοιγμα ενός συνδέσμου από μια άλλη εφαρμογή θα εκκινήσει το κανονικό Firefox, ενώ παλαιότερα ο σύνδεσμος θα ανοιγόταν σε όποιο Firefox εκτελούταν ήδη εκείνη τη στιγμή.
Με αυτήν τη λειτουργία, δεν απαιτούνται πλέον τα «-no-remote» και «-new-instance» για την εκτέλεση διαφορετικών παρουσιών του Firefox ταυτόχρονα, αλλά δεν θα προκύψει σφάλμα ακόμα κι αν χρησιμοποιηθούν.
Αποκλεισμός υποβαθμίσεων
Μια ακόμα αλλαγή στο Firefox 67 είναι η ανίχνευση της υποβάθμισης ενός προφίλ. Κατά την εκκίνηση, το Firefox εξετάζει το προφίλ για να διαπιστώσει εάν χρησιμοποιήθηκε τελευταία φορά από μια νεότερη έκδοση του Firefox από αυτή που προσπαθεί να εκκινήσει ο χρήστης. Αυτό είναι γνωστό ότι προκαλεί πολλά προβλήματα που δεν είναι πάντα προφανή. Το Firefox θα σταματάει πλέον τον χρήστη από το να κάνει κάτι τέτοιο, προσφέροντας αντίθετα την επιλογή δημιουργίας ενός νέου προφίλ.
Απενεργοποίηση αλλαγών
Μπορείτε να αναιρέσετε τις αλλαγές στη διαδικασία επιλογής προφίλ τροποποιώντας τη μεταβλητή περιβάλλοντος «MOZ_LEGACY_PROFILES». Ωστόσο, αυτή η ενέργεια δεν θα αναιρέσει τις αλλαγές στην εκτέλεση πολλαπλών παρουσιών. Ο αποκλεισμός των υποβαθμίσεων μπορεί να παρακαμφθεί ρυθμίζοντας τη μεταβλητή περιβάλλοντος «MOZ_ALLOW_DOWNGRADE» ή περνώντας το όρισμα «--allow-downgrade» στη γραμμή εντολών κατά την εκτέλεση του Firefox.