What Tools Do FLOSS Developers Need?
An anonymous reader writes "I am a free software developer; I maintain one relatively simple project written in C, targeted at end users, but I feel that I could contribute something more to the FLOSS community than my project. Instead of focusing on another project targeted at end users, I thought that I could spend my time working on something FLOSS developers need ('Developers, developers, developers, developers!'). The question is: what more do FLOSS developers need from existing development tools? What would attract new developers to existing FLOSS development tools? Which existing development tools need more attention? I can contribute code in C, Python and bash, but I can also write documentation, do testing and translate to my native language. Any hints?"
Visual Studio is the favorite IDE for lots of programmers and without a doubt still the one thats considered best there is.
However I've started doing some Linux programming along with other languages that could be developed on Linux (PHP, Delphi/Kylix). However the IDE's I've tested dont seem to compare with Visual Studio or even Delphi's IDE. In most cases they're mostly somewhat advanced text editors and building and debugging is more inconvenient. They just dont feel like complete IDE's where you can do your work. Is there such professional suites available on Linux and if not, what could be done to improve the existing IDE's and tools to that level?
A dentists chair and some teeth?
(bad joke i know)
You should code whatever you need. If you code something others need, you will either do it wrong, or get bored. Do what you know best.
GDB is a nice debugger for C programs and sometimes it is even tolerable as a C++ debugger. Nonetheless, it is only tolerable to the extent you avoid using the STL and you don't happen to rely on any external library. So I have to say that a C++ debugger is almost desperately needed in the FLOSS world.
Several sets of dentures and a floss waxing machine, for starters. And can we please have some flavors besides "minty fresh?"
It depends on what itch you want to scratch. Improve the tools that you want to use. If all else fails, you could look at Eclipse and cppcheck.
Because we need someone to finally give us proper editor on top of the OS we use.
One that hath name thou can not otter
Seems to work in the real world when you want to attract talent.
API references aren't enough. Need rational, best practices, meaningful examples and references. Tutorials aren't terribly useful because they are inherently limited to cases that are easily teachable. OpenSSL is a fine specimen; crucial parts of the API are omitted from the current, maintained documentation. These can only be found in the archived SSLeay documentation, and that amounts to a spotty collection of notes.
(yes, I've paid for the books, too)
Lurking at the bottom of the gravity well, getting old
My biggest problem with much of OSS is that the documentation is terrible. Try figuring out what the *right* way to do a "poll" type call on Linux is, or how to configure clustering with Geronimo and you will quickly realize that outside of reading the code there is almost NO good documentation on how to do more advanced things with open source software.
FLOSS stands for "Free/Libre Open Source Software". I have not seen it with the "Libre" added in there before, so I'm sure others have not as well. Great job spelling it out the first time you use it, Slashdot.
Anyone that claims they aren't hasn't bothered to use the tools available to them. It's entirely possible to get equivalent context-awareness going in VIM/Emacs, but since they aren't packaged as a whole people write them off as being "obsolete" or somesuch nonsense.
Last I looked KGDB worked quite well, and it behaves in a very similar fashion to Windows when being debugged.
You mean GDB? What "new things" could be added?
a text editor with a web browser, email client, irc, calculator and tetris......oh wait
Git, mercurial, monotone, etc. are all ready nice, and do pretty much the same thing, but it's annoying to have to use the one that the project leader decides on. It would be nice (if it's possible) to be able to pick which one you want to use as a client, and have it work with whatever the project manager wants to use for the upstream repository. I'm not sure what all this would encompass, probably some common distribution (push/pull) protocol would need to be implemented by all the different SCMs..
If there is one thing FLOSS regularly needs help with, it's documentation.
I give you OpenSSL: One of the most well known libraries, and the documentation is very lacking. How about some better examples? How do I use PSK? How about a quick start guide?
So many projects have this problem: They have "API documentation" which is nothing but a list of what the individual functions do with no indication how they get used together. Or they document functions but not data structures, etc. So if you really want to help, write documentation.
Get some good examples written in Vala/Genie before the whole world goes Python. Most apps don't need Python. Just a few examples and some finding & documentation from someone who knows Python may be enough to get this off the ground. That would end "bindings" and "interpreter startup" issues from desktop Linux OSes.
Science & open-source build trust from peer review. Learn systems you can trust.
If I had the time I'd work on a tool that was geared towards helping developers find APIs to accomplish some idea. Often, I have a task to perform, but it's difficult to find the right functions or objects to use to do the job - or if one even exists. Generally, I google or use MSDN search, but I find it's difficult to find keywords that will lead me to APIs instead of generic discussions or procedures. If there were a tool that contained a database of every export from every DLL with instructions on how to use it, and some intelligent way to drill down and help find what you're looking for - I think that would be amazingly helpful.
I'd like a RAD tool as easy and secure (comparatively) as ORACLE's Designer product to build web app front ends to databases. This functionality should allow for nested queries, PL/SQL, triggers, printing, lookups, commits, rollbacks etc. etc. without all the hassles of having to get deep into the programming to make it happen. It should also allow database roles to be easily implemented with a full suite of tabbed forms and reports. Think MS ACCESS for the RAD part with the power and quality of PostgreSQL behind it - now make it produce Java forms and easily connect to remote data sources while not requiring a third tier app server. There's probably something like that out there. If so, I'd LOVE to hear about it.
*** Don't be dull.***
That's fair, but it's also worth keeping in mind that "Fork it if you don't like it" is only better than a closed source product if you have the resources and expertise to fork it. Otherwise, you're just as helpless.
Beyond that, the software that will eventually replace the old DOS-based crap you're talking about will be whatever meets the businesses'/users' needs. If you'd like to see that be your FOSS project rather than a proprietary solution, then paying attention to user requests might be helpful.
If you don't care whether your project gets used... well I guess users have no leverage unless they want to pay you, and maybe not even then.
Anyone that claims either vi or emacs is a useful editor hasn't used a modern Windows IDE.
Anyone that claims Visual Studio is a useful IDE hasn't used Emacs SLIME :)
I think we're pretty well covered as far as development tools go. The problem is that a lot of them aren't terribly well polished and the documentation -- if it exists at all -- is often terrible.
Find a project you like but that needs work and help bring it to maturity. Or go looking through the plethora of abandoned projects out there for something that looks promising and bring it back to life.
Proud member of the Weirdo-American community.
Clippy
I can ... translate to my native language.
Bootstrap... translate docs and error messages for developer tools, so your fellow native developers can work in a native language.
And when you find stuff thats too icky to translate, rewrite and feed it back upstream.
"Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
Anyone that claims either vi or emacs is a useful editor hasn't used a modern Windows IDE.
Umm, I've used a modern Windows IDE and I still always go back to vim to do my Linux or cross-platform development. Contextual awareness is great, but the baggage dragged over with it is not worth the cost in terms of execution speed (it shouldn't take THAT fucking long to compile a program with half a dozen modules) and corrolary features such as build and integration control. In this regard, the Unix approach of having independent tools that do a small number of things well is still better than having a single tool that does a lot of things half-assedly.
I think all you really need is a good wax applicator and some really good string. Maybe a way to apply flavor would be nice too.
Why bother
SLIME does not hold a candle to VS sorry.
Why bother
People who whine and bitch, saying things like "FOSS will never take off if it doesn't conform to me and only me" is why developers say fork it or fuck off. You're not contributing anything, you're just being a nuisance.
Developers get all sorts of random demands from petulant users. If we patiently explained to each and every one of them why their suggestion either isn't a priority (or even would be detrimental to the project) we wouldn't be developers because that would take up all our time.
You won't get anything different from closed source developers, except that you wouldn't manage to talk to them at all. They have a bureaucracy to intercept you, and tell you, politely, to fuck off.
Say what you want about emacs but vim is a quite useful editor. Jeany is pretty good, too, if you like GUI editors. I actually don't like IDEs for editing. Sure, they bring a lot of other things to the table that may be compelling enough to hold my nose and use the IDE's editor, but to say that vi or emacs are not useful editors when compared with a modern Windows IDE seems a stunning statement to me. I find that when what needs to be done is to write and edit, a standalone editor is a better tool for that the embedded editor in an IDE. In fact, all of the best programmers I know use either vim or emacs rather than an IDE. I find it very disturbing that most of them use emacs rather than vim, but that's another story :)
What if I use Netbeans on Linux? Is that better than vim or emacs? Does it count if I use Xcode? Or are claiming that Windows is the best programming platform? Or are you drunk? Or are you not really a programmer? What about patching the kernel? Why would you need to patch *any* kernel if you so obviously think that a "modern Wndows IDE" is better than good old vim and emacs?
You are very confused sir. You also communicate as newbies often do: generalization, lots of unrelated subjects, etc, etc. After all, I have used lots of different IDEs and I keep coming back to my faithful vim because, guess what, it does what I need and more. For the things it doesn't do, well, that's why you need lots of the GNU tools out there, right? How do you awk on your beloved Windows IDEs? How do you grep? How do you head or tail or even cron your way on your Windows IDEs?
Again, why was it you had to patch your Linux kernel?
If you want to spend more time configuring the tools than developing then KGDB and GDB are the tools for you! GDB is so arcane that setting a breakpoint is nigh impossible without the manual in your hand but then you have only one left to type with, and oh wait, you will have two hands after all as there is no manual for GDB sorry my bad. Oops I stand corrected I found the manual. It does assume you know quite a bit though and these are the instructions for "running a program under GDB"
When you run a program under gdb, you must first generate debugging information when you compile it.
You may start gdb with its arguments, if any, in an environment of your choice. If you are doing native debugging, you may redirect your program's input and output, debug an already running process, or kill a child process.
to compile a program to run inder GDB you are assumed to be using C/C++ and the GCC compiler from the command line ie.
To request debugging information, specify the `-g' option when you run the compiler.
There is more but it also assumes the command line is in use or you are somehow a guru at configuring the IDE of your choice. Sorry. For utility and ease of development Visual Studio is still tops.
Surely someone somewhere has made GDB and their IDE of choice easier to use? I will plead ignorance of it despite quite a bit of research and the research delivered some very confusing results at that.
Why bother
As a developer: if I'm not being paid and my pet project isn't being helped along by someone willing/able to code, write documentation, etc... why should I care again?
Why are you letting these clowns ruin our country?
SLIME does not hold a candle to VS sorry.
I can think of plenty of features that SLIME has, but VS does not. However, I can't think of any feature in VS that is not matched by either Emacs itself, SLIME or some other extension.
Could you explain why you think VS is better?
Find an existing project that interests you and work on it.
Developers need projects to collaborate on. Fortunately, many projects already exist.
To find a project just browse open source projects on sites like SourceForge, Google Code, CodePlex, etc. Don't waste your time (and life) working on projects that don't get you excited. If you're not interested in a project it will feel more like work than it has to.
Twenty heads are better than two.
Anyone that claims Visual Studio is a useful IDE hasn't used Emacs SLIME :)
Props to that!
(it shouldn't take THAT fucking long to compile a program with half a dozen modules)
Unless you have some piece of shit computer, I just compiled a solution in VS with 50 projects in 1 minutes. The machine has a rather low spec core2duo and 3 gigs of RAM.
I used Visual Studio quite a bit, and I'm not sure why everyone seems to think it's so great. I've used Codeblocks and Kdevelop since then, and find that I much prefer those IDEs. Lately I've been working on using Vim as an IDE, and after a bit of adjustment, I'm pretty sure it will end up being my IDE of choice. As for debugging, gdb does an excellent job. (And those complaining about setting breakpoints . . . have you even used gdb?)
I'm rather curious though. What features does VS have that make it so "superior?"
I see you are programing a privilege escalation exploit, would you like help with that?
Yes, I'm a Qt Fanboi, but hear me out:
Qt is free (LGPL), multiplatform (support all users), fill-featured and clean.
QtCreator (new) is the Qt IDE, with tons of support and integrated help, including an integrated gdb (or other) debugger.
If you're on Python, then wait a bit for PySide or get PyQt now.
I feel I can move mountains with just one download the sdk
Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
"FLOSS" sounds like what I use to clean my teeth.
Clippy
Da! Is brilliant idea! Already done though.
http://vigor.sourceforge.net/
Nothing to see here, move along
I love that tool for my windows editing, if something that replicated its functionality that was as easy to use and learn existed for *nix world...I'd be in heaven.
Yes there are lots of editor tools, but I have yet to find one that works as easily (and intuitively at least for me) as UltraEdit. I have never had to access the help for this tool its that easy, but at the same time hugely powerful!
Clone that! Make it work native in KDE! Yeah that would help immensely.
Power Corrupts,Absolute Power Corrupts Absolutely, leaving one person(group)in charge is absolutely corrupt.
A working static analyzer. Clang is almost there but generates way too much cruft to wade through.
More mature fuzzing tools would be handy too.
Linux development seems to still be stuck to shell+Vim/Emacs+gdb for many. It's actually kinda interesting, given that decent IDEs have been available for a long time - Eclipse CDT, NetBeans, KDevelop, and recently Qt Creator. Of those, Qt Creator seems to be the easiest to just start using (even more so for people with past Visual Studio experience, as it uses many familiar shortcuts and layout), and also best-integrated - UI designer, debugger, documentation etc. This part is good.
FOSS IDEs also tend to have decent (and easily extensible) integration with various SCMs - also good.
What's missing is the last part of development cycle - integration with issue trackers, and something akin to document libraries. To give an example from TFS: in Visual Studio with TFS as a SCM/tracker, I can browse the source code tree, view history of a particular file, and see all changesets (versions) - nothing unusual so far. However, for any changeset, I can then open the ticket with which it was associated (if any), navigate any further references (e.g. other associated commits and files in them), and so on. On the other hand, when making a commit, I get a list of tickets assigned to me (with filters etc), and can quickly associate the commit with appropriate ticket. This kind of thing is actually very handy, and after using it for a while, it's hard to return back to separate trackers which aren't integrated with IDE.
Now I'm not sure how I would do that in a "modern IDE" but I'm not convinced that it's missing either.. Ive just burned too many neurons to quit vim..
Storm
:wq
Come help work on SCons!
SCons is an Open Source software construction tool—that is, a next-generation build tool. Think of SCons as an improved, cross-platform substitute for the classic Make utility with integrated functionality similar to autoconf/automake and compiler caches such as ccache. In short, SCons is an easier, more reliable and faster way to build software.
It's under active development, and it's the best way to build C, C++, LaTeX, and lots of other types of projects. Build scripts are 100% python so you have the full power of a real language in your build. And... we need new developers to get to the next level! We have lots of ideas for ways to improve it. Come and take a few Easy-tagged tickets and implement them, you'll be amazed how easy it is to contribute. Plus we're friendly.
SLIME looks very useful, so long as the only thing I need to debug is Emacs itself. I can't find the part in the SLIME manual where it helps me write and debug programs written in any of the languages supported in Visual Studio. The one I care about is C.
If SLIME really can help me, I'd love to use it. It does look quite nice.
As an aside, if you believe that open source developers write tools to scratch their own itches, does this mean that more people need to debug Emacs than need to debug any other program? ;)
I'd love to see a static code analysis tool for C/C++ that was as good as FindBugs.
Foss never takes off? How about:
Your TV
Your DVB reciever?
The internet that you are on, with your supscription to you ISP servers that probably run FOSS?
How about the global economy? The servers that are keeping trading alive, may they not be run by FOSS for the majority of them?
How about you webapps?
Game servers that you play your games on?
The computer in your car?
You phone maybe?
Your radio?
Webkit, GNU tools and whatever Apple uses in Mac OS X, "The most friendly computers"
Etc, etc, etc...
In other words: You don't have a clue...
Here be signatures
I doubt there's a person alive who can substantially change FLOSS development - the tools have been there for nigh on 40 years. If there's a problem I can almost guarantee that someone would've fixed it already.
I suspect documentation and translation would be the biggest help - if you're looking for "bang for your buck^Wtime", go with this.
If it's code you're looking to contribute, I don't think you (or any one person) can really do anything more than incremental improvements. Don't get me wrong, incremental improvements are great - but I imagine they'd get a little demoralizing.
If I were looking to contribute code, I'd try to come up with a reasonably minor but very useful improvement, such as bash's completion - the one that doesn't just list commands or directories, but for example listing emacs when you do "apt-get install ema" (along with supporting a whole host of other commands, like sysctl, tar, ping, and ssh). That's something that makes a big difference and is extremely useful, but it's very possible that one person could do it in a reasonable amount of time.
I have developed a truly marvelous proof of this comment, which this signature is too narrow to contain.
It's probably not what the GP was talking about, but if somebody improved the support for C++ templates, that would be great. Sometimes it gets lost.
Anyway, it is not as if what a debuger does changed on those 30 years. What is happening is that there is a generation of developers afraid to use the command line, as amusing as it may sound. May I add that I doubt about the competence of those ones that are afraid of the command line, but they are cheap, sometimes it is hard to make a point about hiring good people.
About IDEs, enterprize languages (Java, .Net) come with lots and lots of redundancy. You don't want to get ride of the redundancy, since that is what makes those languages resilient to bad programers passin through a team, so the good programmers automatize things through IDEs, and everybody is happy. The problem is that people see how much productivity they gain with a IDE on such languages, and start expecting the same gain when working on less redundant ones.
Rethinking email
Being able to step backwards through code while debugging would be nice...
Here are some google tech talks / presentations...
http://www.youtube.com/watch?v=LpfmKIxusZY
http://video.google.com/videoplay?docid=3897010229726822034#
And there's a debugger here (which I should try out sometime...):
http://www.lambdacs.com/debugger/debugger.html
Still, I haven't seen this being available with many different platforms.
Yeah, I'll probably get modded down for this, but ah well.*
Screw 'em. There is already enough navel-gazing occurring in the FLOSS developer community. And if you try to do something nice for FLOSS developers, you are likely going to get flamed and generally abused for trying. Some folks have suggested writing a Visual Studio replacement. Heh, have you seen how many of these projects have started and failed? How many times do you think developers for these projects hear things like, "That's stupid, use vi." or "gdb can do anything your bloated software can." Most of them just don't see the value in it, because what they use works for them, and they are too narcissitic to consider what other people might need, or to even consider that the way they are doing something isn't automatically the best way.
So, yeah, if you want to write something for developers, I guess write something for yourself. At least then one person will use your project. Maybe you will even find some like-minded individuals that see the value in it also. But I think you will find it more rewarding working with people who actually want to use your product and are thankful for your time developing it.
Now, if you really want to make a developer tool that will catch on, my advice is to put a diamond in that navel. Pick a flavor of the week language and write a tool in that language that replicates the functionality of another commonly used tool, preferably written in a 'competing' language. Like, oh I don't know, a software code repository written in... let's say Ruby. Or maybe a package manager. Extra points for making a distro based on it.
* Do I seem bitter? Sorry about that, but after years in the community, I grow weary of some of the self-important attitudes I see in the FLOSS community. Most contributions I have attempted has either been flat out stolen (straight-up name replacement), mimicked by someone in a better strategic position (e.g., Ingo/Con style), flat-out ignored (ever submitted a bug report with a patch?), or flamed for it (ever submitted a bug report?). I've actually only found one project that I contribute to regularly that isn't like this and they tend to get most/all of my time. After all, why bother contributing bug reports, documentation, bug fixes, or feature patches to a project if all you get out of it is a fruitless time-sink?
he wasn't trying to compile, just bring up the intellisense parameter list :)
I've yet to find a decent tool for data modelling. Something akin to CA's ERWin. The best I've fond thus far is pgDesigner, but even that is a kludgy GTK interface and only works with PostgreSQL. I find using DIA for pretty much anything is an exercise in self inflicted torture. To be able to build a database design visually, see the relationships at a glance, automate the generation of the create/alter scripts, etc. This would make business coding SOOO much easier and faster. And it even helps to communicate the application design to new coders to the project who do not understand where data is and why. (Good documentation is one thing, but a picture speaks a thousand words....)
Pick a large, active open-source project and try to help with the problems its developers have. You will be loved.
Here are some of the problems I'm aware of within the Mozilla project.
Speed of development
'make' doesn't scale. An incremental build, even with no changes, takes at least a minute. (In contrast, just checking whether any files have changed takes 'hg' less than 10 seconds.) Maybe help us move to 'scons', or help improve 'pymake', or just help us get our dependency generation right.
'ld' is slow. Once a developer makes a change to any c++ file, the incremental build is going to take several minutes while the linker uses up all her RAM. Maybe help us move to another linker such as 'gold', and contribute any necessary changes back to the 'gold' project.
'hg' merges are confusing. hg's developer-facing user interface could be improved, both while doing a merge and after doing a merge.
Automated testing
We've built an interesting interface around hg-pushlog (which is itself a Mozilla extension to hg) and buildbot that lets us see which tests failed after each change. I'd love to see these tools generalized to the point where other open-source projects can use it and contribute back to it.
As we require unit and integration tests for more and more components of Firefox, we're finding that a small number of tests failing intermittently can make it difficult to move quickly. We could use better tools for tracking test failures, and for record-and-replay debugging to help us figure out the intermittent failures, and probably for other things we haven't thought of.
Programming languages
We need a decent low-level programming language. Something that lets programmers implement sneaky fast algorithms, but lets programmers do it without constantly shooting themselves in the foot with security holes. Something you'd want to write (difficult parts of) a web browser or OS in.
I don't know if the answer is adding more and more to the type system (like in Cyclone), or integration of assertions with static analysis (like in D), or simply making it easy to integrate low-level code with high-level code (like in C#, or with ctypes or jsctypes).
Mozilla is doing interesting things with custom static analysis of C++ code.
Making collaboration tools support workflow and GTD
We have a crash analysis system and a bug-tracking system with lots of information, but the workflow is poor, so much of the information is not acted upon.
It's hard to come up with a good workflow (and make the tools support that workflow) in a large project where many of the contributors are volunteers who decide themselves what to work on, but I think we can do better.
The shareholder is always right.
I had KGDB going in less than a day, and the total debugging time has by far eclipsed the setup time. And I don't use GDB directly, I use DDD, which is a graphical frontend to GDB that makes setting breakpoints trivial.
As if Visual Studio can debug GCC generated binaries.
So setting compiler options in your GUI (assuming you have one) makes you a guru? Hell, knowing how to use your compiler makes you a guru?
Sounds more like a crutch for people who don't know or refuse to learn. I can understand wrapping up features in a nice GUI, but to claim that knowing what those nice GUI options actually translate to shouldn't be "guru level" knowledge.
It makes me wonder if you've ever explored the development tools available on Linux, or if the concept of a console scares you.
Sorry, misinterpreted that. You are assumed to be using a GCC generated binary, which means you'll be using a language that is available via the GNU Compiler Collection. If you're using C#, Java, Python or Ruby you'll use the debugging facilities supplied by those languages. You seem to mistake the unified UI of VS for using the same debugger on multiple languages.
I've seen it written in many places that that the Microsoft-centric DirectX/Direct3D have "better" tools for development of professional-level games than OpenGL. Or perhaps not necessarily "better", but things where MS has released some auxiliary tool that has no open-source / OpenGL equivalent. Or are much easier for a budding developer to just get in and play with. I wish I could recall details off the top of my head, but http://tech.slashdot.org/story/10/01/08/1830222/Why-You-Should-Use-OpenGL-and-Not-DirectX and the related reading may provide a little more insight.
SLIME is for developing in Common Lisp. Emacs is written in its own Lisp dialect (called Emacs Lisp).
If you want a more IDE-like environment in Emacs, have a look at CEDET and ECB.
Tool chain integration that actually works, not having to code in lisp to make macros work? I could go on but that will do for a start,
Why bother
There's nothing that's needed more than good documentation. Document your own libraries well -- not just a list of every entry point into your library and a sentence or two what it does, but a description of the concepts and facilities the library provides -- including what the programmer that uses your library will need to understand before he even decides whether it's suitable for his application.
I don't think you get this whole Open Source thing. If you don't like it for a good reason, then many others won't either.
That's not necessarily the case. I might have different needs the "most people". No, a closed source vendor won't necessarily support my niche needs either, but my only point was that the ability to make my own patches or fork a project is only an advantage if I have the resources to do that.
But there are lots of common complaints about open source projects that don't get fixed. Claim they're not "valid" if you like, but users still won't use your project if you don't address their "invalid" complaints and closed source products do.
I see many people talking about Visual Studios and IDE's . I think there are many good IDE's in Linux.
What I think is needed is something new that can take Linux to the next level.
Maybe some collaborative tools to help with development of SOA and cloud based systems.
Or something that will help automate the location, rating and selection of libraries.
I am always doing that which I can not do, in order that I may learn how to do it. - Pablo Picasso
Well the author of Braid (the game) seems to have a few wishes for game development. Perhaps help him out?
Source: http://braid-game.com/news/?p=364
But it did not survive very well the move from KDE3 to KDE4. The project had 1 or 2 developers, I think, and they did amazing work. However currently the project web pages are outdated, point to each other in circles and the project does not move (or so it seems from my perspective). IMHO, Quanta Plus is in the top position in badly-needed-FOSS-apps-list.
"There is no substitute for watching your code run on the platform in real time."
Well, yeah.. but debuggers often alter what goes on in real time. Especially when lots of hardware interrupts are involved. I've seen first hand the damage a kernel level debugger can do. It can lead you chasing down ghosts, misidentifying problems, mask problems making them impossible to see when the debugger is running, etc.
To be fair, I've also seen printk() screw things up. Especially when prink() is stuck running inside interrupt context and is spewing data out a serial port :)
I found that the best way to debug the really nitty gritty hard-to-debug stuff is to bit bang wires that are connected to a logic analyzer of some sort.
Slashdot: Where people pretend to be twice as smart as they really are by behaving like children.
I have recently installed K-Develop and there was a total lack of project templates for different kinds of applications. By templates, I means a project file, make file and boilerplate skeleton code to start with.
I have font memories of Visual Studio giving me project templates for all manners of COM libraries, GUI apps, NT services, etc. Likewise, I would like to have templates for K-Parts, for whatever the KDE COM equivalent is, for Plasma widgets and full flegged GUI apps.
Sonny you just need to get the hell off of my lawn!
Yeah we made all that stuff and we were proud of what we accomplished with the stone knives and bear skins. But this is the 21st century.
Why bother
A good set of teeth and strain meters for use on the fibers...
You know... FLOSS! Get it?
Thanks, folks! I'll be here all week! Try the veal!
That is all.
For sure I can imagine a few things:
Yeah, GDB can do a lot. But GDB alone is not enough for efficient debugging.
Give lazarus a whirl!
http://lazarus.freepascal.org/
Is someone going to build a delphi clone better? Not likely this one has been in development
nearly 10 years and it is as close as you are going to get.
Got Code?
Why have we NOT mentioned Code::Blocks, a full C/++ editor? Exactly what the poster is asking for. Also includes support for wxwidgets (gui making stuff, cross platform, can be statically compiled). Plenty of plugins. I've used it, and it works great! http://www.codeblocks.org/
Try programming in Java in Vim, then in an IDE with refactoring support. It actually makes Java *gasp* useable.
But this is the 21st century.
And in the 21st century there's quite a lot of programmers who are so incompetent that they think that a command line is scary. It's just another programming/scripting language, and a useful one at that.
GUI's have their place. But so do command lines.
---
DRM is the #1 cause of software failure today.
Komodo Edit is a free editor you can use, and you can contribute to Openkomodo - it is a blend of Mozilla platform, Python and some other technologies.
I use it with the Morekomodo plugin, but even without plugins it has lots of functionality, specially for python.
Unless its heavy weight, I prefer everything of this editor over the Notepad++.
Tool chain integration that actually works
What doesn't work?
not having to code in lisp to make macros work
Visual Studio doesn't support any programming language with macros, unless someone has made a Boo plugin whilst I wasn't looking.
Or did you mean keyboard macros? Because you don't need to write any code for that, either. Now, I don't think Emacs is as quite good as Vim for defining keyboard macros, but it's certainly better than Visual Studio.
I can't find the part in the SLIME manual where it helps me write and debug programs written in any of the languages supported in Visual Studio. The one I care about is C.
C is a statically compiled language, so you can't really build a system like SLIME for it. SLIME needs to be connected to a running VM that it can push code to dynamically. C wasn't designed with that capability in mind.
Yes. I saw that. That is why I posted. To point out that your only point was quite off base.
Most of the time those complaints are made on Slashdot rather than to the developer. In other cases the person who has no ability or intent to help in any way (including donations) is a jerk the way they go about it. Here is a quiz for you:
How many issues have you brought to the appropriate forum (appropriate developers e-mail / mailing list), and how has that been handled?
Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
Isn't that the method every one uses when they don't know the answer to a question? Just google it and you'll find out what other people have to say. Or, if you like, just go to stackoverflow.com and ask your question there. It's not like someone's holding a gun to your head forbidding you from just asking?
Javadoc is the best example.
The largest prime factor of my UID is 263267.
So wait, just for clarification, you're suggesting that every valid request made to open source projects gets addressed quickly and thoroughly to the satisfaction of the requestor?
I'm trying to work out just what it is that you're claiming, but that seems to be it. You don't seem to even be willing to entertain the possibility that some valid and polite requests, made under appropriate circumstances, ever go unanswered.
Anyway, it doesn't really matter to my point. Even if you ignore requests to spite the "jerks" who make their requests improperly, you're still probably losing users. And as I said, I think that's perfectly fine... unless you want lots of people to use your software. On the other hand, if FLOSS developers really want to steal users from their proprietary counterparts, then they may want to listen to the jerks' requests, too.
On the other hand, if FLOSS developers really want to steal users from their proprietary counterparts, then they may want to listen to the jerks' requests, too.
See, I don't think you can make blanket statements like that for either FLOSS or Closed developers. Some FLOSS folks are very good at listening to and understanding their audiences. Apache, FireFox, come to mind, and there's success with that. A tier down, you have folks that essentially use the FLOSS as a way to build a consultancy, indeed, FLOSS is essentially consultants sharing common work product to save everyone money.
This is my sig.
I keep running into library choice paralysis, and lots of troubles trying to hook to them. Which libraries are "best" for a GUI app? KDE (Qt), Gnome, FLTK, Fox, Motif or LessTif, OpenGL, DirectX, OGRE, or $DIETY forbid, xlib? What do all these libraries do, what are their specialties, why should I choose one over another? Merely documenting the functions may not be enough. I hate the nagging feeling that I missed a whole category of specialized libraries better suited to what I want. For instance, there are many mathematical libraries written in Fortran. Wikipedia is not bad for getting a general idea of what's out there and what they are, but it doesn't help for avoiding difficulties of this sort: I wondered how smart OpenGL was about painting scenes. Could you just tell it to draw everything and it would skip all the pieces hidden behind others? As it turns out, no! It will draw the scene correctly, but very slowly because it isn't smart about wasting time on hidden parts. You have to hack up an algorithm yourself, not lean on OpenGL, or hunt around for another library to handle scenes, something like this OGRE. And OGRE is quite large and complicated, forcing you to learn a lot of preliminaries before you can try it out. Hacking up your own algorithm is all very well, but having seen the layer upon layer of improvements that go into a good library implementation, I have to conclude that anymore, you shouldn't go down that route if there's another choice. Don't write your own Quicksort, use the library one. Your little hastily coded implementation is not going to have such improvements as the hybrid sort where it switches to Bubblesort at 6 or fewer items because on that small a number Bubblesort is faster, the picking out of 3 random items and taking the middle one for the pivot or perhaps an even better selection method, handling of equality with dispatch (textbook implementations of Quicksort simpify the explanation by arbitrarily throwing equality in with one of the other groups of greater than or less than), and I don't know what else.
So having seen the wisdom of reusing code, you run straight into a big problem: linking. Too many libraries are too tightly tied to a language. Thanks to UNIX being created in C, we've evolved a defacto standard around the C way of linking, but it has a lot of limitations. Yes, there's ELF, but ELF isn't enough. For instance, if for some reason you don't have the header files, it can be extremely difficult to figure out how to link to a library. Have to reverse engineer it, or more like, forget it. Tools like nm and ar help, but they can only tell you what is there, and there's a whole lot of information that gets tossed. Well, you wouldn't want to bloat libraries up even more with debugging symbols and the like either. Even with the header files, things aren't easy. Can have lots of fun trying to use a 32bit library on a 64bit system. Then there's C++ and the nasty name mangling they introduced to support function overloading.
If you determine something like that the best libraries for your purposes are a few C libraries, but the best language is something like Perl or Haskell or Scheme (LISP), you may spend more time trying to link them than use them. Many Perl libraries are just wrappers around C libraries, and if the particular C library you want doesn't have a wrapper, you can spend (more like waste) lots of time figuring out how to make the wrapper yourself, and who wants to do that when what you really want to do is concentrate on your cool idea? Or you can try the very painful process of linking Perl code directly to C functions. Perl 6, whenever it is ready, is supposed to alleviate this problem for Perl. Or, you could go the route of using C, and lean on yet more libraries like PCRE to do 4th generation things available natively in a language like Perl, or haul out the STL of C++. For many languages, this problem has been worked around somewhat by making C the lowest common denominator. Older languages such as Fortran can
Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
No. What I am saying is simple. If you use FOSS you win. The ability to fork works in your favor even if you never write a lick of code or contribute in any way , because even if you don't fork others can and often do.
You can contribute without paying money or writing code, simply by feeding back and understanding that your feedback is valued, but is not an edict.
You don't win every time but you win fairly often, as opposed to the proprietarty scenario where you win almost never. When do you think Microsoft ever listened to its users beyond the point where they determined they could make money regardless if they listened ot not? Why do you think they don't listen about security? When is the last time you saw a FOSS project announce that the next version would support X only to discover that it was just marketing and they lied again?
As I said, you really don't get FOSS at all. We have no desire to "steal users" from proprietary vendors. That statement makes absolutely no sense in a FOSS context. When we encourage people to adopt FOSS it is because we are looking out for their best interest. We would like to share. Sometimes the typical user is like a child who won't try guacamole because it looks "yucky" and is different. Occaisonally , the person doesn't like the guacamole after a sincere effort and trying different restaraunts, and that is fine. Most times though, they don't like the first bite at the first restaraunt and announce to the world that guacamole isn't that great and people who like it need to learn from a shit-vendor how to make guacamole ;-)
I'm certainly not saying FOSS is perfect, or that people are there to solve your every desire at your whim. Microsoft doesn't do that after getting paid shitloads of money from their user base. We do it much more often, usually without expecting or receiving much - if any -money at all.
Finally, I note that you didn't share your first hand experience even after I requested it. Should I infer that you have none?
Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
Yes command lines have their place, in the closet with the rest of the tools that hardly need to get used. Get over this command line thing guys, actually JOIN the 21st century. There is plenty of typing to do without having to resort to arcane paroxysms of too short commands because the Unix weenies that made them up wanted them to be as short as possible to dispense with excess typing and didn't care how obscure the references were. There that was a whole run on sentence with way too many characters.
Why bother
IDA Pro which is a interactive disassembler has no FLOSS equivalent. objdump -xd just isn't the same.
http://en.wikipedia.org/wiki/Interactive_Disassembler
Finally, I note that you didn't share your first hand experience even after I requested it. Should I infer that you have none?
You should infer that I'm trying to avoid arguing pointlessly with people who won't listen.
See, you think you're being funny, and then somebody goes and calls your bluff. (The author was an old college buddy of mine. Had a server in his dorm room, so we had some fun one time redirecting stuff to its /dev/audio in the middle of the night...)
Right. I won't listen to you claim that forking only helps if you have resources and time to code. I won't listen to that because the entire FOSS world is based on that ability, and many, many, many people have leveraged that ability for you. You didn't have to do a thing except recognize that, choose from the thousands of free solutions out there, and take advantage of that. There is nothing to listen to, because what you claimed is absurd. Here is just one of thousands of places you will see direct evidence of the advantage of that for all people who are smart enough to recognize the advantage.
;-)
Furthermore, even if you continue to use Windows you still get the advantage, because Microsoft has recognized that they can't get away with as much with Linux in the picture. Your claim is ridiculous bullshit that ignores the obvious.
Here is a hint for future reference: If you want people to listen, actually have something valid to say.
Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
multi-threaded python, please, with a real garbage collector. (no, not jython or ironpython--too many C modules)
kthxbye
what more do FLOSS developers need from existing development tools?
Nothing, IMO. I have for years worked with only: xterm, vi, compiler, make. I am surrounded by good programmers, who use IDEs, mostly Visual Studio, but also Eclipse; I am still at least as productive as everybody else, and don't even spend as much time debugging. Am I genius? Of course not. The truth is that using an IDE doesn't actually make that much of a difference; whether people use it is no more than a matter of personal taste.
I finally gave in when after ages trying I finally discovered that you *can't* use our version of VS over multiple monitors.
I haven't had any problem using the last few versions of VS on multiple monitors, FWIW.
* An editor - vim
* A build tool : make
* A Compiler : gcc
Is there anything else I really should be using?
Anyone that claims either vi or emacs is a useful editor hasn't used a modern Windows IDE. Just the amount of context aware help that is available about the platform is amazing.
That just shows that you haven't used a version of Emacs since the GNU - Lucid split. Lets see - I have language aware parsing (including context-aware tooltips) and completion (ala intellisense), automatic indexes into each file, class browser, helper wizards, version control awareness and integration, fully programmable interaction with the editing buffer to cope with work-specific stuff, electric expansion (and fully modifiable expansion tables), dynamic completion and the ability to work seamlessly with remote files.
And that doesn't touch on all the other features that I use day-to-day, like highlighting, source code comparison and patching, recursive directory comparison and debugger integration.
Anyway who claims that Emacs isn't a useful editor hasn't learned how to use it.
Cheers,
Toby Haynes
Anything I post is strictly my own thoughts and doesn't necessarily have anything to do with the opinions of IBM.
Someone says they prefer stepping through their user-land code, and you reply by saying that kernel level debugging is hard? Most software is userland, most debugging is userland.
Truly, there is no substitute for watching each branch happen to understand exactly why the application behaves a certain way. Static analysis is even harder when multiple classes and inheritance are involved, polymorphism makes it a whole different thing. It's easier for me to learn source code by putting a breakpoint on whtever I'm looking at, and running to that, then stepping out to see how I got there.
I don't care what happens to the kernel during that time, most people don't.
Humm well, I run linux so if I wanted to test it properly I'd have to use the IE6 emacs plugin....
Seriously. You don't need anything more.
You don't need anything more.
Use these -first- to get the design at least partially congealed in your mind. Only when you have a clear idea what it's supposed to do, and what it's supposed to look like, should you move ahead into code.