viernes, 15 de febrero de 2013

Phabricate it !

Phabricator is a set of tools that allow "phabricating" software via Web. This set of tools was created at Facebook, although is being used at many other companies such as Airtime, Asana, Dropbox, deviantART, MemSQL, Path, Quora, and more.

Having a deeper view to the project, Phabricator appears to be a set of tools than, far from being a software forge, allow integration with an existing one in order to provide extra functionality.

In particular, "phabricating" the software implies, regarding this set of tools, being able to perform what other Software Forges also provide, without source code hosting infrastructure. Among the tools, next can be found:

- Code Review (Differential)
- Track Bugs (Maniphest)
- Browse source (Diffusion)
- Wiki (Friction)

Until here, no further extra functionality from services that are already provided but Software Forges such as Github. However, Phabricator seems to offer additional functionality that can make this set of tools to worth a while:

- CLI (Arcanist). It is supposed to be a command line interpreter that can perform almost all the functionality available, providing cryptic commands, ANSI colour (when supported), etc. It is supposed to offer, besides, compatibility in both Windows, Linux and MAC.

- API (Conduit). This program interface is supposed to offer an scripting interface to interact with  Phabricator, by means of an HTTP JSON API.

References:
http://phabricator.org

domingo, 10 de febrero de 2013

Producing OSS 2nd version: Mission Accomplished

  It happens that, when someone smart ask for money to continue with a project, gets support and funds from "the community". It does not have to be related to Open Source, although it is the case.
  Karl Fogel started a KickStarter initiative to try to obtain 10000$ in order to write the second version of its brilliant book, "Producing Open Source Software".
  11 hours before initiative deadline, Fogel had reached more than 15000$ to accomplish the book second version update.
  Great news for the Open Source community!

domingo, 3 de febrero de 2013

Why migrating from Subversion to GIT?

Many FLOSS projects are being migrated to GIT version control system. But .. why GIT?



Basically, due to a bunch of characteristics GIT provides basically against Subversion, its precursor on version control system, widely used in FLOSS projects [1]:

- Distributed Nature: Meaning multiple redundant repositories are available, but, above all, that full functionality when disconnected from the network is available.
- Access Control: No commit access to other people must be provided. Distribution means merging what you want from what you want.
- Branch Handling: Every developer's working directory is a branch. GIT  provides advanced branching operations such as:
  * Tracking the project revision the branch started from.
  * Record branch merge events (author, time, date, changes, etc.)
  * Start the next merge at the last merge.
  * Easy conflict resource between branches while merging.
  In general, GIT behaves on a more efficient way compared to subversion when branches are involved
- Performance: In terms of speed operation, GIT design ensures extreme speed with operations such as:
  * Viewing file history
  * Committing changes
  * Performing diffs 
  * Merging and switching branches
  * Obtaining other revision of a file
- Smaller Space Requirements: Git's repository are extremely small compared to Subversion, above all if a huge number of files is being handled. Basically, GIT needs less size due to the fact that Subversion always work with two copies of the file, the one being modified by the user, together with the one in ".svn" directory where the original repository file is kept.

But, does Subversion have advantages against GIT? Of course it has:
- User Interfaces Maturity: due to Subversion being a more mature technology.
- Single repository: that makes easier to keep under control where something is stored.
- Access Controls: meaning possibility to specify read / write access controls in single location.
- Partial Checkout: with Subversion, the possibility to download just a sub directory of a repository is possible, but not with Git. This can mean a problem for large projects in case not a good bandwidth Internet connection is available.
- Shorter and Predictable Revision Numbers: As Subversion assigns sequential revision numbers (starting from 1), it is easier to identify revision states, changes and time locating.
- Ability to Represent Richer Histories: as Subversion allows branch/tag to be created from arbitrary combinations of source revision, while GIT does not.

So, to summarize, lot of large projects are migrating from Subversion to GIT, as the benefits by this last one seems to be more important than disadvantages, with performance and space requirements being enough reason to give GIT an opportunity

References: