A side-project

Aperto da emanuele, Lunedì - 03 Novembre 2014 - 21:51

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

emanuele

In queste ultime due settimane sono stato piuttosto impegnato con un progetto "collaterale".
Qualche tempo fa, scorrendo un topic dove veniva pubblicizzato ElkArte, ho letto un'affermazione che mi ha fatto pensare, più o meno suonava tipo: "non provo ad usarlo perché se poi non mi piacesse mi troverei a dover pagare qualcuno per scrivere un convertitore ad un altro script".

Non ha tutti i torti: per provare "veramente" un programma l'unico modo è usarlo, ma usarlo in questo caso potrebbe costare parecchio: se non rispetta le aspettative.

Così, ho "riscoperto" un programma che aveva iniziato a scrivere TE (anch'egli ex-sviluppatore di SMF): OpenImporter (OI per brevità).
OI si prefigge di essere una "piattaforma" di conversione, in pratica un sistema che consenta di convertire tra diversi software.
L'obiettivo è ambizioso, ogni sistema ha le sue peculiarità e le sue idiosincrasie, ogni sistema evolve in maniera diversa ed a velocità diverse, ma non impossibile da raggiungere.

OI è basato sul tool di conversione di SMF, che già di suo è abbastanza flessibile dato che in pratica non è altro che un "parser" di file strutturati che contengono le istruzioni per le varie conversioni. Essendo specifico per SMF, il codice è naturalmente orientato a convertire "verso SMF", quindi contiene parecchi "trucchi" e "standard" che sono peculiari di SMF e che non consentono di usarlo per convertire ad altri software (come ad esempio convertire SMF a phpBB).

OI però ha avuto anch'esso una storia un po' travagliata, è nato originariamente per Wedge, e per potergli far svolgere il lavoro "velocemente" (i.e. convertire i database di altri script nel formato di Wedge) è stato incluso del codice specifico per Wedge, un po' come era stato fatto nel converter di SMF. Poi è stato migrato "frettolosamente" ad ElkArte, mischiando un po' le carte in tavola. Intanto, poi, la versione per Wedge si è evoluta in maniera separata.

Così, circa un mese fa mi son messo a lavorarci su, e proprio oggi sono stati inclusi i cambiamenti da me proposti (qualcosa come 10'000 righe di codice tra scritto, cancellato, copiato, mosso, rinominato, ecc.).
Ora, le basi sono pronte: il "core" di OI non contiene più codice specifico per alcuna piattaforma, che è stato interamente spostato negli script di conversione specifici.
Al momento è in grado di importare (nominalmente, ma non tutti gli script sono stati debitamente testati) sia in ElkArte, sia in Wedge da diverse sorgenti (tra cui SMF 2.0, MyBB 1.6, phpBB 3.0, ecc.).

Questo è stato il passato, ora c'è da scrivere il futuro.
Vi sono al momento 3 grandi aree che necessitano di lavoro:
  • il "refactoring", il codice di OI, seppur molto più semplice di prima (il codice originale del converter di SMF consiste di 39 funzioni in un unico file lungo circa 3250 righe, difficilissimo da gestire e modificare, il codice di OI è ora suddiviso in classi, ognuna in un diverso file e con compiti "precisi", aderendo agli standard basilari della "buona programmazione" in PHP...ed in quasi ogni linguaggio ;)), è ancora lontano dall'essere "ottimo" (in verità alcune classi fanno ancora più di quel che dovrebbero, e la separazione di "competenze" è lungi dall'essere ottimale);
  • il "testing", OI utilizza phpunit per testare parte del codice di cui è composto, ma gli importer (gli script che effettivamente convertono un database in un altro) non sono ancora coperti da test (quindi modifiche al codice potrebbero portare ad errori imprevisti senza che nessuno se ne accorga), inoltre anche i test basilari sono ancora da effettuare (e con ciò intendo il test che ogni importer effettivamente sia in grado di eseguire i compiti che dovrebbe);
  • la "ajaxificazione" dell'applicazione, al momento OI segue il "classico" schema "visualizza pagina->interagisci->apri nuova pagina", ma il processo di conversione si presta benissimo a sfruttare la tecnologia AJAX (anche se al giorno d'oggi sarebbe più opportuno parlare di AJAJ, ma non perdiamoci nei dettagli :P), quindi caricare la pagina una volta, e popolare l'avanzamento della procedura tramite chiamate effettuate via JavaScript.

Ovviamente tutto questo lavoro non è "disinteressato", OI è offerto ad ogni utente e ad ogni progetto che vorrebbe utilizzarlo, ma io mi ci sono dedicato anche perché ho dei piani per ElkArte.
A parte il più evidente (usarlo come strumento di favore per scrivere convertitori *ad* ElkArte, l'idea che ho in mente è anche di includerlo nell'installazione, così che alla fine del processo venga offerta la possibilità di importare un database esistente da un'altra applicazione usata in precedenza. Una piccolezza sicuramente, ma che penso possa essere di grande utilità per chiunque volesse convertirsi ad ElkArte. :D

Va beh, ho finito il mio racconto per oggi, dopo aver scritto tanto codice, mi son rilassato scrivendo un po' di testo nel mio idioma. lol

Flavio93Zena

Ecco cosa stavi facendo :P
Mica male sti cavoli! Ottimo fammi sapere perchè vorrei provare pure io (tempo e stress permettendo) a fare una copia del mio db e ficcarla su EA, vorrei vedere cosa ne uscirebbe fuori... Chissà se funzionerebbe con tutti i valori e le tabelle personalizzate che ho xD