Categories
Greek Guest Posts

Γιατί ανοικτό λογισμικό;

Reading Time: 3 min

(δημοσιεύθηκε στο blog της Social Mind στις 20/10/2015)

Πριν λίγο καιρό είχαμε δει 5 λόγους για να δημιουργήσετε το εταιρικό σας website σε WordPress. Εκτός από ένα δωρεάν, εξαιρετικά ώριμο και πλούσιο σε λειτουργικότητα εργαλείο, το WordPress αποτελεί επίσης σύστημα Ελεύθερου Λογισμικού / Λογισμικού Ανοικτού Κώδικα (ΕΛ/ΛΑΚ), χαρακτηριστικό στο οποίο οφείλονται πολλά από τα πλεονεκτήματά του.

Για να μείνουμε στην ουσία, θα αποφύγουμε να εμπλακούμε στο διάλογο για το αν το Ελεύθερο Λογισμικό ή ο Ανοικτός Κώδικας είναι πιο δόκιμοι όροι και θα παρουσιάσουμε μια σειρά από πλεονεκτήματα που “θα απολαύσετε” εάν επιλέξετε να υλοποιήσετε τα digital assets σας κάνοντας χρήση ΕΛ/ΛΑΚ.

Πλήρης προσβασιμότητα

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

Με το ΕΛ/ΛΑΚ, οι χρήστες έχουν πλήρη πρόσβαση στον κώδικα, το εκτελέσιμο αρχείο, την τεκμηρίωση και εν γένει σε οποιοδήποτε άλλο asset του λογισμικού. Έτσι υπάρχει διαφάνεια μεταξύ της ομάδας ανάπτυξης και του τελικού χρήστη, αφού ο τελευταίος μπορεί να πιστοποιήσει ότι το λογισμικό προσφέρει πραγματικά “ό,τι υπόσχεται”, είτε μόνος του (αν έχει τεχνικές γνώσεις), είτε χρησιμοποιώντας κάποιον εμπειρογνώμονα.

Η τεκμηρίωση υπάρχει (!) και είναι συνήθως υψηλής ποιότητας

Όταν δε χρειάζεται να μοιραστούμε τον πηγαίο κώδικα του λογισμικού μας με άλλους, συνήθως τεκμηριώνουμε πρόχειρα, ελάχιστα ή καθόλου. Αυτό συμβαίνει κατά κόρον στα λογισμικά κλειστού κώδικα αφού, επειδή ο κώδικας μοιράζετε μεταξύ των προγραμματιστών της εταιρίας, οποιαδήποτε απορία σχετικά με αυτόν μπορεί να λυθεί δια ζώσης.

Στο ΕΛ/ΛΑΚ τα πράγματα είναι διαφορετικά. Σχεδιάζουμε κώδικα ο οποίος θα χρησιμοποιηθεί, διορθωθεί και επεκταθεί, από προγραμματιστές που δεν γνωρίζουμε προσωπικά (και ενδέχεται να μη συναντήσουμε ποτέ στη ζωή μας. Προκειμένου λοιπόν το λογισμικό μας να είναι ελκυστικό προς όλους αυτούς τους εν δυνάμει συνεργάτες που θα τον επεκτείνουν pro bono, προσπαθούμε να γράφουμε όσο πιο αναλυτική και καλογραμμένη τεκμηρίωση γίνεται.

Ακόμη, όμως, και για projects ΕΛ/ΛΑΚ που η τεκμηρίωση είναι κακής ποιότητας ή ελλιπής υπάρχει περίπτωση κάποιος τρίτος να επέμβει και να τη διορθώσει.

Η λειτουργικότητα είναι ώριμη

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

Στο ΕΛ/ΛΑΚ επειδή το λογισμικό είναι συνεχώς ανοικτό και προσβάσιμο από όλους, οι τελικοί χρήστες το χρησιμοποιούν (και άρα το ελέγχουν), καταχωρούν τα bugs που βρίσκουν και πολλές φορές τα διορθώνουν κιόλας, αν έχουν τεχνική κατάρτιση.

Ας σκεφτούμε το εξής τώρα: Τι είναι πιθανότερο να είναι περισσότερο ελεγμένο; Ένα λογισμικό μιας εταιρίας που αναθέτει το testing σε μερικούς υπαλλήλους ή ένα λογισμικό που ελέγχεται καθημερινά από δεκάδες διαφορετικών χρηστών, ενώ χρησιμοποιούν το λογισμικό σαν τελικοί χρήστες;

Πληθώρα επεκτάσεων

Όταν φτιάχνουμε ένα σύστημα λογισμικού έχουμε στο νου μας μια σειρά πραγμάτων που θα θέλαμε να κάνει. Αυτό το λέμε version 1.0. Ας υποθέσουμε ότι το ίδιο λογισμικό θέλει να το χρησιμοποιήσει κάποιος άλλος χρήστης ή εταιρία. Οι ανάγκες του/της μπορεί να είναι διαφορετικές. Σε αυτήν την περίπτωση προχωράμε σε αυτό που ονομάζουμε επέκταση συστήματος, δημιουργούμε δηλαδή νέες λειτουργίες προσπαθώντας να καλύψουμε αυτές τις έξτρα ανάγκες.

Στο κλειστό λογισμικό επεκτάσεις γίνονται μετά από απαίτηση κάποιου πελάτη. Στο ΕΛ/ΛΑΚ, επειδή η πρόσβαση στον κώδικα είναι ελεύθερη, οι ενδιαφερόμενοι μπορούν να προχωρήσουν σε υλοποίηση των δικών τους επεκτάσεων ανά πάσα στιγμή. Οι άδειες ΕΛ/ΛΑΚ, ωστόσο, συνήθως επιβάλλουν αυτές οι νέες επεκτάσεις να “επιστραφούν” πίσω στην κοινότητα λογισμικού ώστε να χρησιμοποιηθούν και από άλλους. Έτσι, τα έργα ΕΛ/ΛΑΚ επεκτείνονται συνεχώς με νέες λειτουργικότητες που αποτελούν ανάγκες των τελικών χρηστών και το βασικότερο, οι επεκτάσεις αυτές είναι τις περισσότερες φορές δωρεάν για όλη την κοινότητα.

Μπορείτε να ζητήσετε support, αλλά δεν είστε υποχρεωμένοι

Δυο κόστη που είναι προαιρετικά στη χρήση ανοικτού λογισμικού είναι το κόστος άδειας (lisence fee) και το κόστος υποστήριξης (support). Επειδή το ΕΛ/ΛΑΚ είναι ελεύθερα διαθέσιμο προς όλους, οποιοσδήποτε επενδύσει χρόνο ώστε να το μελετήσει σε βάθος μπορεί να το κατανοήσει και να το υποστηρίξει. Αν δεν υπάρχει τέτοιο άτομο διαθέσιμο, η εταιρία μπορεί να αναζητήσει υποστήριξη από την κοινότητα του συγκεκριμένου έργου ΕΛ/ΛΑΚ επί πληρωμή.

Φορητότητα και αλλαγή τεχνικού team

Αν έχετε συνεργαστεί με εταιρίες ανάπτυξης ιστοσελίδων κλειστού κώδικα, μπορεί να έχετε συναντήσει τον όρο ότι αν επιλέξετε να αλλάξετε συνεργάτη, δεν μπορείτε να “πάρετε” την ιστοσελίδα σας μαζί. Η λογική πίσω από αυτό είναι ότι, αν πάρετε το site μαζί σας, παίρνεται και τον πηγαίο κώδικα, που είναι ιδιοκτησία της εταιρίας που το έφτιαξε.

Με τα συστήματα ΕΛ/ΛΑΚ αυτό δεν είναι πρόβλημα καθώς ο κώδικας βρίσκεται ήδη ελεύθερα εκεί έξω. Αυτό σημαίνει ότι ανά πάσα στιγμή επιλέξετε να αλλάξετε συνεργάτη, το website σας μπορεί να μετακινηθεί χωρίς πρόβλημα στο server του νέου συνεργάτη χωρίς να χρειάζεται να το φτιάξετε, και άρα να το πληρώσετε, από την αρχή!

Categories
Greek

Podcast που αξίζει να ακούσεις: Software Engineering Radio

Reading Time: < 1 min

Στην πρόταση αυτού του μήνα συναντάμε ένα podcast για την τεχνολογία λογισμικού. Πρόκειται για μια εκπομπή που στοχεύει στον επαγγελματία προγραμματιστή και έχει σαν στόχο να παρουσιάσει όλες τις νέες εξελίξεις στον χώρο της τεχνολογίας λογισμικού. Διάφορες θεματικές που έχουν φιλοξενηθεί κατά καιρούς αφορούν ανάπτυξη λογισμικού, testing, devops, hosting, scaling, κ.ο.κ. Η εκπομπή είναι μια παραγωγή του επιστημονικού περιοδικού IEEE Software.

Στο επεισόδιο που ακολουθεί ο István Lam εξηγεί σε πολύ απλή γλώσσα τι ακριβώς συνιστά ο όρος “Privacy by Design” όπως αναφέρεται στον κανονισμό περί προσωπικών δεδομένων στην Ευρωπαϊκή Ένωση, GDPR .

(Photo by Fancycrave on Unsplash)
Categories
English

Software metrics’ tools and where to find them

Reading Time: 2 min(last updated: February 4th, 2018)

There are several ways to analyze software. Depending on the scope we may be interested in the quality of the code, the documentation, the developer’s team and its activity and so forth. Here are some free software metric tools that can get you started with software analysis.

Tools for Static Program Analysis

Static program analysis refers to the analysis of the source code of a software rather than an analysis on an execution level.

  • PHPQA is a free, open source software project that supports a wide range of analyzers (e.g. phploc, pdeend, phpmetrics, etc.) for PHP. [demo]
  • Checkstyle, Findbugs and PMD  are free, open source software projects for Java, also available as plug-ins for the Eclipse and IntelliJIdea IDEs.

Didn’t find what you were looking for? You can try this exhaustive list of tools, grouped by programing language, maintained by Wikipedia.

Software Engineering Guidelines Compliance

  • Better Code Hub checks your code base for compliance against 10 software engineering guidelines – and gives you immediate feedback on where to focus for quality improvements. The tool can be used free for open source and non-commercial use.

Community Activity Analysis

Big software projects are usually built from several developers. Those teams or communities – for Open Source projects – are usually organized using a control versioning system (svn, git. etc.). Those control versioning systems are storing valuable data about the activity of those teams / communities the analysis of which can lead to very interesting findings.

  • GitsGtats – for projects using git-like environments (Github, Gitlab, etc.). [demo]
  • StatSVN – for projects using SVN. [demo]
  • Grimoire Lab – a very mature tool that can help with data gathering from several platforms (Github, Bugzilla, Slack channels, etc.), data analysis and visualization. [demo] NOTE: If you are interested in using Grimoire Lab for your own projects you can test the online service Cauldron.io (free for public projects on Github).