Slashdot Mirror


ISC Releases the First Look At BIND 10

Ethanol writes "Internet Systems Consortium, producers of BIND 9 (the most popular DNS implementation on the internet), have spent the past year working on a successor, BIND 10. It's entirely new code, redesigned and rewritten from the ground up, and now the first glimpse of what it will eventually look like has been released. 'This code is not intended for general use, and is known to be inefficient, difficult to work with, and riddled with bugs. These problems will all be fixed over the next couple of years, as functionality is added and refined, and the software matures. However, the codebase has a good framework for moving forward, and the software is capable of serving as a DNS server with significant functionality.' (Full disclosure: I work for ISC and I'm one of the engineers on the project.)"

172 comments

  1. How by Anonymous Coward · · Score: 0, Interesting

    Is that pronounced? Does it rhyme with sinned or blind ?

    1. Re:How by Ethanol · · Score: 4, Funny

      Is that pronounced? Does it rhyme with sinned or blind ?

      Wined and dined.

    2. Re:How by Anonymous Coward · · Score: 0

      It's not short for "Binderjit Singh" so you should pronounce it as the word "bind" which only has one pronunciation.

    3. Re:How by jonaskoelker · · Score: 1

      Does it rhyme with sinned or blind ?

      Wined and dined.

      You winned!

  2. Excellent by NEDHead · · Score: 1, Funny

    Slow, buggy, hard to work with, but we'll fix it later. And not Microsoft?

    1. Re:Excellent by rubycodez · · Score: 3, Insightful

      nope, Microsoft has the audacity to claim their bloated buggy crap is suitable for general use.

    2. Re:Excellent by Anonymous Coward · · Score: 0

      MS Office is the best DNS server ever!

    3. Re:Excellent by choongiri · · Score: 2, Funny

      MS Office is the best DNS server ever!

      You appear to be confused. DNS stands for Domain Name System, not Does Nothing Satisfactorily.

  3. Great. Just what the DNS infrastructure needs by man_of_mr_e · · Score: 1, Insightful

    So we're throwing away all the code that has matured and spend a decade being looked at, and starting over with new buggy code that will be riddled with security vulnerabilities.

    Nice.

  4. DJB? by Gothmolly · · Score: 0, Troll

    No djb tag?

    --
    I want to delete my account but Slashdot doesn't allow it.
  5. Why? by nitehorse · · Score: 1, Flamebait

    Why would they even release it if their ground-up rewrite is so pathetic? Were they worried that BIND might be losing its rich reputation as the worst piece of widely-used network software ever made? If so, bravo, guys.

    1. Re:Why? by NEDHead · · Score: 0

      Bonuses based on meeting a release date? Or perhaps the poster is just too dim to actually mention any of the virtues of this new approach.

    2. Re:Why? by sith · · Score: 1

      worst piece of widely-used network software ever made

      uhh, sendmail?

    3. Re:Why? by nitehorse · · Score: 1

      A fair point, but aren't there are a larger percentage of mailservers running !sendmail than there are DNS servers running !BIND at this point?

      I hope I'm wrong.

    4. Re:Why? by Ethanol · · Score: 2, Informative

      Why would they even release it if their ground-up rewrite is so pathetic?

      'Cause it's open source software, emphasis on "open". It won't be done for another couple of years, but you can look at the work in progress. You can even help write it if you want.

    5. Re:Why? by Anonymous Coward · · Score: 0

      I hope you're !right.

    6. Re:Why? by h4rr4r · · Score: 0, Flamebait

      What's wrong with sendmail?
      Too hard for you, no gui?

    7. Re:Why? by deniable · · Score: 1

      Sendmail had so many holes, qmail was a good alternative. Thankfully, I've since been able to replace both.

    8. Re:Why? by WMD_88 · · Score: 1

      I'm having trouble finding recent numbers, but Sendmail was at 42% and falling in 2001, and possibly at 27% in 2008. BIND had around 70% in 2004. So, yeah, BIND is used way more than Sendmail.

    9. Re:Why? by Anonymous Coward · · Score: 0

      release early release often

    10. Re:Why? by shani · · Score: 1

      Basically, someone once wrote a convincing text which says: Release Early, Release Often.

      It's a release in the sense that we wanted to make it widely available for people to see what ideas we are playing with, and to get feedback and participation.

      [ disclaimer - I am the BIND 10 project manager ]

  6. Re:Great. Just what the DNS infrastructure needs by FooAtWFU · · Score: 4, Insightful

    Yes. As opposed to hacking any new functionality that's needed into all that existing cruft and introducing subtle, hard-to-understand bugs and security vulnerabilities. Which is the trade-off, after all.

    (We don't have to stop all development on anything new in the future ever just because we have one mature codebase. It's not like we're all deploying the stuff tomorrow.)

    --
    The World Wide Web is dying. Soon, we shall have only the Internet.
  7. Difficult to work with? by brunoacf · · Score: 1

    This code is not intended for general use, and is known to be inefficient, difficult to work with, and riddled with bugs

    Inefficiency and bugs are common characteristics of alpha/beta code. But what do you mean when you say "difficult to work with"? A code that is difficult to understand/maintain/evolve?

    1. Re:Difficult to work with? by Ethanol · · Score: 4, Informative

      But what do you mean when you say "difficult to work with"? A code that is difficult to understand/maintain/evolve?

      I sure hope not, as those are all specific design goals for the project (and they're among the failings of BIND 9 that made us want to redesign it in the first place). I meant "difficult to use" -- the user interface basically doesn't exist yet.

    2. Re:Difficult to work with? by h4rr4r · · Score: 1

      What is wrong with the BIND user interface?
      You edit a few simple test based config files, is that really so hard?

    3. Re:Difficult to work with? by shani · · Score: 1

      The existing BIND 9 mechanism are not hard for your small domains that change rarely, but they don't work if you have tens or hundreds of thousands of domains that you manage, which change on a frequent basis. While this may not be interesting for you, there are many organizations for who this is a daily reality, and BIND 9 doesn't work well for them.

      There are also organizations that have existing provisioning systems for large deployments, and would like their DNS to be better integrated... something today that usually means running Windows Active Directory or similar proprietary solutions.

      There are also people running clusters of DNS servers, for increased performance, reduced network latency, and hardware redundancy. Managing "a few simple test [sic] based config files" across tens of computers distributed around the globe is a non-trivial task.

      BIND 10 will continue to support text files for people who are comfortable with that, but will also have better mechanisms for people who prefer more modern ways.

      [ disclaimer - I'm the BIND 10 project manager ]

    4. Re:Difficult to work with? by Hurricane78 · · Score: 1

      I meant "difficult to use" -- the user interface basically doesn't exist yet.

      You mean it doesn’t offer you a retarded point-and-click interface?
      That’s not a bug. It’s a feature. So people like you don’t touch it.

      BIND has a pleasing interface based on text files. Just like any other professional server software.

      --
      Any sufficiently advanced intelligence is indistinguishable from stupidity.
    5. Re:Difficult to work with? by Anonymous Coward · · Score: 0

      Whole TLDs have gone offline because of a single typo in these "easy to edit" files.

    6. Re:Difficult to work with? by Kent+Recal · · Score: 1

      The existing BIND 9 mechanism are not hard for your small domains that change rarely, but they don't work if you have tens or hundreds of thousands of domains that you manage, which change on a frequent basis

      Only problematic if you are doing it with AXFR. Nobody in their right mind uses AXFR, right?

      and would like their DNS to be better integrated... something today that usually means running Windows Active Directory or similar proprietary solutions.

      So you're planning to design a piece of internet backbone software to interoperate with... Active Directory.

      Managing "a few simple test [sic] based config files" across tens of computers distributed around the globe is a non-trivial task.

      Reading your comments here is giving me serious chills. Yes, managing said config files (ideally only *one* config file) is as trivial as it can even get. We have rsync, scp and a variety of insanely powerful version control systems to aid with that. We have entire operating systems with mature toolchains built around the notion of dealing with text files and streams.

      DJB has even demonstrated what a half-sane config file format for a nameserver can look like (hint: nothing like the bind zone-files).

      We can trivially generate these files from any data-source (yes, even ActiveDirectory) and, if a sane format was chosen, we can also diff them and easily build middlewares to sync both ways with *any* kind of directory service or database desired.

      Sorry if this comes across personal, but have you considered outsourcing this entire project to google? Like them or not, they definitely have more competent engineering muscle for a project of this magnitude - and will likely take on the issue anyways after, or even before, Bind10 has flopped.

    7. Re:Difficult to work with? by Anonymous Coward · · Score: 0

      Is because the "retarded" point-and-click interface that Windows is a market leader and Linux (and variants) can will never become a decent desktop. I agree the BIND do not need a GUI, but think twice on this if you like to create a usefull desktop application.

  8. DJB might agree by bugs2squash · · Score: 4, Insightful

    This code is not intended for general use, and is known to be inefficient, difficult to work with, and riddled with bugs Could apply to any version of BIND

    --
    Nullius in verba
    1. Re:DJB might agree by Vellmont · · Score: 2, Informative

      Right, much better to write code under some bizarre license, ignore it for years forcing people to distribute patches unto patches, then 6 years later finally realize you're not maintaining the code and never will and finally release it under a sane persons license.

      --
      AccountKiller
    2. Re:DJB might agree by Anonymous Coward · · Score: 0

      I would much have something under a "bizarre" (huh? Please describe) license than the buggy piece of crap BINDs

    3. Re:DJB might agree by Vellmont · · Score: 2, Informative


      (huh? Please describe)

      He distributed source code, but didn't allow anyone to modify it. Thus why people distributed a series of patches to the software. People have some strange hero worship of Bernstein, but don't understand that an author who abandons his code but doesn't allow anyone else to modify it isn't deserving of much respect.

      (Oh, and there are other free, open source alternatives to BIND, so saying both programs suck in different ways and better alternatives exist is perfectly valid)

      --
      AccountKiller
    4. Re:DJB might agree by Anonymous Coward · · Score: 0

      Queue the angry DJB fans! DJB's DNS is even an inferior project to his QMail which atleast hast some merit.

      DJB's my-way-of-the-highway methodology just doesn't work in any serious (i.e. not your SOHO business or academia) network.

    5. Re:DJB might agree by Anonymous Coward · · Score: 0

      Ah, but any version of Bind has the advantage that it's not encumbered by DJB.

    6. Re:DJB might agree by Angst+Badger · · Score: 1

      Could apply to any version of BIND.

      That was my first thought, having given up on BIND years ago in favor of the vastly more efficient, user-friendly, and -- most importantly -- bug free djbdns.

      After all this time, the best they can do is something they themselves admit is crap, and they plan to take years to make it less crappy? That's really stunning, and not in a good way. We are, after all, talking about a key/value store. Thank goodness they didn't try something that wasn't appallingly well-understood already.

      --
      Proud member of the Weirdo-American community.
    7. Re:DJB might agree by Anonymous Coward · · Score: 0

      It's great isn't it? DJB had no clue how to release and distribute software; the bind guys had no clue how to write it. And we wonder why the domain name system is so unappealing to work on and attracts so few decent developers, leading to stunningly mediocre design like dnssec.

    8. Re:DJB might agree by Anonymous Coward · · Score: 0

      OpenBSD?

    9. Re:DJB might agree by Ant+P. · · Score: 1

      What definition of "bug free" are you using there? Is it the one where DJB pretends bugs don't exist for years by handwaving them as user error? And how is a piece of software user-friendly or efficient when you have to install the author's NIH-syndrome init and xinetd replacements just to use it?

    10. Re:DJB might agree by Anonymous Coward · · Score: 0

      That really bothers me. This just sounds like Fred Brooks' Second System Effect to the 9th generation.

      By now they should have the core concepts down to a science and be able to drop in various experimental components until they have what they want.

      Bugs around the edges is pretty much inevitable. "Riddled with bugs" I think not.

    11. Re:DJB might agree by Otterley · · Score: 1

      I'm sorry, which version of xinetd and init tracks both the daemon and its logger daemon as a unit and ensures they are always piped together?

    12. Re:DJB might agree by MikeBabcock · · Score: 1

      Have you found a DNS program that works faster and is more stable and secure than the current version of tinydns yet? Just curious.

      Dan's very possessive of his software, like most people who write 99% of their own code, and doesn't believe in modern Copyright (thus the unofficial open source status of his software), but he does write very good code, and its in use by a lot of people for that reason.

      --
      - Michael T. Babcock (Yes, I blog)
    13. Re:DJB might agree by Kent+Recal · · Score: 1

      Is it the one where DJB pretends bugs don't exist for years by handwaving them as user error?

      Do you have a citation for that?

      I know of exactly one DJBDNS bug:
      djbdns<=1.05 lets AXFRed subdomains overwrite domains

      Afaik that bug was acknowledged (and paid for) rather quickly.
      As a happy djbdns user I'd be curious to learn about other bugs that I've missed?

    14. Re:DJB might agree by Anonymous Coward · · Score: 0

      ISC never learns. It's in their interest. Complexity and bugs means constant support contracts, means money. If ISC wrote small, secure software like djbdns they wouldn't be able to make money on support contracts.

      Also we now have

      http://www.nlnetlabs.nl/projects/nsd/

      We don't need this BIND garbage when we have djbdns and nsd. nsd is already imported into OpenBSD and will likely replace BIND. Same goes for Sendmail. These two monstrosities - BIND and Sendmail have been shaming UNIX for ever. Don't forget ISC's excellent DHCP crap either.

  9. Re:Great. Just what the DNS infrastructure needs by loxosceles · · Score: 1, Flamebait

    Seriously. "Riddled with bugs"? The implication is that nobody at ISC knows how to write good software. Not really surprising. Bind 4 was a mess. Bind 8 was a mess. Bind 9 was a mess.

    "Insanity: doing the same thing over and over again and expecting different results." (Einstein)

    They need to start over using sane software design methodology. That probably means hiring competent software engineers.

  10. Security by Anonymous Coward · · Score: 0

    BIND was the joke of the security conscious community for over a decade. I look forward to their new code. Maybe we can return to the good old days.

  11. Difficult to work with by tpstigers · · Score: 0

    'This code is not intended for general use, and is known to be inefficient, difficult to work with, and riddled with bugs.' Why does this statement make me so happy?

  12. how many times are they going to rewrite it? by mlong · · Score: 1

    I thought bind 9 was a rewrite from scratch? They did such a crappy job, they have to do it again for 10?

    --
    //m
    1. Re:how many times are they going to rewrite it? by Daniel_Staal · · Score: 1

      I thought bind 9 was a rewrite from scratch? They did such a crappy job, they have to do it again for 10?

      Yes.

      Next question?

      --
      'Sensible' is a curse word.
  13. Re:Great. Just what the DNS infrastructure needs by bipbop · · Score: 1

    Simply: I wonder what they find so hard about writing tests.

  14. Re:Great. Just what the DNS infrastructure needs by larkost · · Score: 4, Insightful

    Tests are great for finding bug/problems you have already thought about. They are great for making sure that you don't make the same mistake again. However they don't reliably cover things you have not yet thought about. It is also really hard to write tests that cover complicated network interaction... and that is percicely what Bind must do.

  15. BIND GIGO/SOS, = 1 by Anonymous Coward · · Score: 0

    How's the old, GIGO phrase go....
    So if you start with the same old stuff in (BIND symantics/syntax), use some "new" code to processes it, and you expect the post dump analysis to be different irrespective of how much the code is rewritten to generate the S.O.S?

  16. Re:Great. Just what the DNS infrastructure needs by Anonymous Coward · · Score: 2, Insightful

    This is why you hire information/computer security researchers (or researchers in general, but security people have a tendency to think "how can I break this" as opposed to "this should work and let's all play nice") and have them review and validate your design and your code. You discuss your assumptions with them, and make sure they are sane (or can at least be enforced, i.e. buffer sizes). This is one of the most critical pieces of software that humanity will rely on for a few more decades, I think we should put some real effort into it, as opposed to an ad-hoc throw code at the wall and see what sticks.

  17. Re:Great. Just what the DNS infrastructure needs by Ethanol · · Score: 5, Informative

    We wrote lots of tests. (How else would we know it has bugs in it?) This is a somewhat fair criticism of BIND 9, but read the link before you assume we didn't learn any lessons from the past. The unit tests are included in the tarball and coverage results are viewable online.

  18. djbdns users register here by Onymous+Coward · · Score: 1

    Yes, yes, we realize djbdns is far more secure. And that DJB is ornery.

    Instead of peppering the whole forum with "djbdns is great", just respond to this thread.

    Frist!

    1. Re:djbdns users register here by Anonymous Coward · · Score: 0

      Yeah, don't think so Onymous Coward

    2. Re:djbdns users register here by Onymous+Coward · · Score: 1

      I was thinking "::crickets chirping::", but ... your version is a bit more, uh, colorful.

  19. What's the point of a rewrite... by marciot · · Score: 1

    ...if you're doing it to end up with new code that is "inefficient, difficult to work with, and riddled with bugs"?

    Was the original code too efficient, well-commented and well-tested and they couldn't live with that?

    1. Re:What's the point of a rewrite... by Tackhead · · Score: 2, Funny

      What's the point of a rewrite...

      ...if you're doing it to end up with new code that is "inefficient, difficult to work with, and riddled with bugs"?

      Why, backwards-compatibility with BIND 8 and 9, of course!

    2. Re:What's the point of a rewrite... by TheDarkMaster · · Score: 1

      I agree. Why make a new code from scratch, if the result is again difficult to use, incomplete and full of bugs? It makes no sense to me. Even in a beta state, the new code should be better than the previous one to justify its development.

      --
      Religion: The greatest weapon of mass destruction of all time
  20. A Monument to "Software Engineering" by phoebe · · Score: 1

    BIND is thirty years old and a core piece of Internet infrastructure. That a completely new design and re-write of such a fundamentally important piece of software is "inefficient, difficult to work with, and riddled with bugs" highlights the continuing immaturity of the computer software industry.

    This should be an embarrassment to every software designer, Google, IBM, and Microsoft should be screaming out how this is making the entire industry look bad.

    Wouldn't this be an ideal target for test driven development, or are we to praise that at least they aware of defects?

    1. Re:A Monument to "Software Engineering" by PCM2 · · Score: 4, Insightful

      BIND is thirty years old and a core piece of Internet infrastructure.

      Actually, BIND 9 -- "the most popular DNS implementation on the Internet," according to the submitter -- is merely 10 years old, and was itself a major rewrite of BIND 8. BIND 8 was only declared "end of life" in 2007.

      That a completely new design and re-write of such a fundamentally important piece of software is "inefficient, difficult to work with, and riddled with bugs" highlights the continuing immaturity of the computer software industry.

      Really. So the fact that a software developer plans to take "the next couple of years" (again, re: the submitter) to complete a software project is symptomatic of the total failure of an entire industry. Interesting perspective. Thanks for that.

      --
      Breakfast served all day!
    2. Re:A Monument to "Software Engineering" by GiovanniZero · · Score: 1

      Mod Parent up. Seriously, they're basically in alpha here and are opening up for help from the community. They're obviously testing their code like crazy, that's how they know their issues. Why is everyone pissed that a bunch of developers are giving their time to develop a free project that is going to make the internet more reliable and safe in the end. Too many armchair developers in here. "Years! I could rewrite Bind in my sleep with one arm tied behind my back!"

      --
      Mod me up, mod me down, do your worst you modding clown.
    3. Re:A Monument to "Software Engineering" by Anonymous Coward · · Score: 0

      ...while masturbating

    4. Re:A Monument to "Software Engineering" by phoebe · · Score: 1

      Really. So the fact that a software developer plans to take "the next couple of years" (again, re: the submitter) to complete a software project is symptomatic of the total failure of an entire industry. Interesting perspective. Thanks for that.

      Are you really defending the current development shortcomings of BIND 10 with the article author's inability to elucidate software engineering? Not at all continuing another symptomatic issue of the software industry.

    5. Re:A Monument to "Software Engineering" by dkf · · Score: 1

      Wouldn't this be an ideal target for test driven development

      Depends on the difficulty of running meaningful tests. Moreover, testing an application architecture is rather more difficult than testing individual units that plug into such an architecture. (One of the goals of an architecture ought to be that it allows the testing of modules plugged into it without doing a full run of the whole mess, i.e., that it enables TDD. Getting to that stage isn't trivial; if you think it is, that's probably because you've never tried writing one for real, and have just been leveraging someone else's architecture.)

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
  21. Not in a rush for bind10 by Teunis · · Score: 1

    I'm not in a rush for bind10 - I find bind9 to be quite sufficient, on the whole. I do look forward to seeing what it brings and how it may make my life with the systems I manage much easier. This does look interesting though!

  22. Does not look great, honestly. by Cyberax · · Score: 1

    So instead of 1 daemon I'll now get 3-4 running daemons interacting in strange ways? Thanks, that's exactly what I need.

    How about scriptability and/or custom resolvers? Nope, none of this.

    Oh well, probably I should switch to DJBDns. It also uses a ton of daemons, but at least it's architectured properly.

    1. Re:Does not look great, honestly. by sateh · · Score: 1

      PowerDNS does scripting.

      You can write DNS logic in Lua. You can use it to write backend that capture spelling mistakes, do redirection, catch and act on NXDOMAINS, etc.

      Thanks to the Lua/scripting support, a lot of companies are replacing their legacy commercial Nominum servers/licenses with PowerDNS. I performs same or better on simple modern hardware while not costing a truckload of dollars.

  23. Re:Great. Just what the DNS infrastructure needs by Eil · · Score: 1

    If everyone subscribed to that logic, we would not have Postfix, Firefox, lighttpd, or any other number of important open source Internet software projects.

  24. Again? by biot · · Score: 1

    They rewrote it from the ground up *again*? Clearly the last few times they did that didn't help. Why should this time be any different?

  25. Re:Great. Just what the DNS infrastructure needs by man_of_mr_e · · Score: 1

    both Firefox and lighttpd started out as very small subsets of larger tools, focusing on small code and a lower number of features. From the sound of BIND 10, it sounds like they're shooting for the universe.

    Also, Postfix wasn't a rewrite of existing code.

  26. Re:Great. Just what the DNS infrastructure needs by man_of_mr_e · · Score: 1

    In my opinion, if you're going to start over, you start a new project. You start small, and you build a solid base of code. You don't get something that the authors admit is "riddled with bugs"

  27. That's "designed" by XanC · · Score: 1

    "Architecture" is a noun. "Design" is a verb (or a noun). There's no "architectured".

    1. Re:That's "designed" by salesgeek · · Score: 1

      We've just witnessed the birth of a new buzz word.

      --
      -- $G
    2. Re:That's "designed" by brusk · · Score: 1

      The OED begs to differ. It has an entry for "architecture" as a verb, and quotes some major English writers as sources.

      To design as architect.

      a1821 KEATS Fingal's Cave (D.) This was architectur'd thus By the great Oceanus. 1893 Strand Mag. VI. 268/1 The house..was architectured by John Belcher from plans by its owner. 1939 AUDEN & ISHERWOOD Journey to War 120 The slope has been architectured into terraces.

      --
      .sig withheld by request
    3. Re:That's "designed" by Anonymous Coward · · Score: 0

      "Architect" has been in use as a verb since the 17th century. "Architectured" is nonsense but "architected" isn't.

    4. Re:That's "designed" by kybred · · Score: 1

      "Architecture" is a noun. "Design" is a verb (or a noun). There's no "architectured".

      I thought any noun could be verbed.

    5. Re:That's "designed" by Anonymous Coward · · Score: 0

      Well her verbed it. As Calivin once said: "verbing weirds language".

      Not wronging anything!

    6. Re:That's "designed" by Anonymous Coward · · Score: 0

      There is, however, architected, which, considering we're being pedantic and correcting someone's word usage on /., would have been much more apropos. Although, considering that this is /., perhaps you should truly be modded down for picking a word that was not off-topic enough, despite your correction being plenty off-topic. Regardless, he chose a made up word, and you're right about that; you corrected him with a silly choice which makes me think you design far more often than you architect, which means I'm an especially heinous /. user for feeding a grammar troll who's not even a member of the target audience, and as an AC no less! May the /. gods forgive me.

  28. Re:Great. Just what the DNS infrastructure needs by man_of_mr_e · · Score: 1

    It responds with an IP address given a name.

    How exactly is that "complicated network interaction"?

    Yes, yes.. i know, we have Dynamic updates, DNSSec, etc.. now.. but come on, how hard is it to get the basics solid, then move on to the rest?

  29. Re:Great. Just what the DNS infrastructure needs by Anonymous Coward · · Score: 0

    relax, it happens sometimes: for example when a major version is created...have you ever heard the term "alpha code"?

  30. Re:Great. Just what the DNS infrastructure needs by Anonymous Coward · · Score: 0

    Turned you down, did they?

  31. Re:Great. Just what the DNS infrastructure needs by TheRealMindChild · · Score: 1

    "matured" indeed. bind is known for carrying plentiful amounts of exploits to the point of MS Exchange/IE. It's coders must be basement dwellers because by now they should know how to create and follow a process.

    --

    "When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
  32. What's so hard about this? by Animats · · Score: 1

    Most of the trouble with BIND stems from the fact that it's a database app with its own database implementation. BIND10 uses SQLite, which already works. That ought to simplify the thing enormously.

    Building in a web server for BIND administration is probably the source of much of the complexity.

    1. Re:What's so hard about this? by flyingfsck · · Score: 1

      It would be good if it allowed the use of a generic back-end. I do not want to administer a system with multiple SQl database systems. I want to standardise on one and use it for all my server data needs. The days of using different databses for email, DNS, authentication, web applications and more should by now be a thing of the past.

      --
      Excuse me, but please get off my Pennisetum Clandestinum, eh!
    2. Re:What's so hard about this? by headbulb · · Score: 1

      Why should everything use the same database? A file system is a type of database. SQL is another. Each has it's own purpose. SQLite is contained in a file anyways. A separate database server wouldn't have to be setup for this.

    3. Re:What's so hard about this? by FlyingGuy · · Score: 1

      First of all I agree, building a webserver for something as critically important as a DNS resolver is completely asshat if that is what they are doing.

      But I disagree with you. Any dns resolver should be as complete an island as possible, depending on as little as possible, the fewer other subsystems it has to rely on the less points of failure there are.

      This should be a very straight forward hash table, loaded from into ram, all entries mapped to either upper or lower case and then the queries hashed and they are either in memory or not return the corresponding IP address or return null. This is not rocket science, it is a simple lookup.

      --
      Hey KID! Yeah you, get the fuck off my lawn!
    4. Re:What's so hard about this? by Joce640k · · Score: 1

      Ummm...this "database" isn't relational, there's no inner joins or anything like that (at least there shouldn't be), it's a one-to-one lookup (text string to IP address).

      It's not the sort of thing which takes ten revisions just to get to a state where it's "inefficient, difficult to work with, and riddled with bugs".

      --
      No sig today...
    5. Re:What's so hard about this? by Skapare · · Score: 1

      DNS is not naturally a data structure suitable for relational databases. Any SQL is a bad choice because SQL is a bad choice. Something like Berkeley DB might have been better, or perhaps some of these.

      --
      now we need to go OSS in diesel cars
    6. Re:What's so hard about this? by amorsen · · Score: 1

      BIND isn't a DNS resolver.

      --
      Finally! A year of moderation! Ready for 2019?
    7. Re:What's so hard about this? by MikeBabcock · · Score: 1

      They could've learned from how fast one of their detractors' systems work -- tinydns uses a BDB-like database system for storage as well, and is extremely fast. I think there are even more problems with how BIND handles memory management and historically doesn't understand that resolving and serving are completely different concepts.

      --
      - Michael T. Babcock (Yes, I blog)
  33. Years? by shish · · Score: 1

    These problems will all be fixed over the next couple of years

    I admit complete ignorance in this area, so please educate me if this sounds stupid -- but surely writing a DNS server can't be that hard?

    --
    I mod down anyone who says "I will be modded down for this", regardless of the rest of their comment
    1. Re:Years? by FlyingGuy · · Score: 1

      Are you kidding? It is software written by committee which always sucks. What other examples, try http, css, xhtml, xml, etc. etc. the list is endless.

      Additionally the entire DNS system is one pile of legacy crap with a on of kludges to support this or that interest group.

      Just be glad there are alternatives.

      And you are correct, it should just be a database that responds to a very simple query, here is the domain name, here is the record type, return the IP address.

      But it is far more then that. Depending on the query you send the things has to tie itself in knots dealing with CNAMES, ptr records, txt records, Rdns and all kids of other twisted cruft.

      --
      Hey KID! Yeah you, get the fuck off my lawn!
    2. Re:Years? by Ethanol · · Score: 1

      surely writing a DNS server can't be that hard?

      Try it some time! It's fun! I can even refer you to an ongoing open-source project that you can contribute to, if you like! :)

      To give a rough idea of scale, BIND 9 has about half a million lines of C code, and the first release took a couple of years to write.

      (BIND 10, in its current minimal and unfinished state, is about 40,000 lines of C++, and 10,000 lines of python.)

    3. Re:Years? by Arimus · · Score: 1

      Ok, if you want it to simply carry out lookups and return answers then fair enough.

      If how ever you want to do more a quick set of things to consider (this is purely off the top of my head)

      0. Security
      1. Validation of the various record types
      2. Caching of lookups
      3. Proper use of the dns heirarchy
      4. Security
      5. Should be easy to manage
      6. Zone transfers
      7. Speed... slow dns will be no use to man nor beast
      8. Security
      9. Compliant to the relevant RFC's
      10. Dynamic DNS support

      Ok, I've put security in a few times but its vital enough and hard to get right...

      --
      --- Users are like bacteria -> Each one causing a thousand tiny crises until the host finally gives up and dies.
    4. Re:Years? by Anonymous Coward · · Score: 0

      Are you kidding? It is software written by committee which always sucks. What other examples, try http, css, xhtml, xml, etc. etc. the list is endless.

      Additionally the entire DNS system is one pile of legacy crap with a on of kludges to support this or that interest group.

      Just be glad there are alternatives.

      And you are correct, it should just be a database that responds to a very simple query, here is the domain name, here is the record type, return the IP address.

      But it is far more then that. Depending on the query you send the things has to tie itself in knots dealing with CNAMES, ptr records, txt records, Rdns and all kids of other twisted cruft.

      That database that responds to queries is "tinydns".

    5. Re:Years? by MechaStreisand · · Score: 1

      And yet djbdns: 3497 lines of code. And it's more secure. The half a million lines of C code for something less secure and more buggy would tend to suggest you're doing it wrong.

      --
      Disclaimer: IANAL. This post is, however, legal advice, and creates an attorney-client relationship.
    6. Re:Years? by mysticalreaper · · Score: 1

      FlyingGuy's post is such a rambling, nonsensical rant i fear i may be being trolled.

      To the grandparent: Yes, writing a DNSserver is that hard. The subtle complexities of the internet's directory service actual operations in the Real World is not trivial. The DNS system actually does more than you might think, and contains more record types than commonly understood.

      Just upgrading DNS to support IPv6 was no trivial matter, and they actually got it wrong, first, with A6 records--it was decided that AAAA records were better.

      I want to also point out that DNSSEC--cryptographic assurances applied to DNS--is a major step forward on fundamental DNS infrastructure, and implementing that is far from trivial. DNS is being tested at the root and major top-levels-domains even as i write this, and testing is planned to continue throughout 2010.

      Finally, the data in the DNS is not at all consistent. The DNShas--realistically--over a million administrators. This is made possible by the delegation-hierarchy model of DNS, which works very well for a globally-scaled system. But it also means that strange-rule bending setups are out there... and dealing with all of them in some kind of consistent, reliable way is a major difficulty.

      So again, writing a robust DNSserver is hard.

      Oh, but FlyingGuy, back to your senseless musings: if DNSis such a bad system, can you name a superior alternative?

      To all: DNSis a fine system, in constant, massive use on the internet with remarkable reliability, despite well-know targets of attack. It is incrementally being updated and advanced, with thoughtful and non-disruptive upgrades happening especially in the last 10 years. You can rely on DNS being around for another 30 years.

    7. Re:Years? by FlyingGuy · · Score: 1

      You were not being trolled.

      The problem is the same with DNS as it is with most software projects, especially those governed by committee. They are a very old Christmas tree that keeps getting just one more ornament hung on it until it collapses.

      DNS should be one of the simplest and most bullet proof bits of software out there. It accepts a request that is a name of a particular machine and returns an IP address if it has one based on the requested record type, nothing more nothing less. The back channel where the updates come from should be locked down HARD and they will only communicate with known DNS servers to receive or provide updates based on a cypher key that is delivered to the DNS server administrator by separate means.

      Domain and host names should have hard length limits, so that a DNS server's input buffer can be fixed and it will ONLY accept n chars as a query.

      IPv6 is an abortion and hence since the world insists on using it a DNS server should be built to service ONLY IPv6 instead trying to shoehorn that idiocy into an IPv4 server.

      Yes writing a DNS server is work that must be accomplished thoughtfully and the overriding priority should be security.

      The innocent age of the internet is over. It is no longer a collegiate atmosphere where it was a bunch of science guys who trusted each other. It is an overtly hostile landscape where every packet should be considered an attack and dealt with appropriately.

      --
      Hey KID! Yeah you, get the fuck off my lawn!
  34. What is being thrown out? by ciggieposeur · · Score: 1

    Which major features in bind9 are going to be thrown out (and stay out even beyond beta) for bind10?

  35. Re:Great. Just what the DNS infrastructure needs by Anonymous Coward · · Score: 0

    Dynamic updates, DNSSec/etc. are part of the basics nowadays.

  36. Re:Great. Just what the DNS infrastructure needs by poetmatt · · Score: 1

    hiring people isn't a solution to anything.

    That's like asking someone to figure out how to prevent a situation that has never occurred.

    you can plan and plan and plan, but you're not going to have a fallback for everything that can possibly happen.

  37. Your doing it wrong - for the 10th time! by richrumble · · Score: 0, Flamebait

    How do you sleep knowing DJB is out there and you can't compare? How can this be your 10th version with no hope of being better at writing DNS code. Swallow your pride, and start with a known good code base, you know like DJB, then cock it up... you are bind after all... that's what you guys do, and that you ARE good at. Every week, every month for years, decades, it's another bind security alert. Bind is the only code that I know of that is the exception to the saying "you can't make a silk purse out of a sows ear"... you can if there is no ear left, is there any original code in b9? Back to the drawing board wasn't far enough... jesus christ. Are interns the only ones allowed to code? Are you getting M$ rejects? I don't understand, do the opposite of what you think you should do, and maybe you have some decent code there, ask people on the street if this this and this are a good idea... ask your grand parents, filp coins... something other than what you do day in and day out fuck! -rich

    1. Re:Your doing it wrong - for the 10th time! by richrumble · · Score: 1

      PS... I don't write code, that shit is hard, but I'll be damned if I don't yell at you and I can't write hello world. Nonetheless, I maintain you guys suck and probably eat babies. Fucking baby eaters, learn to follow an RFC and sanitize your queries you fucking baby eaters! -rich

  38. Re:Great. Just what the DNS infrastructure needs by evilviper · · Score: 1

    So we're throwing away all the code that has matured and spend a decade being looked at, and starting over with new buggy code that will be riddled with security vulnerabilities.

    If you can't write a new program, practically free of buggy code, you certainly don't have the wherewithall to fix bugs in existing code...

    Sendmail certainly came through it's rewrite vastly better than it was before. Other DNS programs, like MaraDNS, have come on the scene, and remain exploit-free for several years now.

    --
    Slashdot gets worse every day... Pipedot: News for nerds, without the corporate slant
  39. Re:Great. Just what the DNS infrastructure needs by FlyingGuy · · Score: 1

    Dude, you have fucking got to be joking!

    155 // should we refactor this code using, e.g, the state pattern? Probably
    156 // not at this point, as this is based on proved code (derived from BIND9)
    157 // and it's less likely that we'll have more variations in the domain name
    158 // syntax. If this ever happens next time, we should consider refactor
    159 // the code, rather than adding more states and cases below.
    160 while (ndata.size() 161 unsigned char c = *s++;
    162
    163 switch (state) {
    164 case ft_init:
    165 //
    166 // Is this the root name?
    167 //
    168 if (c == '.') {
    169 if (s != send) {
    170 isc_throw(EmptyLabel, "non terminating empty label");
    171 }

    You have variables name like "s" and "c" and you declare and init a variable inside a while loop, and assign it the incremented value of a dereferenced pointer!?

    I know you inherited this code from the comments, but unless someone is physically preventing you from changing it you have no business writing any code that is critical to the functioning of the internet.

    --
    Hey KID! Yeah you, get the fuck off my lawn!
  40. Yet again by demon · · Score: 1

    Seriously? The idea is to go for yet another rewrite? And it sounds like it's going to be a half-assed database backing (SQLite? Is this right?)? Why not just move to an abstracted storage backend, and let the admin pick what works for him (or write his own backend plugin)? You know, like PowerDNS has been doing for awhile now. Seriously, guys, let's just stop using BIND and move to a better nameserver; it really seems like ISC is going to be rewriting BIND until the heat death of the universe.

    --

    Sam: "That was needlessly cryptic."
    Max: "I'd be peeing my pants if I wore any!"
  41. +1 insightful by Joce640k · · Score: 1

    If they didn't get it right after nine versions then it's probably time to move on.

    "...is known to be inefficient, difficult to work with, and riddled with bugs"

    Make that "definitely".

    --
    No sig today...
  42. Re:Great. Just what the DNS infrastructure needs by Anonymous Coward · · Score: 0

    You have variables name like "s" and "c"

    Short variable names are fine, as long as their scope is limited. Do you prefer "index" to "i", for example? Such names are common.

    you declare and init a variable inside a while loop

    So? If it's only used in that block, why on earth wouldn't you declare it in that block? Scope. It's a good thing.

    assign it the incremented value of a dereferenced pointer!?

    Do you program in C? A construct like *s++ is really very common. K&R, for example, give the following strcpy() example (not an ANSI/ISO implementation, but it doesn't matter):

    void strcpy(char *s, char *t)
    {
        while (*s++ = *t++)
            ;
    }

    Or do you have a problem with using something like that as an initializer? Why?

    You, personally, might not like the style, but you can't pretend it's somehow "incorrect".

  43. Re:Great. Just what the DNS infrastructure needs by Joce640k · · Score: 0, Troll

    Something as simple as DNS should have been "right" after about version 3.

    Version 10 being a complete rewrite and still "inefficient, difficult to work with, and riddled with bugs" is funniest thing I've heard this month. I can only imagine what the committee meetings for this are like.

    --
    No sig today...
  44. Re:Great. Just what the DNS infrastructure needs by FlyingGuy · · Score: 1

    Yes using i is a common idiom in C when using a throw away integer for loop control, its intent is clear,

    In this code ( please go read the rest of it ) the variable c referes to s all over the place and these is nothing really explaining it. While being terse does have its merits as the example you showed indicates ( the scope is limited to a simple 5 line function, that kind of terseness does not belong spread over 50 lines of code.

    As an initializer you really have no idea what you are initializing with unless you are intimately familiar with the code, and yes I have done such in many instances but with a variable name that gives some hint ( at least ) as to what it does. This is just plain bad coding.

    --
    Hey KID! Yeah you, get the fuck off my lawn!
  45. Re:Great. Just what the DNS infrastructure needs by mcrbids · · Score: 1

    Sure - new codebase, new bugs. A given. What isn't given is why the original developers thought this was a good idea? None of the answers to that question that I can think of are complimentary to what is now core infrastructure to the Internet. Was it not modularly written? Was it horribly insecure, and so badly so that it wasn't considered worth extending?

    Bind is now in its tenth revision. You'd think by now that some sort of good, workable framework or design pattern would have evolved by now?

    But clearly, it hasn't, and clearly, after several rewrites, it's *still* not considered worthy of being extended or refactored rather than rewritten. This bespeaks (to me) a well of WTFs, in light of the idea that you should basically never rewrite your software .

    --
    I have no problem with your religion until you decide it's reason to deprive others of the truth.
  46. BIND 10 committee metings by shani · · Score: 2, Informative

    There is no "BIND 10 committee", but we do have weekly conference calls. Minutes from these are published on our Trac site:

    https://bind10.isc.org/wiki/WeeklyConferenceCalls

    [ disclaimer: I am the BIND 10 project manager ]

    1. Re:BIND 10 committee metings by Nutria · · Score: 1

      That still doesn't answer the question, "Why the heck wasn't BIND fixed a long time ago? You've had TWENTY FIVE YEARS!!!!!"

      --
      "I don't know, therefore Aliens" Wafflebox1
    2. Re:BIND 10 committee metings by Anonymous Coward · · Score: 0

      Wow, I'm not sure where you live, but the world is dynamic and things tend to change over 25 years, especially relatively new things. Like so many software projects/protocols, DNS requirements have changed over the last 25 years. There have been additions/changes to how DNS is supposed to work (new and updated RFC's). My educated guess is that there may have been some slight increase in the scale of DNS over the last twenty five years as well.

      Using your logic, there never should have been another computer game after pong. It worked just fine.

      [Disclaimer: not parent, not a bind developer, too lazy to log in]

  47. The unit tests are a bad joke - age and sex by Anonymous Coward · · Score: 0

    These tests are a joke, for example in the file src/bin/bindctl/unittest/bindctl_test.py we have the following function (which isn't used anywhere, so what is the point of this test function, Bind will support some sort of age/sex restrictions on data it serves perhaps?):

    class TestModuleInfo(unittest.TestCase):

    def test_get_param_name_by_position(self):
    cmd = CommandInfo('command')
    cmd.add_param(ParamInfo('name'))
    cmd.add_param(ParamInfo('age'))
    cmd.add_param(ParamInfo('data', optional = True))
    cmd.add_param(ParamInfo('sex'))
    self.assertEqual('name', cmd.get_param_name_by_position(0, 2))
    self.assertEqual('age', cmd.get_param_name_by_position(1, 2))
    self.assertEqual('sex', cmd.get_param_name_by_position(2, 3))
    self.assertEqual('data', cmd.get_param_name_by_position(2, 4))
    self.assertEqual('data', cmd.get_param_name_by_position(2, 4))

    self.assertRaises(KeyError, cmd.get_param_name_by_position, 4, 4)

    I seriously get the feeling they padded out the unit tests with.. well.. junk from who knows where.

    1. Re:The unit tests are a bad joke - age and sex by shani · · Score: 4, Informative

      One of the ideas of BIND 10 is to allow modules to be added to an already running system. Also, we want administrator tools to be able to ask the modules themselves what functionality is available. This allows relatively simple administrative tools to work with changing systems.

      In order to do this, we need to have a mechanism for modules to report their capabilities. So, for example "I have a command called 'notify' which can be used to send a notify to my secondary servers, and it takes the parameter 'domain' which specifies the domain to send it from, and an optional parameter 'secondaries' which you can use to limit to a set of secondary servers".

      The test code here exercises this generic capability.

      [ disclaimer - I am the BIND 10 project manager ]

    2. Re:The unit tests are a bad joke - age and sex by Midnight+Thunder · · Score: 1

      Does this mean you are attempting to create a smaller core and then make everything else a module? Something similar to the architecture of Apache HTTPD?

      --
      Jumpstart the tartan drive.
    3. Re:The unit tests are a bad joke - age and sex by Anonymous Coward · · Score: 0

      Don't let all the people on DJB's cock get to you. BIND is a defacto great DNS server despite all the problems it has.

    4. Re:The unit tests are a bad joke - age and sex by MikeBabcock · · Score: 1

      lmao, and the cause of most of the Internet's DNS issues in the last 10 years. Most of which were predicted and warned about by the very same DJB. This is software -- doing it right is valuable. Doing it wrong when you're shown how to do it right is stupid.

      --
      - Michael T. Babcock (Yes, I blog)
  48. Why BIND 10 is a rewrite by shani · · Score: 5, Informative

    Joel has a lot of followers, but you shouldn't take what he says as holy writ. In fact, this very article is all about how we should still be using the old Netscape browser and not have started this crazy Mozilla project... you know, the one that resulted in Firefox?

    I view the BIND 10 project in some ways as the DNS version of the Mozilla project - it is an ambitious rewrite, and will take a while to reach maturity. Luckily BIND 9 is still an excellent piece of software, so we have the luxury of enough time to get there.

    BIND 9 is 10 years old, and was designed and implemented when the computing and Internet worlds were different than they are today. The architecture of BIND 9 - a monolithic, multithreaded program - does not lend itself well to today's DNS needs. So a new architecture is needed.

    Originally we had planned on reusing a lot of the BIND 9 code. After all, like Joel says, it has been field-tested and is known to be high-quality in handling real-world DNS needs. However, the BIND 9 code has very, very high coupling. In order to make a small change or use an excerpt of code, you need to use the BIND 9 memory management system, and the BIND 9 task model, and the BIND 9 socket library, and so on. One of the reasons that BIND 9 needs to be rewritten is to make it possible to use the parts of the software you need to solve your problems without having to understand the entire system.

    My theory is that the architectural problems would have been resolved over the decade of active use for BIND 9, as users submitted their patches and the developers periodically refactored the code. Unfortunately the BIND 9 project does not have an active community, either as developers or users. There are lots of people using BIND 9 (surveys put BIND 9 at about 80% of DNS servers on the Internet), but they have no group identity as BIND 9 users, and the direction and development of the software comes almost entirely from within ISC. This means it is an open source project that has resources limited in ways similar to proprietary software. If there was a BIND 9 community, then I think the software would have evolved with the times and a rewrite would not have been necessary.

    For BIND 10, we want it to be an actual open source project, not just open source software. We have tried hard to be open and transparent about how BIND 10 is developed, and are trying to make it easy to participate in BIND 10. Hopefully this will be the last time a major rewrite is necessary, and the code base can evolve in any direction it needs to in the future, by maintaining a good connection with the people who actually use it.

    [ disclaimer - I am the BIND 10 project manager ]

    1. Re:Why BIND 10 is a rewrite by Shimbo · · Score: 2, Informative

      Joel has a lot of followers, but you shouldn't take what he says as holy writ. In fact, this very article is all about how we should still be using the old Netscape browser and not have started this crazy Mozilla project... you know, the one that resulted in Firefox?

      Yes, but where is Netscape today? Rwriting your code from scratch and fading into oblivion is hardly good business. Eventually the code came good but it was too late to save the company.

    2. Re:Why BIND 10 is a rewrite by Anonymous Coward · · Score: 0

      > This means it is an open source project that has resources limited in ways similar to proprietary software

      Bind is a proprietary piece of software that publishes the source code. Development is secret (no public VCS), and the way patches go in are secret.

      > For BIND 10, we want it to be an actual open source project

      Then make the source tree open, and have a policy of regularly integrating patches from others. Let non-ISC people assist with the design process.

      My prediction is that Bind 10 will be managed like Bind 9. A secret group of people will come up with a secret design, write secret code, and then dump it publicly as "Open Source". Other people with experience in the field will look at the result, and go "but you got this completely wrong, that wrong, and the whole system will need to be redesigned from scratch".

      Remember: these are the people who took 20 years to discover that "modularity" is a good idea. Other commercial and open source projects were designed on a plug-in modular architecture long ago. (e.g. Apache).

      Another prediction is that the first releases will have reams of bugs, just like the first releases of Bind 9. And just like Bind 9, the response will be "but it's Beta code".

      No... it's code that got written and "thrown over the wall" with minimal testing. It's more efficient to write code that works. Tested, validated, proved. Once that's done, write more code. Instead, the attitude seems to be "write reams of code, and let the Open Source users find the bugs".

      It's a great way for a proprietary product to outsource QA costs onto the Open Source community.

      My suggestion for everyone is to move to a real Open Source DNS server that already has a modular architecture and a public VCS tree: PowerDNS.

    3. Re:Why BIND 10 is a rewrite by dkf · · Score: 1

      My theory is that the architectural problems would have been resolved over the decade of active use for BIND 9, as users submitted their patches and the developers periodically refactored the code.

      I doubt that. Having seen open source communities in action, it is very rare that architectural problems get fixed by communities. This is because architecture-by-committee doesn't work. For sanity, you need one person to hold the core architecture in their head and describe it to everyone else. Once things get complicated enough, it is just about impossible for anyone to be that person and it is easier to throw it all away and start over. That's a shame, but how it goes.

      Communities tend to build on top of the basic architecture, sometimes grossly distorting it, sometimes making it much less flexible than it was originally, but still preserving the original basic plan. That's because the architecture, the basic plan, it guides how people think about the whole edifice.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    4. Re:Why BIND 10 is a rewrite by owlstead · · Score: 1

      Huh? Wasn't it the problem that others wrote the new code? Are you trying to suggest that they should not ever rewrite BIND?

  49. Generic back-end by shani · · Score: 1

    The design for BIND 10 allows for generic back-ends. We implemented SQLite as the first one, simply because it was the easiest. One of our early goals for the second year of development is to support additional database back-ends (we call them "data sources"), including MySQL, PostgreSQL, and an in-memory 'database' (for performance-critical environments).

    In the end we'll also support more exotic back-ends, like BDB, LDAP, directories, and possibly even the tinydns data format.

    [ disclaimer - I am the BIND 10 project manager ]

    1. Re:Generic back-end by sateh · · Score: 1

      Sounds like you guys took a good look at PowerDNS, which has this functionality for many years.

    2. Re:Generic back-end by Anonymous Coward · · Score: 0

      You'll fail epically again because you don't understand the KISS principle that's at play behind all of DJB's (and now OpenBSD's) software - Keep It Simple, Stupid! Betcha didn't know OpenBSD is going to throw BIND out from their system as well...

      All your grandiose plans and features mean a lot of code and a lot of bugs, a lot of idiotic design mistakes as has been evidenced by the BIND history. You'll reinvent the BIND wheel. Too late for you.

      You should have put the KISS principle as the cornerstone of the BIND 10 design, but that goes against the ISC's philosophy - the complexity means support, means contracts, means money. You can't make much money with software like djbdns - it just works.

    3. Re:Generic back-end by Anonymous Coward · · Score: 0

      Garbage. http://www.nlnetlabs.nl/projects/nsd/

      Imported into OpenBSD. Will likely replace the BIND garbage in the base system eventually.

      OpenSMTPD will likely replace the Sendwhale garbage as well...

  50. riddled with bugs by 1s44c · · Score: 1

    'This code is not intended for general use, and is known to be inefficient, difficult to work with, and riddled with bugs.'

    If this is indeed a true statement this code is doomed and should be thrown away right now.

    If they don't do it right from the start they will spend the rest of forever turd-polishing.

  51. Re:Great. Just what the DNS infrastructure needs by ebcdic · · Score: 1

    Using "s" to refer to a string and "c" to refer to successive characters in it is a common C idiom, and will be immediately understood by any competent C programmer.

  52. Re:Great. Just what the DNS infrastructure needs by Anonymous Coward · · Score: 0

    We wrote lots of tests. (How else would we know it has bugs in it?)

    You'd model it and apply LTL to check for certain classes of bugs.

  53. Re:Great. Just what the DNS infrastructure needs by Hurricane78 · · Score: 1

    You mean like Windows ME? ^^

    --
    Any sufficiently advanced intelligence is indistinguishable from stupidity.
  54. But what about the bloat? by Skapare · · Score: 1

    There's no mention of the bloat of BIND9. Will it be carried into BIND10? Are they reimplementing all the bloat from the ground up?

    I'll stick with NSD and Unbound.

    --
    now we need to go OSS in diesel cars
    1. Re:But what about the bloat? by bill_mcgonigle · · Score: 1

      Well they're probably not going to cull features and probably going to design more efficiently, but it raises the question - what's better about this rewrite than, say, unbound, with several years' head-start in the rewrite race?

      --
      My God, it's Full of Source!
      OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
  55. Re:Great. Just what the DNS infrastructure needs by agrif · · Score: 1

    I'm going to say that s and c are a string and a character, respectively, as s is being treated like a pointer to an array of characters. That being the case, these names are exactly as idiomatic as i.

    People are really complaining too much about having a buggy BIND 10 implementation. This is alpha software, with a long life cycle. This software will be expected to last years, so taking a few to make sure all the bugs are ironed out properly is not a big deal. As far as I can tell the development team is approaching this the right way.

  56. Bind? by chrysalis · · Score: 1

    Is there still a lot of Bind users out there?

    NSD and Unbound are way better, but they aren't the only worthy alternatives.

    --
    {{.sig}}
  57. Future direction? by thogard · · Score: 1

    DNS for IPv6 will have to know a whole lot more about which address to dish out 1st than current versions of BIND and I'm not sure how long it will take to get a good handle on that problem.

    I'm old school so I like dedicated hardware for my DNS servers. I run bsd jails that don't have anything but bind running. I used to run solaris servers that had init running named running off a read only scsi disk that was shared with another server. Init ran another program that would mount the file system read only, copy the zone files and then unmount the disk. There was another program that watched for a condition and then sent init signals. There were less than 20 files on the disk. That is what I want on a future name server. I can do that now on a Freebsd zone or a Solaris container as well (except I have to replace iniit with the cd rom boot one, why does it link to buggy xml libs?)

    1. Re:Future direction? by TheLink · · Score: 1

      > I run bsd jails that don't have anything but bind running.

      The reason why anyone would need to do all that was both BIND4 and BIND8 were pieces of crap. BIND9 was a bit better but still...

      Anyway, if it's a different team doing BIND10, maybe they might produce something better.

      --
    2. Re:Future direction? by mysticalreaper · · Score: 1

      DNS for IPv6 will have to know a whole lot more about which address to dish out 1st than current versions of BIND and I'm not sure how long it will take to get a good handle on that problem.

      This doesn't compute for me. DNShas different record types to deal with the issue you are suggesting.

      Animportant resource record type is the INA. (IN is the 'internet' class). This is probably the most heavily used record type.

      So here's an example:
      www.kame.net. 86365 IN A 203.178.141.194

      If you have a web browser, it will often query the system resolver for a an A record. This is an IPv4 address. But if the browser wants, it will query for an AAAA record, like this:
      www.kame.net. 86400 IN AAAA 2001:200:0:8002:203:47ff:fea5:3085

      So, my point is, the version of BIND has no relevance on IPv4 addresses, and IPv6 addresses. It's the query type that determines that. That is part of DNS, and universal to all DNSsoftware.

      P.S. a web-browser could query for both A and AAAA records, and have a preference of one or the other set

  58. It doesn't look very understandable to me by Chemisor · · Score: 5, Interesting

    Well, I took a look at the code, and it's a typical "modern" C++ design. There's a gazillion classes in an "everything-is-an-object" hierarchy, using the latest and greatest "patterns" in superfluously complex ways. Doesn't anybody care about simplicity in design any more? Granted, BIND9 code was a mess, but this IMO is not much of an improvement. Ugly C++ is just as bad as ugly C. For example, why, for the love of God, would you replace a simple enum with a class with a member variable set to a constant value, and with each instance of the class created by a named constructor with a hardcoded constant in it? In src/lib/dns/message.h there are four of these. And what's with all the wrappers? I suppose it's their definition of "extensibility" -- a framework where everything is accessed through wrapped pimpls, so that anybody could change the implementation without changing binary compatibility with... oh, wait, it's an executable, so WTF? When you change something, you have to rebuild it anyway. So all you really get is ugly wrappers over ugly wrappers over actual code. Why do you need these wrappers anyway? What's wrong with boost's base64_encoder, for instance, that you need to wrap it with an encodeBase64 function, which instantiates a 20 line local BinaryNormalizer class in an anonymous namespace, the purpose of which, as far as I can see, is to pad the binary input with zeroes in case some evil application decides to read past the end of the vector. Oh, wait, this is only called from encodeBase64, and the read-past-the-end thing never happens. So WTF?

    That's just four files I looked at, and already it's WTF piled on WTF. Maybe I ought to submit it to thedailywtf.com and see if it's accepted...

    1. Re:It doesn't look very understandable to me by TheDarkMaster · · Score: 1

      Welcome to modern bloatware world. Is like many "new and shiny" Java projects I need to look and modify, where the "coding pattern" is more important than function.

      --
      Religion: The greatest weapon of mass destruction of all time
    2. Re:It doesn't look very understandable to me by Ethanol · · Score: 2, Informative

      Thank you very much for looking at the code. If you could send critiques like that to the developer list instead of posting them to slashdot, it'd have a better chance of getting attention from the other developers.

      I suppose it's their definition of "extensibility" -- a framework where everything is accessed through wrapped pimpls, so that anybody could change the implementation without changing binary compatibility with... oh, wait, it's an executable, so WTF?

      Actually the bit you're looking at is libdns, which we're trying to design in such a way that it can be used by other DNS-aware applications, not just BIND. (I happen to agree with several of your other points, though, and there are places outside libdns where the pimpl thing was used and maybe shouldn't have been.)

    3. Re:It doesn't look very understandable to me by Chemisor · · Score: 2, Interesting

      > If you could send critiques like that to the developer list instead of posting them to slashdot,
      > it'd have a better chance of getting attention from the other developers

      The problem is that I simply don't see what sort of "attention" I would want in such a situation. Yes, I could write up a mile-long list of complaints about the code, but it would not do any good because they would all add up to: "your code sucks; throw it all out and start over". It's not just one little thing or two little things, it's everything. It's the whole approach to interface design that plagues all open source projects and it's caused by releasing too early. Once the code is "out there", there is a chance that somebody will start using it, so you start worrying about breaking the API and inconveniencing these (often imaginary) users. If you know from the start that you intend to release early, you end up designing safety factors like pimpl into the API, in case you want to change something. I would advocate the opposite route: let the API float until the implementation settles, because you don't know how to best access the implementation until you have the implementation. And once we state our positions, there is nothing that can be done short of starting from scratch, which in not an option for a codebase many years in development.

      Furthermore, my gripes have a very different focus; I care passionately about code size. To me, code simplicity is the most important goal. Simple code is easier to understand, easier to maintain, less buggy, and faster to run. I believe that code simplicity is best objectively measured by measuring the size of the resultant execuables, because "simple" should primarily mean "simple for the computer". Thus, most of the complaints I am likely to make about your code will relate to what it looks like to the computer. That's where your pimpls and out-of-line wrappers and externally visible long names all are painfully obvious. And it's also where no modern developer ever thinks of looking. No modern C++ programmer looks at the assembly his source code generates, and so he remains ignorant of where all the horrendous bloat is coming from. He doesn't understand that objects aren't real and that abstractions have costs. And from that lack of understanding comes a horrid implementation, from which then comes a horrid API.

      I can complain all day about your design, but you won't know how to fix it until you understand the above problem and learn to see your code from the computer's point of view. Then I won't have to tell you what is rotten about your code, because you'll know it. Thousand-instruction functions will burn your eyes and you'll scream "but I didn't know!" and maybe then, grasshopper, will you achieve true enlightenment.

    4. Re:It doesn't look very understandable to me by owlstead · · Score: 1

      Looking from this comment, it's for the good of all that you did not perform a code review. You seem too much of a whiner, and even worse, someone that always wants to have his way.

      I have been developing for years and years and although code simplicity is an important goal, it certainly isn't the only one. Having well designed interfaces between components is - for instance - something that really pays off during maintenance. Well defined (sometimes long) variable names allow you to write less comments (that don't keep up with the actual code in many cases).

      That said, I think you've certainly got your head screwed on correctly, and you make many valid points. Having a wrapper for mundane tasks like base64 certainly is not a good idea. Wrappers in general should be used sparingly, because they are often less well thought out / tested than the code they try to wrap. And they add significantly to the maintenance if they are used from multiple components.

      Now, the trick is to come of your high horse and come and help. There will be people out there with different opinions, and they will write imperfect code and do things in different ways. Personally I would never use non-managed code to write business applications, but here I am typing away in Firefox on Ubuntu. See the bad and the good.

      (OK, I'm going back reviewing the JSR-310 Date Time API now, 3 pages of comments and counting - reviewers, we need you!)

  59. Re:Great. Just what the DNS infrastructure needs by jgrahn · · Score: 1

    Dude, you have fucking got to be joking!

    [snip source code quote]

    You have variables name like "s" and "c" and you declare and init a variable inside a while loop, and assign it the incremented value of a dereferenced pointer!?

    I'm assuming s and c are part of the idiom in this code. And it's good practice to declare variables in the smallest possible scope, and init them at the same time. It sounds like you think it's inefficient, but any decent compiler will optimize away 'c'; it's only there for readability.

    I'm more worried by the mention of "patterns". And by the C++-style comments, which prevents the code from being compiled as good old ANSI C. Hopefully they use the *useful* C99 features too.

  60. PowerDNS by sateh · · Score: 1

    I switched to PowerDNS a long time ago and never really looked back at Bind. PowerDNS is awesome. It is fast, modern and has much less of a buggy/exploity reputation as Bind has.

  61. Bizzarro world of DJB haters by Ice+Station+Zebra · · Score: 3, Interesting

    Enforcing your copyright over original content is a bizarre license scheme? Patching considered bad? Actually doing something you promised is wrong? Public Domain is a license?

    Wow, you really have drunk the DJB haters kool-aid.

    1. Re:Bizzarro world of DJB haters by Vellmont · · Score: 1


      Enforcing your copyright over original content is a bizarre license scheme?

      Releasing source code, but refusing to allow anyone to modify it and not maintaining it yourself is rather bizarre, yes.


      Patching considered bad?

      Yes. Forcing people that actually DO want to maintain your code to do so by collecting together a series of patches and apply them to your original code is rather poor software distribution and maintenance.

      Actually doing something you promised is wrong?

      I never said what he did was "wrong", but he's certainly not worthy of praise or the great worship he gets from a small segment of people.

      Public Domain is a license?

      Technically I guess you're right, but the distinction is rather irrelevant to the point that it took him 6 years of doing nothing to finally release his code for modification.

      Wow, you really have drunk the DJB haters kool-aid.

      If you can't see the above are entirely valid criticisms, I can't help you.

      --
      AccountKiller
  62. And another +1 insightful by fnj · · Score: 1

    I mean for chrissake, how hard can it be to take a domain name and return an IP, and vice versa? It's a database with a coupla queries. Sheesh. And why churn out code that is full of security vulnerabilities? A security vulnerability is a shitty piece of code. Plain and simple.

  63. Re:Great. Just what the DNS infrastructure needs by TheRaven64 · · Score: 1

    Looking at the posted code, it's pretty obvious that s is the input string being parsed and c is the next character being read. I would expect the rest of this function to contain a switch statement providing cases for the next character.

    The point of longer variable names is to make the code easier to read. If someone with C experience can look at the code and know what it's doing, then this goal is achieved already.

    If I were writing this code, then I'd probably use a parser generator like LEMON rather than writing the parser by hand, but given that his is the record parser and the grammar is pretty simple, I might not bother.

    --
    I am TheRaven on Soylent News
  64. MOD IT UP MAHN by Anonymous Coward · · Score: 0

    ha! where are my mod points when I need them?

  65. Re:Great. Just what the DNS infrastructure needs by MikeBabcock · · Score: 1

    Actually I'm pretty sure BIND 9 was advertised as a near-complete rewrite too.

    That said, I'm not touching either version ever again after using http://cr.yp.to/djbdns.html

    --
    - Michael T. Babcock (Yes, I blog)
  66. Re:Great. Just what the DNS infrastructure needs by MikeBabcock · · Score: 1

    That's arguably why DJB wrote tinydns -- do the simple things well and correctly.

    The caching resolver portion however is what allows for cache poisoning attacks and some other interesting Internet security holes in the last decade.

    --
    - Michael T. Babcock (Yes, I blog)
  67. Re:Great. Just what the DNS infrastructure needs by Nutria · · Score: 0, Flamebait

    Why are you writing it in C/C++??

    If you need an important infrastructure system to be as known-good as possible, there are much better choices. (Ada is even part of the gcc, and so is portable across a wide range of architectures.)

    --
    "I don't know, therefore Aliens" Wafflebox1
  68. Re:Great. Just what the DNS infrastructure needs by Anonymous Coward · · Score: 0

    you declare and init a variable inside a while loop, and assign it the incremented value of a dereferenced pointer!?

    What's your problem?

    The variable is probably declared there for readability/maintenance purposes, and the compiler will re-organize that anyway.

    You obviously don't understand operator precedence because that code does not assign it the incremented value of a dereferenced pointer, it takes the value of the derefenced pointer and then increments the pointer, as you might do if "s" was being used to walk an array.

    you have no business writing any code that is critical to the functioning of the internet

    You have no business making such assertions. You clearly didn't take two minutes to try to understand this code before lambasting someone over it. A logical train of thought may have started "that code is most likely correct because it's been used without problem in BIND for decades".

    P.S. Moron.

  69. Re:Great. Just what the DNS infrastructure needs by bipbop · · Score: 1

    The C++-style comments aren't the only thing that will prevent it from being compiled as ANSI C--the code being written in C++ might prevent it, as well :-)

  70. Re:Great. Just what the DNS infrastructure needs by beguyld · · Score: 1

    And it's good practice to declare variables in the smallest possible scope, and init them at the same time.It sounds like you think it's inefficient, but any decent compiler will optimize away 'c'; it's only there for readability.

    I'm more worried by the mention of "patterns". And by the C++-style comments,
    which prevents the code from being compiled as good old ANSI C. Hopefully they
    use the *useful* C99 features too.

    Uh... declaring and initializing variables inside a while() statement is not compatible with "good old ANSI C." Can't have it both ways. Though it is 2010 now, maybe comments which work with C99 is okay now?

    Better yet, just use C++. It's not a driver, or even a library, it's an app. Using proven STL libraries will clearly improve the code quality and security.

    Actually, maybe it is C++, as if 's' is a string, then "s != send" indicates 's' is actually an instance of a string class, not a char pointer. (I didn't look at the full code, just the snippet posted)

  71. Re:Great. Just what the DNS infrastructure needs by owlstead · · Score: 1

    Yup, that's why I insisted that for my security relative, impossible to update (embedded) software a specialized test team was created. I would not be surprised (actually I'm quite sure) that the test costs are about 10 times that of development.

    But even that does not solve the problems with testing. Because the test team needs to consult the development team/domain expert and requires to take the architecture/implementation in mind, many tests will *still* only cover those already envisioned by the development team.

    In the end, you'll have to throw it in the pond and see if it floats. Of course, a highly complex, temporary pond is the best for ironing out the ironic bugs still present after development testing. Of course, the issues that are found should become part of the software tests, if only to prevent regression.

  72. Re:Great. Just what the DNS infrastructure needs by owlstead · · Score: 1

    You are over-generalizing as much as the GP. Hiring people is a great idea if they have more knowledge on a subject, especially while testing. They will find bugs and even architectural errors before you start to test in the field. They won't find every bug, but alpha/beta testing certainly won't find all bugs either. In the end there will always be gamma bugs left (that you find by, eh, field testing). The trick is to iron out as many of them as you can find.

  73. Re:Great. Just what the DNS infrastructure needs by owlstead · · Score: 1

    As long as the context of s and c is understood (in other words, if they are part of a local loop without any other variables that could become s or c) then that is fine. Even then I personally believe that verbose variable names are better, if only because it lowers the learning curve.

  74. Re:Great. Just what the DNS infrastructure needs by owlstead · · Score: 1

    Because they did not *completely* rewrite it it seems. They know there tools, they probably have made the decision to go without Garbage Collection. There could be many many other reasons.

    BTW, this is the wrong thread for this discussion. Even so, people are entitled to their meaning mods, modding this flamebait is taking it a bit far.

  75. Re:Great. Just what the DNS infrastructure needs by badkarmadayaccount · · Score: 1

    Sorry for OT top-posting, but I must ask this. What is the standard procedure for proposing a protocol extension (DNS more specifically)? My idea is simple - it relates to IPv6 networks. When a DNS server supporting the protocol extension (and has it enabled) receives a query that resolves to a v6 address, transforms the address to a address mapping pushed to the NAT-ing edge router via IGDP, receives the internal v4 address, and returns it as a result to the original DNS query. I think the point is quite clear. What does /. think?

    --
    I know tobacco is bad for you, so I smoke weed with crack.
  76. PowerDNS by shani · · Score: 1

    Actually, we did have a look at PowerDNS. I did a project with it at my last job. PowerDNS is not perfect, but it has a few good things that we want to also have in BIND 10. The generic back-ends is one, the fact that the code can be understood and fixed by a skilled programmer within a few hours instead of a few days is another. I also like a few "nice" things from the command line tools - although of course some choices are a bit broken.

    While administrators will have to choose the best DNS software to fit their needs, I don't actually view it as a competition. In fact, a diverse code base is good for the Internet ecosystem. It limits the impact of bugs, exploits, and general design artifacts.

    But be sure to use BIND 10 when it's ready for production. ;)

    [ disclaimer - I am the BIND 10 project manager ]

  77. Kaminski? by Anonymous Coward · · Score: 0

    Where's the fearless boy wonder Dan Kaminski? He's been busy abusing and breaking DNS for years! How about him getting off his ass and actually building something for once? It's easy to destroy something but it's much harder to create something worthwhile.