Source code management system – A Closer Look

What is SCM?
Source code management systems are a common feature of large software development environments. They are used by both commercial and open source projects. It is far less common, however, to see SCM used in Web development, although larger development firms and projects do use SCM to manage their code.

SCM solutions are based on a simple principle: the authoritative copies of your source code, and other project files, are kept in a central repository. Developers will check out copies of files from the repository, work on those copies, and then check them back in to the repository. This is where SCM becomes an important tool; SCM manages and tracks revisions by multiple developers against a single master repository and provides:

  • Locking and concurrency management 
  • Versioning and revision history
  • Synchronization
  • Project forking

Locking and concurrency management
Working in a team-based development environment that didn’t use an SCM solution, people will probably encountered examples of the concurrency problem and its implications. Concurrency refers to the simultaneous editing of a file by more than one developer. This creates a contention problem which can lead to loss of revisions by one or more developers, especially if they are editing a single master copy of a file.

Consider a simple example: developers A and B both need to make changes in a file at the same time:
1. Developer A opens the file.
2. Developer B opens the file.
3. Developer A changes the file and saves it.
4. Developer B changes the file and saves it overwriting A’s changes.
Clearly this has the potential for serious loss of work. Even if individual developers work on their own copies of files instead of a master set of files, after developers A and B make their changes, those independent changes to the same file must, somehow, be reconciled and then distributed out to all developers.
SCM systems manage the concurrency problem with file locking which makes it possible for files to be flagged as “in use” when a developer is editing them. Two main approaches exist to file locking: exclusive locks and unreserved locks.
Exclusive Locking
With exclusive locking, the SCM prevents more than one developer from ever checking out a file to edit it. If a developer checks out a file for editing, all other developers are prevented from checking out the file; they will be able to view the file or get a copy (as opposed to checking it out) but they can’t edit the master repository copy until the current developer checks it back in and, in the process, releases their exclusive lock on the file.
This solution can provide a foolproof way of preventing simultaneous editing but comes with its own problem: what happens when Developer A checks a file out and forgets they have the file checked out and leaves the office? When Developer B has an urgent change to make to the file they can’t and would have to wait for Developer A to return to check the file back in. In a large development environment it’s a challenging problem of human management and communication, particularly in a distributed development environment common in web development spanning multiple time zones.
Unreserved Locking
Because of the problems described with exclusive locking, most major SCM systems in widespread use adopt a different type of locking: unreserved locking. In this model, multiple developers can check a file out and obtain a non-exclusive lock. Multiple developers then edit the file as needed.
The SCM system then implements mechanisms and algorithms to manage the merging of changes as files are checked back in to the repository. These algorithms range from the simple (inform developers of conflicting changes and ask the developers to resolve the changes) to advanced (attempt to determine and combine changes intelligently and ask for developer intervention or confirmation only when needed).
At first glance, it may seem like this does not offer much more than not using an SCM at all, especially for working on a shared set of files. But, this isn’t the case. The SCM system knows who has checked out copies of files and prevents file overwriting by ensuring some type of manual or automatic merging of changes occurs. Combined with other SCM features discussed in the following sections, this makes an unreserved SCM system a powerful development management tool.

Versioning and Revision History
SCM systems not only handle editing by multiple developers and merging of changes when conflicts arise, they also implement versioning. Under versioning, a complete history of revisions of files in the repository is maintained. Every time a version of a file is checked back in to the repository, a copy of that version is archived. At any time, it is possible to pull back a previous version of a file, or roll-back the current version to any earlier revision.
Versioning systems also generate log reports of who checked in changes and when, as well as storing comments from developers about the changes they are committing back to the repository. Some systems can even show the specific changes made or each new version of a file that is checked in.

In some SCM models, individual files are checked in and out of the repository. In other SCM systems, a synchronization system is essentially built-in. Developers check out their own, complete, copy of the repository and work on files as they need, committing their changes back to the master repository. Developers can periodically update their personal copies of the repository to obtain new changes submitted by other developers.
This way, the online access to the repository is not necessary for development to continue. Instead, developers can work off-line if needed; only connecting to the repository periodically to commit their changes, and update new changes from the repository to their own, local working copies.

Project Forking
Sometimes it is necessary to separate a project into two separate development streams during the course of the development cycle. These streams of development may reflect multiple versions of an application or project, or completely separate projects, that share the same base (the code developed before the separation occurs). This separate is known as forking and most SCM systems provide the ability to fork a repository and establish separate versioning, history and locking for the two forks of the project. Changes in one fork have no impact on the other fork.

Why do a team need SCM?
If you look at the main features of SCM described above it is quickly evident that even small teams of two or three people benefit from a well-implemented SCM system, even for a single developer.

At first consideration, though, it is not immediately obvious how individual developers working alone benefit from SCM. They do, however.

There are several benefits:

  • Versioning: If you have ever been debugging a nasty bug and found that the changes you are making are only making the problem worse, then you can appreciate the benefits of SCM’s versioning. By being able to roll back changes you can back out of problematic changes at any time.
  • Backups: The separation of the repository from your working copy creates an effective backup mechanism: you can keep a copy of your repository checked out while there is an effective backup of the most recent version in the repository.
  • Multiple Computers: You can work on multiple computers without being worried about transferring changes between the systems. If you make sure you finish a session on one computer by checking your changes into the repository you can move to another computer and just synchronize to get the latest updates from the repository before you continue working. You won’t need to manually manage synchronization of changes against multiple development computers, as this is handled by the SCM automatically

SCM Systems

  • Visual SourceSafe: This is Microsoft’s solution for SCM. Most large-scale commercial development environments that develop using Microsoft-based applications will use SourceSafe since it integrates well with Microsoft’s development tools. 
  • Concurrent Versions Systems (CVS): This is the leading SCM platform in the open source development community, and widely used in commercial environments as well. An open source project itself, it is widely deployed in Linux and UNIX environments, but is cross-platform and available for Windows as well.
  • Subversion (SVN): Subversion is a popular emerging alternative to CVS. Another open-source project, it addresses some of the problems with the design of CVS, and adds features lacking in CVS. SVN also allows CVS-based development environments to keep their same workflow practices after switching to SVN.
  • Team Foundation Server (commonly abbreviated to TFS) is a Microsoft product offering source control, data collection, reporting, and project tracking, and is intended for collaborative software development projects

In addition, there are other tools which, while not full-blown SCM systems, can provide some of the benefits of SCM for small teams or individual developers:

  • ColdFusion’s Remote Development Services (RDS): RDS provides basic locking capabilities and integrates well with Macromedia’s development tools, even allowing direct editing of files on a ColdFusion server. It lacks the versioning and change merging features at the core of most SCM systems but can be the basis of a small shared development environment.
  • WebDAV: This is an emerging open standard that provides remote editing and management of files on a Web server through its native HTTP protocol. The full specification of DAV (Distributed Authoring and Versioning) would provide locking, versioning, and forking, but most present implementations do not offer all those features.

In my experience, we have used both VSS, CVS and SVN. EAch has their share luck of features and drabacks, but looking at the commercial angle and if SCM is a separate from a broader application programming tools like TFS , SVN , an open source solution looks to be the best, not only because it’s open source, but has a lot of advantagee, simple to use and easily integratabel with other tools.

If you use TFS correctly, you can use it to manage every aspect of your application life-cycle, including requirements, code development, testing, and SDLC reporting. And the great thing is, all aspects of the life-cycle can be linked from one part of the process to another. It becomes really difficult to do that if you’re using SVN for your repository and FogBugz for your bug tracking, and spreadsheets for your requirements (etc.).

However, if you are already existing system for tracking other things and just looking forward for a pure SCM solution, SVN is the guy for you. 


Andhra Pradesh – Present sad situation

Really feel sorry for the present state of affairs in the AP state, which could only make the industrial growth moving backwards. Industries has lost, 1000 crores hotel tourism is affected, tolly wood has ideas of shifting back to chennai, MNC are thinking of other options and daily wage workers and other people who migrated to hyderbad for some odd jobs are left high and dry. All the good work in the last 20+ years we built on hyderbad and AP image as progressive modern with skilfull people in all sphere like pharma ,IT ,Health ,Tourism etc is being tarnished and continue to be tarnished. The uncertainity in the air is there and will continue to be there until there is some solution is announced.

The urgent need is image re-building: All parties especially TRS (KCR) and Congress will need to exhibit that we are not against foreign investments. They should discourage all bandhs and agitations in GHMC region. It is not the state that will lose; the MNCs have an option to go to another country besides another state. The state community will not forgive you for what you have done to their future. The IT revenue from companies based out of Hyderabad is the in Billions of Dollars and we can’t afford to lose even One $ Dollar of it.

Some important things to do:

  1. Keep the agitation in a way that the public and private properties are not destroyed in GHMC area. 
  2. The Software/Pharma/travel and other industries , especially Software industry was built brick by brick over a period of time with innovation, trust and technical skills. The European and American companies have invested their trust and money on us. They don’t view death and destruction with sympathy. They would like to keep away from it as far away from it as possible. Agitate in way that will generate confidence in our foreign investors that their investments are safe. 
  3. If the MNCs decide to move out and the workforces will follow them to other states. If that happens then we as community will suffer irreparable business loss and will deprive of our students from the benefits of the lucrative MNC jobs. Keep your agitations far away from Hyderabad industry.
  4. There is an urgent need to send a loud and clear message in Single Voice that “The industry is insulated from Telangan agitation and Hyderabad is safe for foreign investors to run their businesses effectively and efficiently.”

The ruling party Congress will have to take a bigger role in this situation. Being in power in both the states, it needs to come out with a strategy and options and start a  democratic dialogue process to solve this issue.

Congress is without any leader and what Andhra Pradesh state needs now is a big big leader who has the committment and guts to take the things forward, not a leader who is looking towards the HIGH COMMAND for everything. unfortunaltey do we have one?

Indian Income Tax Refunds – some good News

In many refund cases, it has been found that assessee has received less amount of Income Tax out of claimed amount. One out of many reasons is that data of income tax does not match with the data of income tax available in 26AS.

In such cases assessees are right and form 16a is available with them, but deductor has not submitted their e-tds returns correctly due to many reasons like wrong pan number, wrong cin number, wrong date of deposit of challan and others.

To resolve this type issues, a press release was released on 10th February 2011 vide NO. 402/92/2009-MC (03 of 2011) by Government of Income /Ministry of Finance, regarding issuance of refund without matching data available in 26AS under limit of Rs. 1 lakh, simply verification is required from dedcutor/collector to avoid refund frauds.

Sufferer/Assessee can claim balance amount of Income Tax/Refund from Income Tax Department. Complete Press Release can be read/downloaded as under :-

No.402/92/2006-MC (03 of 2011) 
Government of India / Ministry of Finance
Department of Revenue
Central Board of Direct Taxes

*** New Delhi dated the 10th February 2011


 In order to further reduce litigation, the Central Board of Direct Taxes (CBDT) has enhanced the limits for filing appeals against taxpayers in the Income Tax Appellate Tribunal, High Court and Supreme Court, from tax effect of Rs.2 lakh, Rs.4 lakh and Rs.10 lakh, respectively, to Rs.3 lakh, Rs.10 lakh and Rs.25 lakh, respectively.

In order to speed up refunds, TDS claims in all tax returns (ITR-1 to ITR-6) will be accepted without verification if the difference between the amount claimed in the return and the amount reflected in the TDS return (AS-26 statement) does not exceed one lakh rupees. This will enable the Income Tax department clear nearly 95 percent refunds without verifying each TDS claim. Cases with zero-matching, invalid TAN and difference exceeding Rs. 1 lakh will, however, be cleared only after due verification. This precaution is necessary to avoid refund frauds.

Earlier, the Chairman CBDT had directed all Chief Commissioners to upload necessary data so that the refunds can be issued expeditiously. It will be for the first time that most income tax refunds of the current assessment year will be dispatched to the taxpayers within the current financial year itself.

Is Role of a tester changed in Scrum Model?

There are some discussions around do we need testers in scrum model of development and can we Increase quality by putting testers in the Scrum team?

We do hear both objections:

  • “But that’s obvious! Scrum teams are supposed to be cross functional!”
  • “Scrum teams are supposed to be role-less! We can’t have a guy who is only a tester!”

Yes, the role of the tester has changed in a scrum team and what people mean by “tester” in this case is “A guy whose primary skill is testing” rather than “a guy whose role is to do only testing”.

 Why do we need Testers part of the Scrum Team?

 First of all, developers are often quite lousy testers, especially testing their own code. Secondly, it’s not easy for the developers to test all the use cases and work flow of the system as the primary focus of the developers is unit testing and the testing role should be dedicated to test the overall work flow.

The tester is the “signoff guy”

In addition to being “just” a team member, the tester has an important job. He is the signoff Guy. Nothing is considered “done” in a sprint until he says it’s done. Most of the times, people found that developers often say something is done when it really isn’t.

Even if you have a very clear definition of “done” developers will frequently forget it. We programmers are impatient people and want to move on to the next item ASAP. 🙂 So how does Mr. T (our tester) know something is done then? Well, first of all, he should (surprise) test it! In many cases it turns out that something a developer considered to be “Done” wasn’t even possible to test! Because it wasn’t checked in, or wasn’t deployed to the test server, or couldn’t be started, or whatever. Once Mr. T has tested the feature, he should go through the “done” checklist (if you have one) with the developer.

 For example if the definition of “done” mandates that there should be a release note, then Mr. T checks that there is a release note. If there is some kind of more formal specification for this feature then Mr. T checks up on that as well. Etc. A nice side effect of this is that the team now has a guy who is perfectly suited to organize the sprint demo. 

What does the tester do when there is nothing to test?

This question keeps coming up. Mr. T: “Hey Scrum master, there’s nothing to test at the moment, so what should I do?” It may take a week before the team completes the first story, so what should the tester do during that time? 

Well, first of all, he should be preparing for tests. That is, writing test specs, preparing a test environment, etc. So when a developer has something that is ready to test, there should be no waiting, Mr. T should dive right in and start testing.

If the team is doing TDD then people spend time writing test code from day 1. The tester should pair-program with developers that are writing test code. If the tester can’t program at all he should still pair-program with developers, except that he should only navigate and let the developer do the typing. A good tester usually comes up with different types of tests than a good developer does, so they complement each other.

If the team is not doing TDD, or if there isn’t enough test-case writing to fill up the tester’s time, he should simply do whatever he can to help the team achieve the sprint goal. Just like any other team member. If the tester can program then that’s great. If not, your team will have to identify all non-programming tasks that needs to be done in the sprint.

 When breaking down stories into tasks during the sprint planning meeting, the team tends to focus on programming tasks. However usually there are lots of non-programming tasks that need to be done in the sprint. If you spend time trying to identify the non-programming tasks during the sprint planning phase, chances are Mr. T will be able to contribute quite a lot, even if he can’t program and there is no testing to do right now.

 Examples of non-programming tasks that often need to be done in a sprint:

  • Set up a test environment.
  • Clarify requirements.
  • Discuss deployment details with operations.
  • Write deployment documents (release notes, RFC, or whatever your organization does).
  • Contact with external resources (GUI designers for example).
  • Improve build scripts.
  • Further breakdown of stories into tasks.
  •  Identify key questions from the developers and get them answered from the business stake holders.

 On the converse side, what do we do if Mr. T becomes a bottleneck? Let’s say we are on the last day of the sprint and suddenly lots of stuff is done and Mr. T doesn’t have a chance to test everything. What do we do? Well we could make everybody in the team into Mr. T’s assistants. He decides which stuff he needs to do himself, and delegates grunt testing to the rest of the team. That’s what cross functional teams are all about!

 So in summary, Mr. T does have a special role in the scrum team, but he is still allowed to do other work, and other team members are still allowed to do his work. How can Scum model make the Tester’s job easy and increase Quality?

Increase quality by doing less per sprint

This goes back to the sprint planning meeting. Simply put, don’t cram too many stories items into the sprint! If you have quality problems, or long acceptance test cycles, do less per sprint!

This will almost automatically lead to higher quality, shorter acceptance test cycles, fewer bugs affecting end users, and higher productivity in the long run since the team can focus on new stuff all the time rather than fixing old stuff that keeps breaking. It is almost always cheaper to build less, but build it stable, rather than to build lots of stuff and then have to do panic hot-fixes, Maintenance and Service Packs. 🙂

TRS attack and JP’s reaction – I like this

Really like the way JP responded back on the attack, if this was an attack on another leader, we could have seen the most violent scenes through out the state. I should admire his wisdom and forward thinking.

Here is what he said after his attack which I want to preserve, golden words.

“I believe this attack is not made upon me but, on our democratic system. This is indicating the worsening situation of our political system. Gandhiji said that, if everyone adopts an eye for eye policy then the society will be blind. So, I didn’t complain this matter to anyone. Let, our system decide its course in this regard. It’s the duty of our law makers to protect the morals and ethics of our politics.”

“People elect us as their representatives’ expecting us that we will discuss their problems in the Assembly and find solutions for them. But, they didn’t expect us to create arson inside the house and disrupt the proceedings.”

“I ask those people who attacks on me and the governor, whether they really believe that they can achieve their goal of getting statehood for Telangana by attacking people like us? If, they think its possible then, we don’t need a constitution for us. Then, it will be just a piece of scrap paper.”

“We can’t resolve the Telangana issue by merely changing the capital. First of all, the constitutional process should be completed, otherwise the problem will remain there forever. Every one in the country has right to make his/her protest to highlight their problems. At the same time, it shouldn’t cross the limits and indulge with others rights.”

“When, the law makers fails to do their duties and fails to safe guard the basic rights of the people, then the people will have to react and set them back on the track. The corruption in the country is growing like any thing and lives of lakhs of people were badly affected by it. I appeal the people to break their silence. Especially, youth should come forward to save their country.”

“Some selfish leaders don’t like to hear the truths. Such people try to silence the people like me with their brutal force. But, nobody can make us silence because we have no strength. Such leaders should understand that, truth can’t be silenced by anybody or any kind of force. Lok Satta has the courage to express the truth without fear.”

“If, they want a separate state for themselves they can get it through a peaceful dialogue enduring within limits of the constitution of the country. But, some leaders were keener about their own goals than safe guarding the people’s interests. Only such people will adopt this kind of brutal attitude to over power the rest. But, this kind of attacks won’t help them anyway, instead it makes the people think and react positively. It’s time for the people of the state to break their silence and cleanse our political system.”

How much value intellectuals have in India?

With the attack on Jaya Prakahs narayana by TRS MLAs and remebering some of the other cases in the recent past, the Question that comes to my mind is “How much value intellectuals have in India?”

The personal attack on JP brought the Indian legislature system to shame. If a law maker is attacked on personal prejudice by some so called “Telangana Protogonaists” what is the status of common man on the road? Well, they have their own side of the story for the attack, can’t the persons even open the mouths to express their opinion. This is very sad situation that stoping and attacking respected Governor and respected MLA. Most of the people are not yet realizing the responsibility towards their duties and towards the growth of the country as a whole.

When Metro man E Sreedharan suggested that a “big political scandal” was brewing in the Hyderabad Metro project, then the Andhra Pradesh government lead by YSR threatened him with defamation. But, with Satyam chairman Ramalinga Raju confessing to defrauding his own company of over Rs 7,000 crore and accepting the charge that the aborted buyout of Maytas was also part of this fraud, Sreedharan’s apprehensions has been justified. Ultimately govt couldnt do any thing as every aspect pointed out by Sreedharan was found to be valid. His views have been vindicated with the fall of Satyam.

Honest persons are seldom are respected by top officials and political leaders who are not interested in national welfare as much as it suits their persoal interest or pleasing higher ups.

సోనియా చిరంజీవిల ఏకాంత సమావేశం వివరాలు. – Just For Fun

With malice to none including fans of Chiranjeevi! , Just for fun

సోనియా: పిలవగానే ఎగేసుకొచ్చినందుకు థాంక్స్.

చిరు: ఎప్పుడెప్పుడు పిలుస్తారా అని ఎదురుచూస్తున్నా..!

సోనియా: మాకంటే ఇపుడు అవసరం వచ్చింది, మీరెందుకు ఎదురుచూస్తున్నారు?.

చిరు: ఏమి చెప్పమంటారు.. పార్టీ స్టేట్ ఆఫీసుకే దిక్కులేక మేమేడుస్తుంటే, జిల్లా ఆఫీసులు, మండల ఆఫీసులు బిల్డింగులకు అద్దె బకాయిలు చెల్లించాలని ఒకటే గోల. అదీ గాక…

సోనియా: సరే సరే, మీదరిద్రం వినేంత టైం లేదు.. మాకేం కావాలో తెలుసు కదా, మీ డిమాండ్స్ ఏమన్నా ఉంటే చెప్పండి.

చిరు: ఏముంటాయండి.. కుదిరితే సిఎం పోస్టు, వీలైతే నాలుగు క్యాబినెట్ బెర్తులు… ఇంకా..

సోనియా: ఇక ఆపుతావా.. సిఎం పోస్టు అడిగినోడికల్లా ఇవ్వడానికి అదేమన్నా అరటిపండా.. అలా ఇచ్చేసేలా అయితే నిన్ను పిలవాల్సిన పనేముంది మాకు, జగన్ కే ఇచ్చేవాళ్ళంగా??

చిరు: అవుననుకోండి, కాకపోతే..

సోనియా: సరే సరే.. ఇంతకీ నమ్మి ఓట్లేసిన 70 లక్షల మందికి ఏంచెబుతావ్??
చిరు: అయ్యో.. అదేముందండి, మా తెలుగు రాష్ట్రంలో అదే ప్రత్యేకత. అభిమానం అనేది ఫిక్సిడ్ ఎస్సెట్. ఒక్కసారి పొందామంటే వెర్రిజనాలు మనకోసం చచ్చేదాకా ఎగబడుతూనే ఉంటారు.

సోనియా: మరి అపుడెపుడో ఈనాడులో జెండాపీకేద్దాం అన్న పతాకశీర్షిక వస్తే రెచ్చిపోయి తల్లి గొంతుని నులిపేసే కిరాతకుడిని కాను, ఎన్ని ఆటుపోట్లు వచ్చినా అభిమానుల అండదండలతో పార్టీని మరింత పటిష్టం చేస్తాం, జెండా ఎగరేస్తాం, జెండా నిలబెడతాం అని ఏవేవో చెప్పినట్టున్నావ్..??

చిరు: (తన స్టయిల్ లో సిగ్గుపడుతూ..) అప్పుడేదో ఆవేశంలో, మీరు చూసారా మేడం, బాగా చేసానా పెర్ఫార్మన్సు..?? అయినా మా తెలుగోళ్ళు తెల్లారితే అన్నీ మరిచిపోతారు మేడం. రేపొద్దున ఇంకొక బ్రేకింగ్ న్యూస్ వస్తే చాలు.

సోనియా: సరే సరే, బయటకు వెళ్లి అహ్మద్ పటేల్ ఇచ్చిన పేపర్లో ఏముందో అది చదివేసి ఇంటికెళ్ళు.. ఇకనుంచి ఏంచెయ్యాలో నేను చెబుతాను, ఎలా చెయ్యాలో కిరణ్ చెబుతాడు. సొంత తెలివితేటలు వాడకు.

చిరు: జీ. అవే ఉంటే ఇలా ఎందుకు తయారవుతాను. బాగా చిరాకుగా ఉన్నట్టున్నారు, మాంచి స్టెప్ ఒక్కటి వేసి ఎంటర్ టైన్ చెయ్యమంటారా..? డాన్సు బాగా చేస్తాను అని చెబుతుంటారు అంతా.

సోనియా: చెయ్యాల్సిన డాన్సులు మున్ముందు చాలానే ఉన్నాయి, ఇక మూసుకుని బయలుదేరు.

చిరు: జీ మేడం. (కాళ్ళకు ఒక దణ్ణం పెట్టి నిష్క్రమణ)

ఇవాల్టి నుంచి మన మెగాస్టార్ చిరంజీవి కొత్త సిఎం. సిఎం అంటే, చీఫ్ మినిస్టర్ అనుకునేరు..

 కాదండి ‘కాంగ్రెస్ మాన్’. ఇంకా చెప్పాలంటే “చెమ్చా టు మేడం”