Git for the Enterprise – Promises and Pitfalls

I’ve changed my mind.

A couple of years ago, I was spending a lot of my day trying to eradicate Git from my environment. It was springing up all over the place. It seemed like I’d only just finished getting a handle on where all the Company IP was, ensured appropriate security, cut license and infrastructure costs, and here we go again. Another Software Configuration Management system was growing like a weed in my carefully tended, walled garden.

Initially, I just couldn’t reconcile the nature of a distributed version control system such as Git, Mercurial, Bazaar etc. with the corporate needs of a large scale development system – hundreds or even thousands of developers.

I quickly discovered that eradication was not an option. I had to find a way to meet the desire of the development teams and the needs of the larger Enterprise.

On April 4th, I’ll be hosting a webinar to discuss some of the “Promises and Pitfalls” involved in the large scale Enterprise deployment of Git. Specifically, I will cover;

• why Git is vital for Enterprise Cloud Development strategies,

• what the top Git adoption challenges are for enterprises, and

• how CollabNet TeamForge enterprise-readies Git.

I hope you can join me.

Cloudbees introduces Subversion, Git plus other best of breed development and Agile Tools with CollabNet

CollabNet is excited to join the CloudBees Partner Ecosystem. This partnership brings to developers a comprehensive development experience in the cloud, improving productivity of distributed development teams via the introduction of CollabNet’s Cloud Services Platform, Codesion, to the CloudBees Platform.

With Codesion, developers using the CloudBees Platform can now instantly provision Subversion and Git code repositories online, track and manage bugs, and make use of the broad range of popular Agile development tools.

Who are CollabNet and Codesion?

CollabNet is the recognized leader in enterprise cloud development and Agile ALM, with more than 7,000 global customers that range from single workgroups to large enterprises. CollabNet has deep open source roots include the creation of Subversion (now formally known as Apache Subversion®), the industry leading version control system with millions of users. CollabNet helps enterprise customers build and deploy better software through its focus on collaboration, enterprise Agile methods and cloud development and computing.

Codesion is CollabNet’s cloud services platform and is the leading enterprise-grade cloud development and deployment platform, with more than 3,800 customers and 70,000 users around the world.

What services are now available to CloudBees customers?

With the integration of the Codesion with CloudBees, the following enterprise-grade services:

• Source control management hosting (Subversion, GIT, CVS)
• Wiki, issue and bug trackers (Trac, Bugzilla)
• Agile project management (ScrumWorks Pro)
• Shared drive (WebDAV)
• External Integrations (Basecamp, FogBugz, Lighthouse, Pivotal Tracker, Rally, JIRA and VersionOne)
• Automated deployment (Codesion Publisher)
• Multiple project workspaces
• Advanced security (SSL, role-based access control, password control, IP whitelist)
• Offsite backups
• High availability infrastructure (99.9% availability)

Together CloudBees and CollabNet now deliver a comprehensive cloud development and deployment platform to improve the efficiencies of development teams, a freedom of choice of best of breed development tools and lower the overall cost of delivering quality applications.

Enjoy this one-stop shop for your cloud development, deployment and management needs.

To learn more about the Codesion services, visit the CloudBees Ecosystem

Industrializing Agile Software Delivery with ALM 2.0+

On January 12th, I co-presented a webinar entitled “Industrializing Agile Software Delivery with ALM 2.0+.” I presented alongside Dave West, Vice President and Research Director, Forrester Research and Michael Loetzsch, Chief IT Expert, Deutsche Post DHL. In the session, Dave discussed why ALM 2.0+ is vital for implementing agile software delivery and DevOps, and the differences from the traditional ALM approaches and ALM 2.0+.  I described some big shifts and trends we are seeing in the market towards i) agile/mixed process development, ii) the integration of the development and operations IT processes and organizations (i.e., DevOps), and iii) the move towards hybrid cloud development and deployment.  I also described a practical tool and process “blueprint” based on years of work with our clients that enterprises can employ to  drive global agile software delivery across their company.  I finished by stating how this blueprint has been utilized by our enterprise clients to realize some pretty incredible IT return.  The following gains are our clients value feedback, not ours…

  • Reduce IT ops budget 20 – 50%
  • Decrease TTM by up to 70%
  • Improve dev productivity up to 20%
  • Achieve enterprise compliance
  • Migrate projects in minutes/hours

Michael wrapped up the presentation and shared key factors on how teams like yours can gain faster time to market and IT operations cost returns by implementing DevOps utilizing hybrid development and deployment tools and clouds similar to those techniques Michael and his team employed at Deutsche Post DHL. You can learn more about Deutsche Post DHL’s experience by reading the casestudy.

During the webinar, we encouraged our attendees to interact with us by participating in polls and by entering questions for the live Q&A session that we had at the end of the presentation. We received many questions that we just couldn’t get to during the live event.  So instead, we’ve provided answers to the audience’s questions at the end of this blog.

If you missed the session live, you can watch the recording and download the slides Dave, Michael and I used. For more information about this topic, please visit  our website where you can access additional webinars, informative assets, and free product downloads.  CollabNet offers multiple webinars a month that cover a variety of topics related to software development.  We invite you to visit the prior recorded sessions as well as to join and participate in our upcoming webinars.

As always, thanks for participating, and I look forward to your continued feedback. In the meantime, as promised, here’s the follow up to the live audience questions.

Bill

—————

Q: How common are daily releases into production? Any recommendations on types of applications especially well (or poorly) suited for frequent releases?

It really is a function of a variety of factors.  You must consider your business goals and objectives.  Do your users need daily releases and will it help you drive your top line and user satisfaction or is this just simply a technique you want to employ pre full scale production to accelerate schedules and quality?  What’s your application deployment target – packaged, web, server, embedded?  Are you targeting an internal or an external cloud and what’s the surrounding infrastructure and management environment?  How experienced is your team – have they done this before?  How mature are your team management, development processes, and tool chain – do you even have the team and processes to practice this kind of cutting edge agile development? Interestingly enough, 48% of the webinar attendees polled cited that they would be employing continuous delivery by the end of 2012. In my experience, it’s clear that most of the applications that are utilizing continuous delivery are web apps that utilize automated build, test and release practices, often times with automatic rollback.  There’s many reasons why these applications are leading the way.  For instance, as opposed to paged software, there is unfiltered visibility into the app by the dev/ops team, there is only one version of the app to maintain, users are used to more frequent updates, etc.).

Q: We are struggling to come to a conclusion as to who should “own” bridging business with IT.  Should that be a the business analyst, or the project manager? Somebody else?

Typically that should be a dedicated person, somebody like a “product manager / product owner”.  A product manager owner needs to assume responsibility for the actual delivery of useful applications. They would be responsible with working with business analysts and end users to understand the requirements, help prioritize release requirements for each iteration, and drive towards productization. As part of that, close collaboration is essential with all parts of the organization, including business, engineering and operations.

Q: On one of the slides you mentioned Git.  Does TeamForge now support Git?

Absolutely.  Since 2011, TeamForge has supported Git, a fast growing distributed version control system. TeamForge enables enterprises to harvest all of the benefits that Git has to offer such as the ability to leverage WAN speeds, peer-to-peer release models, and other features that the Git community enjoys.  However, enterprises are concerned about Git as it tends to drive a development model whereby each Git repo owns its own version of the release.  As a result, at the enterprise level, used in a standalone manner outside of the governance framework of TeamForge, Git can compromise IP governance, traceability, security, and long-term / cross-team productivity.  The TeamForge management features and centralization allow for individual development teams to utilize Git, but then provides the ability to integrate decentralized Git repos back to a main Git repo to centralize administration, governance, release automation, etc.   As a result our enterprise clients are rapidly integrating their Git repositories into TeamForge.  If you are interested in learning more, click here.

Q: Great presentation! Question on “community architecture”. How should we approach commercial communities differently (if at all) from open source communities?

Software development is by definition a social activity, highly leveraging interaction within a community. A main principle and practice of open-source software development is peer production by bartering and collaboration  As such, there is lots of learning that can be applied from open source communities. Effective collaboration around software is critical – so the common access to shared assets (software, artifacts, discussions boards, wikis etc.) is imperative.  The primary key difference between open source communities and commercial communities is that of security and control. Commercial communities generally are more strictly gated against external access.  CollabNet TeamForge has embodied these community collaboration features since our inception in 1999, but we’ve also understood the need for “private” projects/communities and “shared” projects/communities as well.  As a result, we built a rich set of roles-based-access-controls into TeamForge that enable individual projects or groups of projects to select the right level of access appropriate for their specific business and community goals and objectives.

Q:  At Deutsche Post, did you “start small” or roll that out immediately to the entire company?

An initial pilot project lasting nine months and covering five key projects demonstrated that TeamForge had the right mix of individual team enablement (e.g., allowed teams to integrate in many of their favorite point tools into the platform, allowed them to implement a specific type of agile process, etc.) while at the same time providing enterprise wide oversight and governance (e.g., enabled the “right set” of agile processes to be codified into TeamForge “templates” that could be instantly provisioned and used by the on boarded teams, which further led to enterprise wide level consistent metrics, and IP sharing.)  This blend of development team empowerment and executive governance/reuse convinced DP senior management to implement TeamForge as the standard ALM platform across Deutsche Post’s MAIL division.  With that foundation in place, DP could now migrate in new teams in minutes and hours, which quickly grew to an enterprise implementation in which thousands of engineers at >100 companies were collaborating on 100s of interconnected applications.

Q: At DP, besides Amazon, do you use other hosting / cloud providers?   How did you go about choosing them? Can CollabNet host TeamForge?

Per the diagram below, our Deutsche Post DHL team implemented a hybrid development and deployment cloud approach.  For instance, Deutsche Post utilized TeamForge build tools to elastically provision Amazon EC2  test and build servers, while also utilizing a combination of TeamForge / HP Server Automation and T-systems to perform release automation and promotion of production applications.  The DP strategy is to let the development teams select the right development process and target clouds for that business and technology needs at each step of the application lifecycle.  Regarding the hosting part of your question, CollabNet does host TeamForge, ranging from instant-on SaaS provisioning in minutes to enterprise wide installations with 10′s of thousands of users in a single tenant architecture.  Instead of hosting TeamForge in CollabNet’s data center or on-premise in Deutsche Post’s data center, Deutsche Port instead decided to host TeamForge within the T-Systems data center.

The Deutsche Post team implemented a hybrid development and deployment cloud approach

Have a question about this topic? Leave a comment or post it to our Facebook or Twitter pages. We are happy to respond!

Scripting TeamForge Connector Server (CCF 2.0) REST API for fun and profit

One major feedback we received on CCF 1.x was that our customers really liked its bidirectional artifact synching functionality to HP ALM/Quality and Scrumworks Pro but did not like the fact that they could only control its behavior from a locally installed Eclipse client.

As part of CollabNet’s Connect Initiative, we started over with TeamForge Connector Server 2.0 (aka CCF 2.0) and exposed all its functionality over a REST API. Now, there is no need a locally running Eclipse any more and all functionality can be accessed remotely. In fact, all our remote clients (Windows Desktop and Eclipse Desktop) make use of this API.

While our clients already expose a lot of CCF 2.0 features, the REST API can also be used to remotely control the synchronization server with your own tools. For example, you could automatically create an SWP project mapping whenever a new TF project has been created, you could display in TF web UI whether the corresponding defect in HP ALM is already locked/already created or you could come up with your own reporting tool on failed shipments. REST is completely platform neutral, so you can use the programming language of your choice.

This blog post should kickoff a community discussion on our REST API. We will look at your comments to find out in which areas you like to see more examples, where you like to see additonal API methods and also give you a platform to share your custom CCF client code samples.

As a start, we like to point you to a great blog post that gives a short TeamForge Connector REST tutorial based on a Python program that can be used to monitor a customizable list of TF trackers for failed shipments. This program was inspired by a feature request on our CCF mailing list.

So without further ado, please have a look at our REST API tutorial and provide us feedback on what we should blog next.

Best, Johannes

Continuously Innovate Software Delivery with CollabNet Connect

Thank you to everyone who pre-registered for the on demand webinar, “Continuously Innovate Software Delivery with CollabNet Connect,” that I co-presented with Raja Venkataraman, Technical Architect, CollabNet. In the session, we talked about what CollabNet Connect is all about and shared practical examples of TeamForge integrating with Atlassian JIRA and we went over how you can build your own integrations.

Pre-registering for this on-demand event gave people the opportunity to submit questions they had about CollabNet Connect. As a result, we received many great questions that I would like to address here.

Reminder: you can watch the webinar and download my slides at any time. For more information about this topic, please visit www.collab.net/products/collabnetconnect, here, you can access additional webinars, informative assets, and free product downloads.

Don’t forget to register for our upcoming webinars. CollabNet offers multiple webinars a month that cover a variety of topics related to software development.

As promised, here’s the follow up to your questions.

Q: What is an integrated application?

A: An integrated application is a stand-alone application that can seamlessly integrate into any CollabNet TeamForge project. You can use integrated applications to incorporate these types of applications into your TeamForge project:

  • Third party applications
  • Internally developed applications
  • Integrations developed using the TeamForge SOAP APIs
  • External websites

When you add an integrated application to your project, an icon is added to your project navigation bar. Clicking the icon displays the integrated application in the main TeamForge project window.TeamForge site-administrators can register site-wide integrated applications that project administrators can opt to use across projects. Site administrators or users with site-wide roles with the administration permissions for integrated applications can enable/disable integrated applications.

Q: How is an integrated application described?

A: An integrated application is described using two XML files – a deployment configuration file and an application configuration file – that provide information to TeamForge about the configuration options exposed by the application.

In TeamForge 6.1.1, you have the ability to configure some integrated application settings using the user interface. You can also export these settings in XML format and make changes. To edit configuration settings, you would upload the XML file containing the updates.

Q: Can I control user access to an integrated application?

A: TeamForge can integrate the permissions scheme of a separate application into the TeamForge role-based access control system.

To look at how this works, we’ll use the Pebble blogging tool as an example. Pebble is an application that you can quickly integrate with TeamForge.

Pebble brings with it a set of pre-determined roles that you can assign to project users. The roles are defined in the XML application configuration file.

Blog Reader – You can only read blogs and make comments, the comments are sent for moderation.

Blog contributor – You can add blog posts, but they will be sent for moderation.

Blog publisher – You can add blog posts, moderate comments and blog posts.

Blog owner – You can do all that a Blog publisher does as well as change the blog properties and security options.

Any site user with one or more of these roles can see the Pebble Blog button in their project toolbar. Clicking that button allows them to operate Pebble according to their access rights.

Q: How does an integrated application interact with other TeamForge tools?

A: When you integrate an external application into your TeamForge site, the application can take full advantage of object IDs, links and Go URLs.

To look at how this works, we’ll use the Pebble application as an example. Pebble is a blogging tool that you can quickly integrate with TeamForge.

Prefix

Object IDs uniquely identify a TeamForge object so that you can access and use it in different contexts. For example, to get to artifact artf1234 quickly, you just enter artf1234 in the Jump To ID box. In the Pebble tutorial application, the date of a blog post, in YYYYMMDD format, is used as the object ID.

A prefix is an alphanumeric string attached to the beginning of an object ID that TeamForge uses to manage object IDs from different tools. For example, in the Pebble app, <prefix>_20100601 gets you a page showing all the blog posts in the project that were published on June 1, 2010.

The prefix can either be the one specified when an integrated application is added to a project by project administrator, or the one in the XML Application configuration file depending on the “require-per-project-prefix” setting. The “require-per-project-prefix” setting can be true or false. If it is false, each project integration would not need to provide a project prefix; so the one provided in the XML Application configuration file takes effect. If the “require-per-project-prefix” setting is true, a prefix needs to be provided by the user during every project association.

The amount of information the prefix carries depends on the kind of application you are integrating into your TeamForge site.

  • With applications that use object IDs, such as Project Tracker and JIRA, you can identify the project that the object belongs to from its object ID.
  • For applications that don’t have uniquely identified objects, or don’t have the notion of “project,” such as MoinMoin or Review Board, you can choose a prefix that’s specific to the project where the integrated tool is used.

Go URLs

Go URLs allow a user to get to a particular object ID with a short, handy URL. To use this for Pebble, construct a URL like this: https://mysite.com/sf/go/<prefix>_<date in format YYYYMMDD>.

For example, if the Pebble tool in your project has the prefix PA, and you want to send someone all the blog posts published on app June 1, 2010, send them this link: https://mysite.com/sf/go/PA_20100601.

Associations

The object ID can be used to associate objects with other TeamForge objects. For example, if you want to associate a document with the blogs published on June 1, 2010, go to the document’s Associations tab and add an association to PA_20100601 as the object ID.

Automatic links

When you type text of the format <prefix> _<date in YYYYMMDDD> in any TeamForge text field, the text is converted to a link. When you click the link you see the blog posts for that date, if any.

Closing the Agile Loop Webinar Series– End of Ticketing Hell: Integrating Code Quality

Don’t miss this upcoming webinar (part of the Closing the Agile Loop CI series)!
If you can’t attend live, please register to receive a copy of the presentation.

Title: End of Ticketing Hell: Integrating Code Quality
Nothing shatters development’s reputation as easily as poor code in production. The good news is that Continuous Integration (CI) can help to identify problems faster, often before production releases. You will also hear best practices from customers, who successfully enforce quality standards, by outlying and delivering on a strategic quality plan.

Attend this session to learn:

  • Why quality metrics matter, and what to watch out for
  • What code quality approaches really work (proactive, reactive)
  • Which tools are out there to help (including open source)

Register Now

Date: Thursday, January 19, 2012
Time: 10:00 AM – 11:00 AM PST

Speakers:

Industrializing Agile Software Delivery with ALM2.0+ (Join CollabNet for Webinar featuring Forrester Research, Inc., and Deutsche Post!)

We are kicking off 2012 with an exciting webinar featuring Bill Portelli, President and CEO, CollabNet; Dave West, Research Director, Forrester Research and our customer Michael Loetzsch, Transition Manager, Deutsche Post.

Date: Thursday, January 12, 2012
Time: 10:00 AM PT/ 1:00 PM ET

Attend this session and hear:

  • Why ALM 2.0+ is vital for implementing Agile software delivery and DevOps on enterprise scale, and how it’s different from traditional ALM approaches
  • How CollabNet’s latest TeamForge platform enables central governance, without mandating end-user tools or repositories or locking customers into rigid software configurations
  • What key factors contributed to Deutsche Post realizing 30% faster time to market and saving over 20% in IT operations cost, across 800 diverse projects

More info: Enterprise IT departments have increased developer productivity, saved millions, and realized governance with DevOps. However as the value and importance of software delivery increases, the importance of applying business management to the discipline of software also grows. ALM 2.0+ describes changes to traditional ALM in terms of breadth and depth. ALM 2.0+ tools and strategies expand integration with operations and accept tool and platform heterogeneity. They impose a boundary above practitioner tools and encourage ALM to interact with those tools in the context of work and harvest information for traceability, reporting, and management.

Register

Bill Portelli

Dave West, Principal Analyst, Forrester Research

Bill Portelli
President and CEO
CollabNet
Dave West
Research Director, Forrester Research, Inc.
Michael Loetzsch Transition Manager, Deutsche Post

Featured Speakers:

  • Bill Portelli, President and CEO, CollabNet
  • Dave West, Research Director, Forrester Research, Inc.
  • Michael Loetzsch, Transition Manager, Deutsche Post

Can’t attend, but want the info? Register now to receive a copy of the presentation.

Technical Debt – Webinar Q&A

Earlier this week, we ran a webinar entitled “Technical Debt – the High Cost of Future Change”. The topic was of course, technical debt in Agile projects. Although we left what we thought was ample time for questions, as it turned out there were many more than we had time for. So, as promised, we are posting te questions and our responses here. I hope these are helpful!

Q: I’ve found that when asked, people come up with a very ‘full’ definition of done, but in the end they don’t follow it. How do we walk our own walk?
A: I could answer this in a number of ways, but I’ll take a more hard-edged approach here. It is about accountability. An important aspect of Scrum is the idea of the “single wringable neck”. At the end of the day, it’s the product owner who determines whether a story has met the agreed upon definition of done. If he or she chooses to ignore aspects of that definition for whatever reason (expediency, effort to be a liked, business pressure), ultimately he is the one who bears the responsibility for the impact.

Q: Isn’t it likely that someone writing poor code might also write poor and ineffective tests?
A: Absolutely. Agile practices are designed to uncover and display issues like this so that they can be addressed. Practices such as Pair Programming, code review, daily stand-ups, retrospectives, and sprint review meetings are so important. There is no magical fix for poor test writing, but when we know the problem exists we can work to fix it.

Q: How was “”easyness”" vs “”difficulty”" of changing the code measured? What metrics exist for what seems like a semi-subjective value?
A: There are many variables to estimating the difficulty of a code changes. We could talk about things like the complexity of the code (Cyclomatic Complexity), the experience of the programmers, their familiarity with the topic and/or the specific module, the quality of documentation, etc. It ends up being a fairly subjective estimate. In Scrum teams, story sizes are estimated in relative terms in terms of story points.

The primary benefit to using a technique involving Relative Estimates is that you are asking the team to give you an estimate of difficulty relative to other work that has already been completed. This means that a team can easily give judgments like “This will be twice as hard as that” and come up with functional estimations for predictions without spending a great deal of time coming up with them. Estimates are just subjective guesses anyway, understanding that can be a valuable way to put more time into building something and less time into trying to guess how much time it will be to build it.

Planning Poker, also called Scrum poker, is one technique for building relative estimates and for coming to consensus on the effort or relative size of the stories.

Q: Technical debt always meant: those things that you postpone doing that you know must be done, that become more expensive to do as time goes on — e.g. the technical “”debt”" has compounding “”interest”" applied.
A. I like the extension of the metaphor to include the interest on the “debt” because it is quite valid. That said, I would also point out that there are often valid and justifiable reasons for incurring technical debt. As long as teams incurring that debt know what they are doing, have justified it, and have the means to pay it off in the future then that’s fine. (Perhaps there should be some kind of Consumer Protection Agency for developers? Never mind…)

Q: How often does pair programming fail as the result of pairing developers where one has a dominant and one has a passive personality — and how can this be detected and treated?
A: In pair programming you have a two programmers work together at one workstation – a driver and an observer. The driver is the person who types in code while the observer reviews each line of code as it is typed in. The idea is that the driver is focused on completing the tactical aspects of the task at hand. The observer takes a strategic view, looking for ways to improve the code and at the how it fits into the overall system framework.
Generally, you know there is a problem when you see lack of engagement between the two. Simply put, they are not talking. A good way to try to encourage communication is to swap their roles frequently – at least once per day.

Q: If the automated tests exist – but are as old as the code that it’s testing – how would that help?
A: They help to prevent regressions, where changes in other portions of the code may break something that was untouched.

Q: Should refactoring be included as a user story in the sprint?
A: It works to have refactoring stories in sprints, or even to devote an entire sprint to refactoring. Whichever way you choose, the stories must be compliant with INVEST – independent, Negotiable, Valuable, Estimable, Small, Testable. (Bill Wake).

Q: what happened to defensive programming?
A: I think it is an issue of semantics. The principles of defensive coding are well represented and addressed in Agile development techniques. These include reducing source code, complexity, engaging in formal source code reviews, software testing (especially in the context of Continuous Integration practices), re-use, and so on. I would posit that an experienced and mature Agile team is practicing defensive programing.

Q: In the case of a legacy system with existing technical debt, is it advisable to dedicate one or more sprints to reducing the technical debt?
A: This isn’t a technical decision, of course. The decision to devote a sprint to paying down the technical debt of a legacy application should be made based on the business merits of doing so. Look at how much that technical debt is costing you in terms of delivering new functionality and addressing defects. Look also at the impact of moving your developers off enhancements and defects, and onto a project whose impact will not been seen for months. You strategy will be informed by the current maturity and projected lifespan of your application.

You might be interested in a recent webinar we did that looked at integrating Agile Project management and Project Portfolio management. See the link here.

Why you should be using an Artifact Repository- Part 1

I’m continually amazed that many development teams and enterprises do not use an artifact repository as a tool in their software development process.

An artifact repository is akin to what Subversion is to source code, i.e. it is a way of versioning code binary artifacts. In the Java world these artifacts could be jars, wars, ears, fully fledged applications, libraries or a collections of libraries that are packaged.

One of the key areas that artifact repositories help is dependency management. In the real world of development, applications are not static binaries, but a collections of objects that have an interdependency on each other, for example a Web application (.war) will have dependencies on any kind of common functions, for example log4j, dom4j etc… and these dependencies have their own versioning.

In “legacy” development you would probably manage your dependencies as a static list, which scales to a certain point but as the development growths so does the inter-dependencies, this becomes a source of problems. Many people “check-in” their libraries and dependencies with their source I personally feel that this is a not a good practice. It does have a positive effect that your code will co-relate to a set of given dependencies and get all the goodness of version control, however…

Dependencies can in their own right become their own living, breathing entities and treating them statically downplays their prominence. Good build tools understand dependencies and hence why I’m a great fan of using Maven. These tools allows abstraction of dependencies from the build process and allows neats stuff like dependency management.

Maven was designed to manage dependencies. Why keep a binary for log4j 1.2 with your source code in Subversion, where the repository is typically private. Why not keep the common library on a central system whereby *all* development teams can use that exact shared library. Better still is that your build tool like Maven understand where that server is and how to download and use that library within the build. This is all done in one location in Maven, your POM.

Now lets view this from an Enterprise context.

Reuse: Imagine your team develops some common utilities or services.
How do other groups reuse your common libraries within their own builds?
I could describe a whole bunch of ways they could share your jars, most of them bad, no traceability, no versioning control and no direct way to incorporate with your build.

Solution: Publish your libraries to a artifact repository:
1) Your libraries will be versioned controlled
2) Other teams will simply need declare a dependency in their pom to use your library
3) Your common library is now shared

This brings in a whole new level of collaboration.

A downside to this is that you have to install an enterprise level (Maven) Artifact repository. Which actually is not a big deal, there are many that are freely available, Sonatype Nexus, Apache Archiva and Artifactory, just to name a few.

If you are really imaginative you could bring this picture one level forward. Governance.

Imagine you now have your own enterprise wide artifact repository and its the authoritative source of all dependencies, libraries, application releases etc… As teams build their software they “pull” dependencies that are versioned control and pristine and they “publish” to the artifact repository so that common components can be shared plus the repository can be the authoritative source for application deployment.

An enterprise could have there own governance process to ensure that all artifacts are vetted, checked, i.e. to a governed standard, for example licensing, security, intellectual property rights and obviously much more before they are placed for use in the artifact repository. However once they are in and are used as components to build software you now have have that level of security that collection of jars, wars and ears that are running on your production servers and handling multimillion dollar transactions are compliant.

As a final note I’ll leave you with a diagram

Artifact Repository Diagram

Congratulations to our Gartner AADI Summit Raffle Winner!

First of all, we would like to thank everyone who joined us at the Gartner AADI Summit last week. We enjoyed the many inspiring conversations, and we were impressed at the number of visitors to our booth and the great interest in our products and our presentation, “Industrializing Agile Software Delivery with DevOps.”

As promised, we would like to announce the lucky winner of the CollabNet raffle. Brian F. from Visa is the winner of a brand new ipad2!

Congratulations Brian!

Thanks again to everyone who stopped by our booth or listened to our presentation. To learn more about what we presented at the Gartner AADI Summit, please visit www.collab.net/getci or register for our upcoming webinar, “Industrializing Agile Software Delivery with ALM2.0+ on Thursday, January 12th at 10am PT/ 1pm ET.