Archive

Posts Tagged ‘svn’

The Newest Generation of Hackers

March 2nd, 2010

Note for non-technical readers (not that I expect there to be many). The title of this post includes the word “hacker”. If you think that has anything to do with illegal acts or unethical behavior, you’ve fallen victim to what happens when the mainstream media latches on to a term they don’t understand. The definition of this word is far from negative. Within the geek community, the title “hacker” is the utmost compliment – something like Grand Master in the martial arts, or perhaps whatever title is given to an eminent artist. It both describes someone who is an expert in their field. Or, more generally, someone who enjoys seeking knowledge simply for the sake of knowledge – figuring out how things work, how to make them, and how to make them better. If you’re looking for a term that describes a criminal, “attacker”, “malicious user” or “computer criminal” work fine. While I wouldn’t by any extent consider myself a hacker in the super-genius-wizard sense of the term, I do definitely subscribe to the hacker ethic – the burning need to figure out how things work and make them better.

Thanks to the snow at the end of last week, and a long weekend, I actually got to do some reading that didn’t involve man pages or books strictly about software. I finally finished The Daemon, the Gnu, and the Penguin by Peter H. Salus, a wonderful book (with a great foreword by maddog Hall). I also finally got a chance to start reading The Cathedral & the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary by Eric S. Raymond (ESR). I’m only up to page 50 or so, but it’s an equally good book, and I’ve been looking forward to reading it for years.

I’ve always been very interested in history (heck, I have a minor in it), and specifically the history of my other interests. When photography took up most of my time, I read every photo history book I could get my hands on (including many primary sources on now-archaic techniques). In the past few years, I’ve been amassing books on computing history (specifically ARPANET/the Internet and Unix/Linux/Free software) at a near-alarming rate.

Through all of my reading, two main things have struck me: the utterly amazing feats accomplished by previous generations, and how my own generation takes them for granted. I was born in 1987 which, I feel, makes me part of a very small group who were lucky enough to grow up during the real rise of the Internet. I remember playing simple games on my grandmother’s (business) 386DX long before I could read most of the words on the screen. But I also remember my father dialing in to an ISP (I honestly don’t remember which one) on a 9600 baud serial modem, and how unique that was at the time (at least among kids my age). By 13 or so, I had a 10BaseT network in my house, sharing a 56k dial-up connection between two computers. I feel that I’m part of a short historical period of kids who “grew up” with computers, used them in middle school, are perfectly at home with them, but still remember dial-up, the launch of Windows 98, and ordering Linux on CDs because you just couldn’t get it any other way (too young to have access to the resources of a college, only dial-up).

Anyway, on to my point…

As I read about those who stepped before me (and my generation), those who thought up such amazing ideas as Unix, the Internet, networking and most of the software and protocols we have today, I realize how big their shoes are, and how difficult it will be for the next generation to fill them. Sure, we have Facebook, RSS feeds, Web 2.0 and smartphones, but will we be able to innovate on the level that those who came before us did? And then it strikes me how much we young aspiring hackers take for granted. How many aspects of technology today would be seemed impossible 20 years ago, but we use without a second thought.

The last generation of hackers and programmers were raised on software distribution tapes. Their idea of “open” was formed by what they were used to – a Cathedral development model, with regular releases (production, perhaps beta, perhaps even less) and accompanying source code. However, in the pre-Internet days, they were still bound by physical media. They were still bound to the Cathedral development model, to a small and tight-knit group of sages determining when the world was ready to see the fruits of their labor.

The current generation – those of us just out of college or grad school, or even younger – think of Linux as the quintessential open source project. For those of us who came into computing when Linux was already around (I first ran Linux in 2001 when, at 14, I bought the newly-released CD set of SuSE 7.3), Linux sets the bar. It’s what we were raised on (at least in terms of open source). Fixed releases – even with source – seem antiquated, pre-Internet, our fathers’ open source. To us, open means nightly builds, world-readable ticket/bug trackers, anonymous Git or SVN access, and RSS feeds of every commit. It means being able to see every line of code at every moment in time, even if we’ve never e-mailed one of the developers.

Even just a few years ago, the word “open” was used by vendors to mean almost anything – everything from software based on Linux, to software that included source (regardless of the license) to software that just used (patent encumbered) documented protocols or formats. For the next generation, even the generation entering the workforce now, open means much more. It means transparency in development, in code, in documentation, in management.

Many times, I’ve found an “open” software project, and searched their web site endlessly looking for links to Git or SVN or CVS. Or looked endlessly for the (internal) bug tracker. Every time, I had to remind myself that the world, even many of the open source projects, are still far behind my expectations. Even Google’s Android Open Source project only has code merged in periodically from the production (closed) tree, and maintains a separate bug tracker. Far from my expectation of just having some parts of the tree unavailable on the Internet, and some classes of bugs filtered out from public view.

Nobody – not even Microsoft – can deny that the world is moving more and more to open source. It’s already the de-facto standard on the Internet, but it’s moving more and more to the desktop every day. And, as this happens, the expectations of what open means (increasingly more transparent than just “open”) are also increasing. The software world – both proprietary and open source – will have to keep up. And, hopefully, as the generation raised on the Internet begins to fill the ranks of geeks in the workforce, we’ll see more and more open source usage.

As a side note, I’d be very interested to see how open source use compares to demographics. I know that Linux use (on student-owned computers) at most colleges is way above the global average, and the same goes for Firefox.

History , , , ,

Subversion ‘is missing or not locked’ error

January 29th, 2010

Recently I was doing some work on a few PHP scripts, and came by a rather annoying error while trying to commit to subversion:

svn: Commit failed (details follow):
svn: Working copy '/srv/www/htdocs/newcall/stats/generated' is missing or not locked

The problem was a directory, “generated”. This particular app makes use of libchart to draw simple charts in PHP. Libchart writes the charts to files, and therefore needs a directory writable by the Apache user. So, I created the generated/ directory for these output files, and chowned wwwrun:www. Now, apparently, the subversion svn add command doesn’t check ownership/writable permissions before adding a directory. So, it added generated/ to the main list of files, but couldn’t write the .svn directory and add a lock. IMHO, this is an error in the svn client.

I couldn’t find any solutions to the problem online. Essentially, I have an empty directory (or at least nothing useful in it) that got partially added to svn – it was added to the .svn/entries file in the parent directory, but never had its own .svn directory created.

The only solution that I found is to manually edit the .svn/entries file in the parent directory. WARNING: this isn’t for the faint of heart. Be sure you don’t screw anything up.

  1. Open the .svn/entries file in the parent directory in a text editor (i.e. if the problem directory is stats/generated, edit stats/.svn/entries
  2. Find the entry node with the correct “name” attribute for the directory in question. For stats/generated, in the stats/.svn/entries file, it should look like:
    <entry
       name="generated"
       kind="dir"
       schedule="add"/>
  3. Make the entries file writable (chmod u+w entries)
  4. Remove the entry from the file.
  5. Set the entries file back to non-writable (chmod u-w entries)
  6. Remove any save files if they were created (i.e. entries~ for emacs)
  7. Remove the directory itself and re-create it, this time adding to svn before setting the ownership.
  8. Commit. It should now work.

Tech HowTos , ,