As per:

Electronic Communications, Postal and Broadcasting Directions, 26 Mar 2020, Section 5.1.4:


All Internet sites operating within .za DNA top level domain name must have a landing page with a visible link to www.sacoronavirus.co.za
    Sources:
  1. https://www.gov.za/coronavirus/guidelines
  2. https://www.gov.za/sites/default/files/gcis_document/202003/43164gon-417.pdf

Good Development Practices: part 2

So, last time I discussed the use of Maven as a build tool, from A to Z. After finishing that post I realised that I need to think about what I need to write next, as I decided to actually create an n-part "series". There clearly is no particular order that should be followed. I'm just writing as I continue with my own experience to become a better developer.

Next on my list is version control. When I started as a junior I did not really know what all the version control hoo-ha was all about, but in good time I had to work with it, never really grasping the importance of using it effectively. Neither does it seem that a lot of developers spend some time to learn the tools properly or grow proper habits.

As I went through some material I saw mentions of subversion users that commonly have the bad habit of not providing messages on commit. Well, it would just be the case that at the office this is exactly what happens. For what reason, I don't know. I will probably just be frowned upon for asking something as 'stupid' as that :P No, really.

I know Subversion is probably one of the most popular systems for version control. However, from time to time I see some hurdles that we encounter which makes me wonder why it's still in use while there are other approaches which are faster, more effective and may I say stable?

Being curious about the options and never taking the first and best answer as law, I went to explore new horizons. So far I reviewed 3 systems: subversion, bazaar and git.
As mentioned I started with subversion, which does its job well. I've struggled with it a couple of times and the extra features don't really impress (what extra features?).

In this post I will focus on bazaar and git. Both are backed by huge projects: Canonical which is the company driving Ubuntu linux and the Linux kernel which uses git.

Canonical use bazaar for Ubuntu-related projects, and they created the Launchpad platform. I've started committing to an Open Source project (only the Android remote sub-project) called OpenLP, which uses Launchpad for collaboration, version control and bug tracking (a lot more too). It's a wonderful experience using bazaar in such an environment once you get the hang of things, understanding how a distributed version control system works.

The backing project of git is the Linux kernel. I mean, it's one of the biggest projects that I know :D and it was created by Linus Torvalds himself! A great mind can only create a great DVCS (Distributed Version Control System).

From personal experience so far, bazaar seems to be easier to get used to when your background consist of subversion experience. The trunk-mindset is still there so one don't get too confused as to what trunk really is. Last night and this morning I tried to figure out how a proper git directory structure should look. I do not find any references to "trunk"... While I am exploring I might come across this sooner or later, but from what I can grasp, it makes perfect sense since it is distributed.

The wonderful thing about git and bazaar is that it has GUI tools after install, which I can't say for subversion. It does not seem to be a big thing, but once you get to know each system and develop interest in certain parts, it starts to make a big difference.

The main reason I started looking at different VCS's is that I wanted to explore coding with branches and to build my knowledge of it. What I like about git is what I got from first impressions after reading this:

Every Git clone is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on network access or a central server. Branching and merging are fast and easy to do. http://git-scm.com/


Using this could have saved me a lot of hours that's been lost due to subversion troubleshooting. :)

While this post doesn't have a lot of reference material, I will gather some as my exploration continues, and later I will list it here too.

In the meantime, happy developing!

Comments

Popular posts from this blog

What can we do to save our environment?

Inner Conflict

Once Upon a Time