|
|
||||||||||||||||||||||||||||||||||||||||||||||||
Felipe Gaucho's BlogTools ArchivesA syntax-dependent diff toolPosted by felipegaucho on November 29, 2006 at 03:11 PM | Permalink | Comments (14)How many times you observed someone modifying the code formatting of Java classes and other people getting crazy about the lost of the project history from the Concurrent Versions System? At first sight it seems just a problem of communication - someone is not following the company standards or something like that. But think again - is it really a human problem, or our tools are not wise enough to reduce the problem? I've been discussing it for several hours through my community mailing lists (rsjug and cejug), and I detect the general opinion asserts that the problem is restricted to a misunderstanding about development best pratices and project life cycle. Despite that, there is an intrinsic discussion about what kind of difference really matters - a discussion about the DIFF Tools. Before you abandon this text and start burning a voodoo puppet with my name, I invite you to read the text below with an open mind behaviour - let the ideas guide you into a different perspective about version control and diff tools. I don't have any intention to criticize the current tools, the ones I use and I like. This blog is about a (supposedly) better future - and not about criticism. I am just asking you to forget the common beliefs and think differently for few minutes. Most of these ideas were written in the raw mode, so it is possible and plausible that our discussion changes it before we could accept that as good ideas. If you have any contribution, please write them at the end of this blog entry. The common tools available today relies on the longest common subsequences (LCS) to compare the sequence of characters to detect differences between two files. The appeal of such algorithm is that it is fast and robust. It was designed in the Early 70' and it was designed to be clean and to consumes small amount of resources - memory and cpu. In terms of software design, it is nice, but in terms of human support it seems not wise enough to provide a comfortable and safety environment for the developers. Check the example below:
Some open questions:
If you keep attention on the questions, you noticed there is a common element for all of them: people. People is the key in the software development process, and tools that force people to do things in a different way they want to do is less wise than I supose it could be. Now you have a cenario, and I will suggest you some ideas about how a new tool - the one I don't know if exist because I asked to a lot of people and nobody give me any clue about that. If you know about such tool, please send me the link and I publish it in large letters as a contribution for the community. I am just asking and looking for Open Source tools, but if you know a commercial tool I will also publish the link here. A syntax dependent diif toolSeveral ideas emerged when I started asking about giving the freedom for people choosing their own formating standard. One argue it could be done using a new customized diff tool or through a special configurable diff tool. Other prefers that only the IDE control such view customization, leaving the diff as it is today - just comparing characters. In both cases, the aim of such idea is to allow people to act like the steps below:
This environment suggest everyone in the project felt comfortable about code formating - code formating has the same impact in the project as the music developers listen while working: nothing. Doesn't matter what kind of music your coleagues are listening. If you want to program listening music, you will listen your preferred music, right ? Imagine your level of productivity if your company established a standard for music and play the same boss selection for everyone all day ;). Natural observations on the original draft about a diff dependent of the programming language context:
Done. I could extend this text with a lot of other ideas, but I prefer to wait the feedback before loosing context suggesting minor features or talking about other usages of such tool. The IDEs are driving us crazyPosted by felipegaucho on February 09, 2006 at 12:13 PM | Permalink | Comments (12)
If you had patient to observe the above report, you noticed some messy running on the code produced by the project team during february. The scenario is simple: My project has members from many countries in the world, everyone using a different IDE, a different operational system and speaking a different idiom. All the people are motivated to do the best to put the project in the right way, but this Babel of tools are causing much more problems than solutions.Seems familiar ? I guess so because almost every project I ever seen in my life suffers from configuration problems. If you are a member of a project in which every person could choose his own development environment, I'm sure you have painfull experiences with the code-style, integration and even the project communication. It is so common I decided to register this situation here in my blog. Two other recent situations I experienced in my projects:
Machines: please don't think, just obeyThe configuration problems seem ontological to computing and I can't imagine great solutions without much human interference. Despite that, several IDE vendors are designing heuristics to provide their IDEs the ability to guess what the humans are trying to do. This comfortable feature causes lazyness and ignorance about the development details - such as file encoding or code-style, for example. When a machine start taking decisions instead to ask the person what to do, the problems start. I think friendly IDEs as a great stuff, but it should be less pretentious about their ability to help us in our duties. Some ideas: project descriptors like the ones used by Maven seem a great idea and something like that could be available for the IDEs. Imagine for a minute a specification of a XML Schema created by a consortium of IDE providers, in order to unify the project descriptors. Imagine now that every IDE forces the user to inform this default project descriptor in order to start a new project. Wonderful ? I guess so. Unfortunately, it seems far beyond the reality. For now, all responsability to reconfigure every new tools is still on humans and, you know, humans are not perfect. Until we can figure out a solution for configuration problems, I enumerated a sanity checklist to help you to keep your team working together - if you know smart ways to avoid configuration problems, please let us to know. Tricks to keep the team sanity:
Wink - the power of presentationsPosted by felipegaucho on December 19, 2005 at 04:54 AM | Permalink | Comments (6)Cejug-Classifieds have become popular these days and several new developers have asked about how to configure their development environment. I first tried the traditional way publishing some documents such as the Reference Guide and posting detailed messages in the developers mailing list. That effort revealed itself weak and many developers remain out of work just because they don't have much time to figure out how to configure the Tomcat, the MySql and mainly the Web Tools for Eclipse. Visiting other projects I noted the usage of demo videos as a powerful way to teach how to do things. Kirill Grouchnikov uses AVI video format [1, 2] and the Solaris team shows some well tailored videos about the OS. Other project and blogs include people in complete audio/vídeo about technology news and installation guidance.
I strongly recommend the usage of tutorials in your Open Source project. Presentations and tutorials are faster to produce and reduce communication problems. I know there are more sophisticated commercial softwares to create presentation, but Wink is a free alternative that offers a very good usability. Aknowledgement: moments before publishing this entry I found a previous post by Vincent Brabant. Brabant first introduced the Wink through an elegant presentation about NetBeans. I will try to use those next button tricks in order to control the rhythm of my next presentations. | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|