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)
They need a set of fake teeth and simulated plaque
-- major power tools, man! Oh, and to get laid! Plus, a lifetime supply of Cheetos and Jolt Cola! (Disclaimer: The order of the above items is subject to the preferences of the individual FLOSS developer. However, getting laid Cheetos dunked in Jolt Cola is not recommended).
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.
crest? colgate? Mouthwash?
Several sets of dentures and a floss waxing machine, for starters. And can we please have some flavors besides "minty fresh?"
What do you use, and how could it be better? FLOSS development works best when you scratch an itch, then - when you learn that others have the same itch, you come up with an ointment.
(am I the new Bad Analogy Guy?)
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.
Get a real kernel debugger INTO the linux kernel. DO it now - I hate having to patch the heck out of my kernel just to see what some module that I am unfamiliar with works. I know I know - Linus doesn't like debuggers. Well, hate to say it but he is wrong. There is no substitute for watching your code run on the platform in real time.
For that matter dbg could use a little update - it is what 30 years old now, getting closer to 40. There are a lot of new things that need to be included.
I have mod points and I am not afraid to use them
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
Unlike "RTFM" and "Fork it if you don't like it", which are synonyms for "F--- Off".
Remember that 99% of the time, this is better than what closed source gives you.
Have a look at accounting systems - what do they do? No one knows. Want to program them? Have to pay for licensing. Want to switch? Costly complex, and more difficult because of baked in rules.
Like, look at how much DOS based stuff there is out there, that people STILL use to run businesses with, in a command window, because, well, the vendor is locked in, and they know they don't have to spend a dime to change.
This is my sig.
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.
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.***
You would attract more developers by writing at least one sentence without "FLOSS".
Now you sound like you're just some PR dude... and no self-respecting developer takes you serious.
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.
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
FLOSS developers need: some idea about how to write software for non-developers, non-developers, non-developers...
I for one need a way to generate income. Because, unfortunately, my: health and auto insurance companies, mortgage company, mechanic, grocery store, electric utility, water company, gas company, doctor, dentist, clothes store (Target for me), phone company, internet - they take only cash: they don't take code as payment.
Support services? Every goddman laid-off techie is now offering computer support services - the market is saturated.
I'd go work at McDonald's but they have plenty of old people working to compensate for the losses on their retirement and the ones that are looking for help only want Spanish speakers.
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
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.
Anyone that claims either vi or emacs is a useful editor hasn't used a modern Windows IDE [...]
I know I know - Linus doesn't like debuggers. Well, hate to say it but he is wrong.
I'll believe this Linus guy when he not only shows that he is just able to write code, but also to manage a multi-million LOC project.
Oh, wait...
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?
As a floss developer, I've found that teeth are a great place to start when developing new floss.
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.
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?"
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.
It would be nice to have an easy to use online translation tool for gettext that would allow users to easily add translation sentences. Launchpad has something like this built-in but a standalone app would be much better IMO.
"FLOSS" sounds like what I use to clean my teeth.
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.
He was really saying "Documenters, Documenters, Documenters, Documenters".
Give some thought to doing excellent documentation.
grumpy
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.
Am I the only one who uses Code::Blocks as an open source, cross platform C++ IDE? Maybe people are looking for an IDE that handles more than C++, but I like it as much if not more than VisualC++!
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.
Uhmm... a girlfriend?
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?
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'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.
That one thing will bring in lots of new students and wanna be
newbies because they need an easy starting place.
That is, draw a windows form, place in some controls,
and have the CODE text editor for the control or window appear when
it is CLICKED !!
Just like VS.
And vice versa: if in the code text for a control, click and pop into the
drawn control so you can change it's properties.
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 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.
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.
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.
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/
A good GUI toolkit. Not /another/ GUI toolkit. A /good/ GUI toolkit.
Microsoft Access-like tool for building rich internet applications on top of a real database.
Thanks.
lol yeah, that VS multiple windows thing drives me crazy. To me it is a perfect example of Microsoft.
They always do a huge complicated thing to solve a simple problem (and they can, because they have the man power). You can't look at two windows of code at the same time? Solve the problem by making intellisense! Really, intellisense wouldn't even be needed if you could have free floating windows in Visual Studio (and you can't do that because of an earlier design mistake in Windows).
By the way, I think you can build stuff from the command line on windows using devenv.exe, although I've never tried it. You might find that useful if you're only using VS for build.
Qxe4
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++.
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.
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"
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
multi-threaded python, please, with a real garbage collector. (no, not jython or ironpython--too many C modules)
kthxbye
I love it 95% of the time, and passionately hate it the other 5%.
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?
Speaking as a UNIX admin - Having DTrace on linux would be really, really nice for those hard to debug performance issues
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.
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.
Documentation for Codelite - it could be a great little IDE but it lacks proper documentation. Bonus points for newbie friendly documentation even, e.g. explaing the use of Ctrl-Space.