Ορμώμενος από το post "Εργασιακά" και έχοντας υποσχεθεί να δώσω στοιχεία για ένα όραμα που είχα, γράφω αυτό εδώ το post. Σιγουρα δεν μπορώ να περιγράψω τα πάντα σε λίγες γραμμές, θα προσπαθήσω όμως να το δώσω όσο καλύτερα μπορώ. Υπάρχουν πολλά κενά, αλλα αν δεν υπήρχαν, μαλλον θα το είχα υλοποιήσει, ετσι δεν ειναι; :)
Τι μου είπαν οι εμπειρίες μου
Δούλεψα αρκετό καιρό σε εταιρία Web Development και, γενικώς, έχω συνεχίσει ως ελεύθερος επαγγελματίας σε αυτό το κομμάτι, αν και ακόμα έχω "κολλήσει" περισσότερο στις παλαιότερες τεχνολογίες (ASP 3.0 / VB6 COM components). Ειδα διάφορες προσπάθειες εν τη γενεσει τους για Content Management και εφτιαξα και εγώ μερικά πραγματάκια, τα οποία για την τότε ωριμότητα της αγοράς ήταν ιδανικα ως εργαλεία. Η βασική μου νοοτροπία γύριζε πάντοτε γύρω από την εκμετάλλευση της XML και των XSL Transformations, κάτι που θα βρείτε αναλυτικά σε ένα άρθρο του blog μου, εδώ.
Αυτό που είδα και που δεν άλλαξε ως σήμερα ήταν οτι όλοι προσπαθούσαν να φτιάξουν το ίδιο πράγμα: Ενα CMS. Για Web. Για sites/portals. Αυτα. Από τα απλά προιοντα του 1999 ως τα opensource πραγματα του 2005 (δεν μιλάω βεβαια για προιοντα που για να τα αποκτήσεις πρέπει να δώσεις μαζί με την αμοιβή για την αγορά και το Ε9 σου) παντού βλέπω τον ίδιο στόχο. Το DotNetNuke έκανε ΛΙΓΟ διαφορα, αλλα αυτό μεσω plugins και οχι προς την κατεύθυνση την οποία θα ήθελα.
Τι εφτιαξα
Ηθελα κατι που να με βοηθάει να φτιάχνω γρήγορα sites. Απλα, μικρά, στο budget των 1000-1500 ευρώ το πολύ, εταιρικά με έμφαση στην ευελιξία της δομής. Εφτιαξα ενα manager (asp 3.0, xml/xslt, access, vb6 com) ο οποίος έκανε το εξής διαφορετικο απο οτι ειχα δει ως τωρα: Ειχε ευελιξία στο back-end στο οποίο μπορούσες να φτιάξεις "δεντρα" οπως τα ήθελες με κατηγορίες που κρατούσαν "κλασεις" εγγράφων τα οποία είχαν δυναμική δομή. Ετσι είχα custom φόρμες εισαγωγής στοιχείων. Ορίστε ένα παράδειγμα: (καντε κλικ εδω για να δειτε, ειναι μεγαλη εικονα)
Πως αντλούσα τα δεδομένα; Μα με τη μορφή ενός xml retriever (προσοχη: τοτε ακόμα τα webservices ήταν σε στάδιο αγονιμοποιητου ωαρίου) στον οποίο έλεγες "φερε το τάδε leaf με η χωρίς τα documents" ή "φερε την ιεραρχία σε βάθος 3 από εκεί" κλπ.
Πως εκανα render τα δεδομένα; Με XSLT και μόνο.
Ειχα λοιπον μια δυναμική δομή. Κατι μου έλεγε οτι δεν ήταν μόνο για web sites. Και οντως. Κατέληξα να φτιάξω βασισμένος πάνω στην ίδια δομή μια μικρή web-enabled εφαρμογή διαχείρισης πελατών. Τιποτα σπουδαίο. Αλλα μου έδωσε ιδέες.
Που θελω να παω απο εδω και περα;
Σε οποιο project και αν κανω το βλέπω μπροστά μου. Θελω να δημιουργήσω ένα information management foundation.
Τι σημαίνει αυτό; Πρακτικά ένα σύστημα δυναμικής διαχειρισης πληροφοριών οπου θα μπορεί κανείς να δημιουργεί μοντέλα πληροφορίας (φορμες, ιεραρχίες, συσχετίσεις μεταξύ αντικειμένων, ιεραρχίες/compositions αντικειμένων, direct/inverse relationships, infinite lookups, rule-based object creation, security roles, validation, etc. etc. etc) ΤΑ ΟΠΟΙΑ ΔΕΝ ΘΑ ΠΡΟΟΡΙΖΟΝΤΑΙ ΓΙΑ ΤΟ ΤΥΠΙΚΟ WEB CMS. Θα είναι μια βιβλιοθήκη μαζί με τη database της με ενα ΠΛΗΡΩΣ CUSTOMIZABLE back-end το οποίο θα μπορεί να σταθεί και μόνο του για τη δημιουργία εφαρμογών. Πειτε το application generator, αν και δεν ειναι αυτός ο όρος. Η, να χρησιμοποιηθεί ως back-end για κάποιο άλλο front-end παρουσίασης (π.χ. ένα portal). Η, να χρησιμοποιηθεί ολο μαζί για την επέκταση κάποιου άλλου λογισμικού χωρίς να χρειάζεται να ξαναγραφτεί κώδικας από την αρχή.
Η εμφαση δεν θα δίνεται στις λειτουργίες του back-end (οπως στο DNN, π.χ. οπου λιγο πολυ ειναι fixed τα πραγματα που μπορεις να κανεις) αλλα στο ιδιο το περιεχόμενο. Επειδή αυτό από περίπτωση σε περίπτωση θα διαφέρει το back-end πρέπει να είναι τόσο προσαρμόσιμο ωστε να εκφράζει το είδος του περιεχομένου.
Περίπλοκο ως εδω; Να δείτε τι γίνεται με τα προβλήματα που θα έχει αυτό.
Προβλημα 1ο: Χρόνος
Για να κάνεις κάτι τέτοιο χρειάζεται χρόνος που δεν υφίσταται εκτός αν κερδίσεις το Τζοκερ Η ΠΑΡΕΙΣ ΧΡΗΜΑΤΟΔΟΤΗΣΗ. Και ερχομαστε στο προβλημα 2.
Προβλημα 2: Χρηματοδότηση
Ποιός θα χρηματοδοτήσει κάτι το οποίο δεν μπορεί να γίνει κατανοητό σε non-IT ανθρώπους; Δεν μιλάμε για ολοκληρωμένο προιον, αλλα για το 80% foundation του κάθε φορά υποψήφιου προϊόντος. Δεν ειναι λιγο μυστήριο για τα Ελληνικά δεδομένα;
Προβλημα 3: Πελατες
Εδω ειναι η συνέχεια του προβλήματος 2. Σε ποιούς απευθύνεται; Σιγουρα οχι σε τελικούς χρήστες. Αρα είναι κάτι που μπορεί να πωληθεί ως foundation σε εταιρίες κατασκευής λογισμικού ή να χρησιμοποιηθεί ως βάση για τη δική σας εταιρία λογισμικού. Ομως, και εδώ τα πράγματα δεν ειναι ξεκάθαρα. Το προϊόν δεν ειναι εμπορική διαχείριση, δεν ειναι cms, δεν ειναι document management, δεν ειναι workflow. Ειναι όμως η βάση για όλα αυτά.
Προβλημα 4: Κατανόηση
Σιγουρα διαβάζοντας τα παραπανω (οσοι αντέξατε ως εδώ) θα αναφωνήσατε: "Καλα, αυτος θελει να φτιαξει πολυκατοικία!" "Θελει να φτιάξει workflow!" "Θελει να φτιάξει CMS και δεν ξερει πως να το πει!" "Θελει να φτιάξει κατι που να τα κανει ολα!" Χμ, ισως ολα αυτα ισως και τίποτα απο αυτα. Οπως ειπα, ειναι μια ιδέα προς συζήτηση. Μια ιδέα που αν είχε όλες τις προϋποθέσεις σίγουρα θα είχε γίνει προϊόν. Δεν τις έχει όμως, ακόμα. Το post του rousso ομως σε προηγούμενη συζήτηση μου έδωσε την αφορμή να "ριξω" τις σκέψεις μου εδώ και να τις συζητήσουμε.
Ελπίζω να μην σας κούρασα και αν δεν καταλάβατε πολλά μην εκνευριστείτε και μην με βρίσετε!. Γραφω απο τη δουλειά και δεν μπορω να αναλώσω άπειρο χρόνο σε ενα post συνεχόμενα, γιατί θα με...κράξουν στο τέλος και θα έχουν δικιο :) Αρα περιμένω feedback και εδώ είμαστε.
Σωτήρης Φιλιππίδης
DotSee Web Services