Code Fusion for Linux: Reviewed
- Company: Cygnus Solutions
- Rating: 9/10
- Summary:With the exception of a few minor annoyances, most notably in the installation process, Code Fusion provides a full range of features for an excellent price.
Cygnus is already a familiar face in the Linux world. They are known for products such as GNUPro Toolkit and Source-Navigator, as well as their support for a variety of other open source projects. Their most recent addition to their product line is Code Fusion, a product which merges and enhances the GNUPro Toolkit and Source- Navigator to create a since integrated development environment.
While there have been instances where people have had troubles installing Code Fusion, I was able to set it up and run it without a hitch. Nonetheless, there were several elements of the install process that could be improved. First, you have to enter a different directory and run a separate install script depending on which version of glibc you are running. Once the setup is complete, you then need to setup several environment variables. While this process is well documented, the risk of typographical errors and the general inconvenience warrant automating this process.
After getting past the mild inconveniences of the installation process, I started up the program and began testing. While Code Fusion comes with a couple example projects and the book has some tutorials, I decided to venture out on my own and create a new project from scratch. And what better way to test a program than to write a Hello World app. Of course, to adequately test all of Code Fusions project browsing featuers, I broke it up into 5 classes.
It took me a couple minutes to figure out how to create new files. It seemed logical to me that the Project Editor window, where you can add, move or delete files, would also let you create a file, but that option is lacking. After digging around menus, I found that the Window menu allowed to you open the Source Editor window, where you can create files.
The Source Editor window provides a variety of convenient options. As with any good IDE, it color codes all our your source. The command to build your code is just a click away. Perhaps most conveniently, it is integrated with a variety of version control programs. In general, it provides a very convenient environment for cranking out code.
Having quickly whipped up all of the classes of my Hello World app, I moved to the feature where Code Fusion really shined, the various project browsers. This feature allows you a wide variety of ways to display your program. It includes a cross reference browser, an include browser, a class browser, and a hierarchy browser.
Finally, I tested the debugging features. This includes all of the standard features expected from any debugger, such as breakpoints, watches, stack traces, etc. Unlike a majority of the debuggers on the market, the screen where you edit the code and the screen where you set break points are different. Having been reared on Microsoft Visual Studio, and given that this differs from the industry standard, this is rather inconvenient. In spite of this, I found the debugger to be generally easy to use and it sure beats using a printf every other line.
Overall, Code Fusion is a very useful product. Any software developer, with the exception of the vi-loving death-before-IDE people, will find its wide variety of features helpful. And with a price under $300, it is financially well within the reach of most individuals and companies.
List Price $299 ($207.43 at CDW)
Yes, KDevelop is approaching maturity and is in its second beta now.
vi? emacs? pff.
The only true programming editor is "cat >".
It has no modes to worry about (like command vs edit mode), no fancy commands to worry about, no cruft like a macro language, has not only been ported to virtually every unix variant (as well as dos, windows, and os/2), but works identically the same everywhere (no need to worry about vi vs nvi vs vim vs elvis). It doesn't depend on curses, windowing, nor anything else like that. It has an incredibly small memory footprint. AND, it forces you to think ahead and spell things correctly the FIRST time.
gdb!? sheer luxury. You never need anything more than the printf debugger.
IDE's? "cat | gcc" and the world is your oyster.
(brought to you by REAL Luddites, as opposed to pansy "vi and emacs til the day I die" luddites)
RHIDE has probably gotten less credit/attention than it deserves because it's from that bizzare free software sub-community using *-DOS. It was developed for DGJPP to give DOS users their familiar Borland-like IDE. Its debugger is just as integrated and easy to use as the Borland one was. It's been available on linux for some time, but so far as I can tell, it's still pretty much only used by Win/DOS types. Too bad really, because I *know* a lot of linux users began programming on those text-based DOS systems and this might do a lot to relieve some of the where's-my-ide-angst floating about.
*sigh*
Okay, there's now five or ten pretty nice IDEs for Linux. (Code Warrior, Code Fusion, KDevelop, CForge...)
There are some extremely good visual debuggers. (ddd, kdbg, Code Medic...)
But...it's all pointless without integrated debugging! I'm sorry, I find the lack of this feature to be a major detriment to these products, and to OSS/free software in general. Ten years ago I was running QuickC on my 286-12 running DOS, and *it* had an integrated debugger.
I have several co-workers now who have installed Linux to check it out, and have been very happy with the power and stability it offers, but - in a nutshell - they won't work without the development environment they are used to, and that means an integrated debugger.
Myself, I find it too annoying to deal with loading up a seperate (graphical) debugger, especially while running an already screen-space-hogging IDE. I continue to use vim+make+gdb.
Yes, I know - I should stop bitching and just code it. Still, it's a big job, and I'm torn whether I should try to add interactive debugging to something like KDevelop (certainly a big job) or simply add some source-editing features to DDD (a smaller job, but less impressive when finished).
I was hoping that Code Fusion would finally contain an integrated debugger, since it's not just a port of an existing IDE. I see now that our only hope is the 'Pro' version of Code Warrior.
I never really got into emacs. I dig vi a lot though. When I went looking for an IDE, I came across C-Forge C-Forge There is a demo available on the site. It has pretty good project management, DND, rcs, and defaults to DDD for debugging. I also love the fact that the editor can operate in 'vi' mode.
Thank you. Drive through. (:wq)
Try to code nice console programs and static libs not touching the horrible VC MFC libs and go STL and stdio instead. What happens?
I've found it often works better than egcs. I had to rewrite an egcs version of a console test app because it didn't like typedefs in templates based on typedefs from the template parameters. (I ended up using -- God help us! -- #defines.) Maybe egcs has improved since then, but slamming a compiler because it isn't quite up to the standards spec means you slam all compilers.
I'll grant you the non-standard scope for variables declared in for loops, and the lack of a standard switch for just changing that, sucks.
To my mind no IDE (including emacs) is really at the level I need it. I like the multiple independently-resizeable edit windows of CodeWarrior (that offer more than just editing, things like setting breakpoints for example). I like the displays of local variables and the edit and continue of Visual. I like the power of command line programs with Unix/Linux. (Especially the ability to pipe grep, grep -v, etc.) I like the ease of learning the simple stuff of CodeWarrior and Visual.
I want the ability to add hyperlinks to documentation in source code, where I can click to get a viewer. I want easy to browse instructions. I want to be able to set *compile* breakpoints, so I can see what header files are included and what's defined at a given point. I want the ability to indicate groupings of functionality even when there's no language-level indication (such as namespaces) of that grouping. I want diff tools that show word-level differences if lines aren't very different, and that show the difference in context. I want to be able to change a variable's name, and have all references to it change too -- but not identically named but different variables.
Ooh, a sarcasm detector. Oh, that's a real useful invention.
Go to freshmeat and search for "gtk". You'll get back a result list of of something like 400 applications. Are all of these useful? Probably not. Most were written by folks trying GTK out, learning, and sharing their results.
Libraries and development enviornments do not govern the usefulness of a program or application.
Plenty of excellent programmers swear by Visual Studio. Plenty of excellent programmers swear by emacs. For some reason, some even use vi (sorry, couldn't resist! ;) )
--
I believe that you are talking about COLD Fusion. This article was about CODE Fusion.
--
Man is most nearly himself when he achieves the seriousness of a child at play.
****Gfx Scrollbar Special case hit!!*****
It's called a Unix shell. It includes choice of editors, build tools, version control, multiple scripting languages, etc. It can work in very little desktop space (i'm currently using just an xterm), is language-independent, etc.
My question is, what does the "Integrated" environment get me that i can't already get with my Unix shell, and how much of the flexibility of the Unix shell must i surrender to get it?
-dave, who is currently hacking Perl over a WAN in an xterm)
---
Hand me that airplane glue and I'll tell you another story.
- does the ide support keystroke navigation -- i hate to use the mouse if i don't have to
i tend to use emacs a lot because of source control tightly intergrated with a simple keystroke.extensibility and customization/personalization are also an important...
The closest things that are available are Code Crusader and KDevelop.
There's several other options out there, but they're not as nice as these two, IMNSHO...
Both offer project management, class browsing C++, syntax highlighting, etc. KDevelop looks nearly like VisualC++, Code Crusader is more closely modeled after Code Warrior. These decisions dictate code choices.
KDevelop does class browsing in a way much like VisualC++ does. Code Crusader shows classes in a class inheritance tree.
Each of these environments have their own set of problems- you'll need to evaluate their offered functionalities and find out the drawbacks for your purposes and choose accordingly.
I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas
The scenario that I'm interested in is that I typically build things at the command line, but use the source browsers to explore other classes and their methods. The other use is that I create the build environments in the IDE, export a makefile (because there are a lot of dependencies to code; let the IDE do it for you), and then fire it all off by typing 'make' at a command line. Does CodeWarrior fit this situation?
While IDEs are nice, I like the ability for them to simply put a GUI on some parts of the development process. Otherwise, hands off and let me use VIM! :grin:
--
Never hit your grandmother with a shovel, for it leaves a bad impression on her mind...
Now, I'm not going to give up Perl, of course, but this would make me just another, slightly happier, perl hacker. Anyone have any leads on something like this?
And to qualify: don't even bother saying emacs. Seriously. No thanks, I already have an operating system. :-)
----
We all take pink lemonade for granted.
There is no K5 cabal.
I am not the real rusty.
Guys, to be honest, SN is just a pile of shit in very fancy tix wrapping.
We were using SN databases ( it parses your project and builds several databases out of it) to make some source analazyng tools for big (more than 2.500 files) project, and we had run into troubles. SN started to crash often, corrupting databases and producing unpredictable results. I have more than 30 bugs listed in our local gnats system. Here are some of those:
to the actual function implementation. The reference points to the function declaration in the parent class, instead of the implementation
in the derived.
And so on. I just took first three bugs from our bug tracking db.
When we tried to contact Cygnus support for those bugs, we received a polite reply on of the support staff that mentioned bugs will be fixed in the future release. We've waited for a couple of months and then new SN update appeared. None of the bugs we submitted to support were fixed..
Of course, there's a lot of good products from Cygnus. I use egcs at work and a lot of tools compiled with cygwin at my home PC, and I can't say anything bad about those products. But never - I repeat - NEVER spend you money on this foolish thing.
PS. sorry for my bad english.
-cambion
Simply, Linux became a buzzword today, and there is a crowd of windoze programmers who'd like to code on linux. But wait, they were using MS VC++ all the time. Even now I meet windows programmers who after looking at a linux machine start saying that their VISUAL tools are superior to gcc or unix editors just because they are Visual Something+++, go figure.
Anyways, everything on unix appears to be difficult to use. But this is just a perception. Once you learn the basics you figure that the whole system makes sense, is very integrated and powerful..
Mac
Win
Now I've been working at a startup for the last six months doing Java. There are few tools to support Java development to the level of complexity offered C++ coders, so we rolled our own. It's still basic as I haven't had much time to continue building it, but that changes next month. :)
Here's what we're currently using:
Most everyone here uses Symantec Cafe. I had already chosen my IDE prior to arriving, however, at a contract a year earlier. After using so many IDEs, I found that the central feature lacking in them all was a good editor. I spend 90% of my coding time actually coding, and very little building.
I eventually found CodeWright (windows only) and have used it since. For one, I have not found a better editor out of the box. Emacs can be configured to do nearly everything and more, but I don't have the time yet to jump in fully. I can get by editing in Emacs, but that's about it.
CodeWright, like Emacs, has extensibility. You can use one of their own three macro languages, C, C++, or Perl to write extensions to the editor. Even easier, however, is that it has hooks for compilers, make, version control, etc. You just enter the (cmd.exe) command line to execute for each function:
And it was just as trivial to tweak it to use our build scripts, tag files, etc.Bottom Line: Take the time to pick a good editor and extend it. Yes, I'd love a class browser, but far more important for me is to be able to hit ctrl-F10 and have the current file saved, preprocessed, and compiled; and the cursor jumps to the first error. You can do all that with Emacs and JDE, and we'll move that way once we jump fully to Unix next year.
Now all I have to do is convince the black hats that Linux is an enterprise platform. Got any ideas?
-PZ
Freedom to fear. Freedom from thought. Freedom to kill.
I guess the War on Terror really is about freedom!
ctags stopped cutting it when I moved from C to C++, and it's useless for Java
Exuberant ctags is far advanced over old ctags programs. The C support is much improved and C++ and Java support have been added and work like a charm. Works especially well in combination with Vim. If you don't like the way it handles Java, you can give JTags a try, but it's nowhere near as stable.
If you're doing Java development, you'll probably also want to use Jikes, as it integrates very nicely with QuickFix mode in Vim and make mode in Emacs. There's also a Jikes Debugger java debugger, but I've not used it.
a decent code beautifier, since indent doesn't work right for Java
jsbeautifier is one of many -- a search I did a few months ago turned up 10 or 12 beautifiers for Java, and even more for other languages.
Of course, if you want a good graphical debugger then ddd is the way to go -- it lets you get to the gdb command line if need be.
Sumner
Is there anyone proficient with these classical tools that has ever switched to any formal IDE, commercial or otherwise?
Btw, I can only laugh at the people asking for an open source IDE -- you've already had one for a decade now...
-p.
I hope no one's suggesting that:
several xterms
+ vi (or emacs, or any editor)
+ gdb
+ rcs (and/or cvs)
+ gcc
+ ls, +ld, etc.
is not an excellent IDE
that's how I plan to code till I tire of coding
Check out Cygnus.
Cygnus has had explosive growth. I would guess that most of their revenues come from support of open-source software. They release and maintain a lot of open-source software.
Why does Cygnus involve itself in commercial closed-source product development and sales? If open-source has been a model that has provided such a profitable market for Cygnus, what is their rationale for creating and selling closed-source products?
Has Cygnus actually performed any marketing studies? Do they know, for a fact, that this actually optimizes their earnings? And, what about the long term? Open-source alternatives are being developed. Will Cygnus be able to compete with the open-source alternatives? Especially when selling into the Linux market?
Time will tell, but I'd like to believe that when open-source alternatives are available, they will ultimately have more features that people need, they will be more stable and I would tend to choose them because I know I can depend on the source if I have a problem and the company peddling it has gone away, or no longer supports the product. I also wonder about releases of this product on different architectures and if I'll ultimately be somehow tied to using some set of Linux distributions to use closed-source products on Linux.
Don't get me wrong. I appreciate all that Cygnus does for open-source. I would like to understand their approach to the marketplace. If there is real data that supports their hybrid approach, I'd like to know about it. Perhaps Cygnus has studied it and sees that there are limitations to providing open-source support only and that to survive you need commercial closed-source products as well. Their original business model was support of open-source products and I'd like to know why they've modified this.