Please create an account to participate in the Slashdot moderation system

 



Forgot your password?
typodupeerror
Software United States GNU is Not Unix

U.S. Army Research Lab Opens BRL-CAD Source 209 209

brlcad writes "After 20 years of active development under a proprietary government license agreement, the BRL-CAD solid modeling suite has just been released as Open Source software. BRL-CAD is one of the many legacies of the late Michael Muuss, author of ping. The package began on the PDP-11 and VAX 11/780--before the emergence of ANSI/ISO C language standards--and boasts one of the first parallel Ray tracers in existence. Today BRL-CAD has over 750,000 lines of source code. It incorporates both 3D modeling and rendering capabilities, and supports an API for user-developed geometric analysis applications. It continues to be developed and maintained by the U.S. Army Research Laboratory and its partners. Various portions of the package are distributed under the GPL, LGPL, GFDL, and BSD licenses."
This discussion has been archived. No new comments can be posted.

U.S. Army Research Lab Opens BRL-CAD Source

Comments Filter:
  • by falloutgib (585732) on Saturday January 08, 2005 @02:34PM (#11297989) Homepage
    This looks like a very advanced package. I wonder how it'll hold up to standards such a s POVRay? (pirst fsot?)
  • by apheXcoil (325913) on Saturday January 08, 2005 @02:42PM (#11298044) Homepage
    That headline was way over my head.
  • by BJZQ8 (644168) on Saturday January 08, 2005 @02:42PM (#11298046) Homepage Journal
    In a world dominated by things like UniGraphics, AutoCAD, and Pro/Engineer, it will be nice to have a professional-level CAD package available under a less-restrictive license...But I don't see it challenging the established niches of those previous packages for awhile. It's the "if it's cheap, it must not be good" mentality that really does apply to CAD software...
  • OSX Screenshots (Score:3, Interesting)

    by theoneknuckles (608389) on Saturday January 08, 2005 @02:44PM (#11298056)
    Is it me or are the screenshots showing this puppy running on Mac OSX?
    • by TheKidWho (705796) on Saturday January 08, 2005 @02:46PM (#11298065)
      Yep, it runs on OS X.
    • by jcr (53032) <jcr AT mac DOT com> on Saturday January 08, 2005 @02:50PM (#11298103) Journal
      Yep.

      Apple's been inheriting SGI and Sun workstation customers at a pretty good clip over the last couple of years ;-)

      -jcr

      • by jeif1k (809151) on Saturday January 08, 2005 @05:32PM (#11299370)
        Apple's been inheriting SGI and Sun workstation customers at a pretty good clip over the last couple of years ;-)

        Nowhere near as much as Linux has. OS X doesn't make a good substitute for a UNIX workstation (I tried to make it work): they have non-standard administrative interfaces and their X11 server isn't very good and poorly integrated with the desktop.
    • by the pickle (261584) on Saturday January 08, 2005 @04:54PM (#11299065) Homepage
      It's running inside X11 on OS X.

      But yes, it's running on OS X.

      p
    • Re:OSX Screenshots (Score:5, Informative)

      by morrison (40043) * on Saturday January 08, 2005 @05:36PM (#11299394) Homepage
      Indeed it is running on Mac OS X. It's ran on OS X since the early Public Beta days -- the port took me much less time than it's taking me to write this comment.

      BRL-CAD has a long history of running on many systems that range from your average desktop running Linux to Cray supercomputers fully taking advantage of the CPU resources on any of them. Support is presently actively maintained for Mac OS X, Linux, IRIX, and Solaris (*BSD usually just works). Support for Windows is there too, though it's only recently been a focus of development.

      Some legacy platforms include the DEC VAX-11 running 4.3 BSD, DECStations running ULTRIX, SGI 4Ds running various versions of IRIX, Sun-3 and Sun-4 Sparcs running SunOS, the Cray 1, X-MP and Y-MP running UNICOS, the Cray 2, DEC Alpha AXP running OSF/1, the Apple MAC II running A/UX, iPSC/860 Hypercube running NX/2, Alliant FX/8, Alliant FX/2800, Gould SEL, PowerNode, the Gould NP1, NeXT, HPPA 9000/700 running HPUX, the Ardent/Stardent, the Encore Multi-Max, and much more...

      It's also been compiled on many versions of Linux, BSD, AIX, IRIX, Solaris over the years. Keep in mind just how old the project has been actively maintained. Two decades of supporting the latest and greatest is a lot of varied hardware and operating systems.
    • by burns210 (572621) <maburns@gmail.com> on Saturday January 08, 2005 @05:53PM (#11299501) Homepage Journal
      Looks like it. Mac OS X running Apple's X11 software, I believe.
  • by KiloByte (825081) on Saturday January 08, 2005 @02:45PM (#11298063)
    It's not really about the package in question. The important thing here is, if the US Army learns that GPLing their code can be beneficial for them, we can get a very powerful ally.

    Besides, that piece of software was developed for your (and even a bit of my) money anyway...
  • Licensing (Score:2, Interesting)

    by BossMC (696762) on Saturday January 08, 2005 @02:47PM (#11298084) Homepage
    Behold the versatility of the GPL, LGPL, GFDL, and BSD quadra-license! With the viral nature of the GPL, and the total anarchy of the BSDL, it will be unstoppable!

    But really, how come licensing comes to this? Is it from the authors placing more value on different portions of the code, or is it a condition posed by contributors, or what? I am not even barely a lawyer, and all of my personal code is of such little value that charging money or placing much in the way of conditions would be criminal.

    I kind of see multi-licensing as having a different insurance policy for each fender on your car.
    • Re:Licensing (Score:3, Interesting)

      by Heisenbug (122836) on Saturday January 08, 2005 @03:35PM (#11298447)
      I kind of see multi-licensing as having a different insurance policy for each fender on your car.

      With 20 years of active development, it's probably more like having different insurance policies for each vehicle in your car show.
    • by iabervon (1971) on Saturday January 08, 2005 @03:46PM (#11298548) Homepage Journal
      Different portions of the package are intended for use in different ways. It doesn't make much sense to license a work based on content, rather than on functionality, under the (L)GPL; this is the point of the GFDL. The software freedoms don't really make sense for the documentation.

      The GPL and LGPL differ essentially on whether the thing as a whole is intended to be used by itself or plugged into arbitrary other programs. The BSD license is preferrable for things where the code encourages free standards, so the author would benefit from, say, AutoCAD copying it verbatim into their products (which would then be able to exchange files, perhaps).

      It's more like having different insurance policies for your car and for your house. Some things are similar, but you're not worried about people stealing your house or the pipes in your car freezing. The differences in the intended use of the item lead to differences in what the owner wants.
      • by dossen (306388) on Saturday January 08, 2005 @05:04PM (#11299146)
        I actually once heard about a bunch of cars with frozen pipes. Granted, it was japanese cars bound for California, and they were frozen by mistake (they were transported as bulk cargo on a ship with refrigiated cargoholds) during a cooling plant test. But the end result was a lot of cars with pipes (and in a few cases engines) split open by the water freezing and expanding.
        • by bedessen (411686) on Wednesday January 12, 2005 @05:08PM (#11340018) Journal
          Uhh, that's what freeze plugs in the block are for. They are meant to be the weakest link and give way to expansion so that the block can never crack. They've been in cars for probably more than 50 years now.
          • by dossen (306388) on Wednesday January 12, 2005 @06:42PM (#11341274)
            I know, but one a number of the cars, that was not enough! Several engineblocks were split down the middle. And the conditions meant that others could not be inspected before the cars had been driven out of the hold (probably causing some minor damage from runnig without coolant). That's the story as I've been told it by my late uncle who was there (though not in charge of the circus).
  • by freelunch (258011) on Saturday January 08, 2005 @02:51PM (#11298110)
    Back in the day, I requested a copy around '88. The only format available then was 9 track tape. I think I had to send a real letter requesting it and explaining my intent (curiosity, mostly).

    After waiting many weeks, I sent Michael Muuss an email flaming a little (very young and cocky) and asking "Hey, where's my tape!?". I ran across a print out of that email and his reply when I was moving a few years back. He explained that he had to make the tapes himself, etc.

    With much pain, I translated the tape to a QIC cartridge and built it on our Sun gear (I was working at an imaging company). It was a large build.

    Their 3D editor was pretty neat for the day and I did a little with the ray tracer. The package had, no kidding, a lot of heavy duty ballastic tools that I didn't care about.. That was about it.

    But the print out of Muuss' email is a keeper.
    • by chickenwing (28429) on Saturday January 08, 2005 @05:04PM (#11299139) Homepage
      I did the same about ten years ago. I waited a few months and then a huge box arrived with several telephone book sized manuals.

      I am sitting here with the box now, and I see a letter signed by Mike Muuss (xeroxed) revealing the secret password to decrypt the tar files with crypt. I guess now since the contents of these files are now available, there is no harm in me revealing that the password was "alphabeta".
    • by The_Dougster (308194) on Saturday January 08, 2005 @08:35PM (#11300595) Homepage
      I downloaded it around 2000.

      I'd just graduated from college and was surfing around trying the various CAD programs for Linux. It compiled easily enough on my old Debian Potato system.

      I never really used it for anything though. I ran through the tutorial, drafted the 3-d mug, and that was about it. About that time I picked up a copy of TurboCAD Solid Modeler (for Windows) and TurboCAD has been my home drafting package since.

      BRL-CAD probably needs a lot of work on the UI. Functionally, the program is quite sophisticated, but a more mouse-oriented interface would help a lot. That and I don't seem to recall any ability to dimension objects.

      Add some button bars, osnaps, dimensioning, and some printing/plotting options and BRL-CAD could be a really nice drafting package for Open Source operating systems. I'd be suprised if the KDE and Gnome people didn't jump all over this.

  • by pongo000 (97357) on Saturday January 08, 2005 @02:54PM (#11298128)
    Some of you may not realize this, but the Federal government supports F/OSS [gocc.gov]. Several state governments (I know Texas does for certain) have passed mandates and recommendations that encourage and/or require state agencies to consider F/OSS solutions over proprietary solutions.

    Unfortunately, much of this information is squelched by the press, since the press has shown to be woefully ignorant of F/OSS concepts. I would imagine many state and Federal agencies routinely violate rules requiring them to review F/OSS software due to ignorance. I've identified several instances of such a failure in the community college district where I work: Purchases and bids for proprietary software are routinely approved, and when I ask for a list of F/OSS alternatives that were considered, I'm greeted with a blank stare.

    The bottom line is that F/OSS has made inroads, but without oversight from the F/OSS community, many of these initiatives are simply ignored and routinely violated.
    • by Anonymous Coward on Saturday January 08, 2005 @03:13PM (#11298238)
      You couldn't be more wrong. Several states and the federal government have long held that competitive bidding on contracts, including those to supply software, are the ideal in order to save tax payers money. If you've ever been involved with procurement, you'd know that most places have policies AGAINST single-source suppliers. ALL software developed using federal funds is public domain with the exception of those classified for national security reasons. This is not new and is not a result of the FOSS "revolution" (funny, how each generation thinks THEY invented the latest greatest), but rather, has been a long-standing policy. In the 70's and 80's you could send a letter to most any agency and ask for a copy of just about any particular program (you paid for copying and media).

      The FOSS community has made shit for inroads (Unix and the like have been around for 40 years and they don't have a decent share of the desktop environment YET, maybe in another 40 years), but if it suits your ego to think so, go for it.

    • by Greyfox (87712) on Saturday January 08, 2005 @03:17PM (#11298260) Homepage Journal
      Not many contractors really want to sign up for those government contracts. Sure they have big numbers associated with them, but there is usually so much paperwork associated with them that no one wants to deal with it. The companies that are willing to sign up for those contracts are few and far between. Since the playing field is so limited, it doesn't take many Microsoft Whores to tilt the buying decisions in that direction for a lot of government contract work. The Government just assumes that for its money all solutions will be equal, and that's not really the case.
    • by duffahtolla (535056) on Saturday January 08, 2005 @03:32PM (#11298414)
      It's not just FOSS.

      When I was in the 1973rd Com Group (AF), there was a mandate/reg that said any project which required a greater than 30% change in source code was to be redone in Ada.

      The civilians in our shop where clueless with Ada and only passable with COBOL. When one of the ladies was sent back from Ada training due to her complete lack of programing skill, Ada was blacklisted by the department heads.

      From then on all projects that required more than 30% change were divided into smaller projects so they would not be affected by the 30% rule.

      Worse than that, when one of the Sgts converted a project into Ada on his own, he was reprimanded and his code deleted... So much for Government regulations.

      When a change is mandated that will challenge the skill (or lack of it) of an established department, it will be resisted in any and all ways possible. Mereley asking them to consider it will do nothing.

      A tactic similar to EEO is probably the only thing that will ever be effective. ie. 25% of office software shall be FOSS by 2007.

      • by sexylicious (679192) on Friday January 21, 2005 @03:51PM (#11434949)
        They scrapped that thinking about 8 years ago. Now, it's whatever you can do to get the job done. C and C++ are well-liked for a lot of things.

        Also, DoD has mandated that open source options be considered as much as possible for everything that is done. Ada is pretty much dead unless you come across some OLD hardware. It's good that they (DoD) finally realized it was stupid to stick with one language as much as possible. They also opened up almost everything to private contractors, and told them that they can use what they like and do things how they like, but they have to produce a product that works. Where I work, they're going to let several hundred military folks go (PCS'ing for the most part, though some specialties aren't needed anymore...), and the only civilians being brought on are replacing the old-farts-that-should-have-retired-ages-ago into retirement. It sucks in a way, and it's weird seeing private security guards at the base gates, along with MPs/SFs.
    • My woman's been programming for our county for the last year, replacing some recording software. What's interesting is how much trouble it is to convince people that it's okay to replace what they have -- she had to call the state offices to confirm that they did not, in fact, have laws requiring the use of the software made by a particular vendor (out of 3) ... the clerks all thought they had to. It didn't matter what other software was out there, as far as they were concerned, the state required them to buy particular software from particular vendors, and they tacked on the idea that there must be certification involved (but a certification that nobody else would ever be able to get.) Who cares if it's f/oss or not -- if the users who make the requests for purchase orders are convinced there's only one solution, you're going to have a tough time changing anything. I'm sure the existing vendors are happy to encourage these notions at their seminars, too. (I write medical-related software for a tribe; from seeing the data-entry clerks go to seminars for the other vendors, I'm jealous. I want seminars. They make your data-entry people go nuts for you, pretty much forever and no matter what you do to them or how crappy your software is. You won't ever have to worry about bug reports again, if you can just get them to pay a lot of money to go to one of your exclusive club-like seminars where you tell them practically nothing except that they should buy your upgrades.)
    • by lukateake (619282) on Saturday January 08, 2005 @08:13PM (#11300497)
      And the site you linked to (gocc.gov) is running Plone, one of the best open source content management systems out there, IMHO.
  • by cryptochrome (303529) on Saturday January 08, 2005 @03:00PM (#11298162) Journal
    Put this in perspective for me... how does it compare to SolidWorks? I found that super easy to use, but perhaps not as powerful as some other packages.
    • by morrison (40043) * on Saturday January 08, 2005 @07:35PM (#11300257) Homepage
      It really depends on what it is you are comparing. BRL-CAD is primarily a solid modeling system, with tools that span a very wide gamut. It is a very powerful system, but is definately not necessarily "super easy to use" any more so than UNIX is (take that however you may). Quite the contrary, many of the tools can be downright cryptic or counter-intuitive.

      That said, the power of the system's expressiveness, the performance and fidelity of the ray-trace engine, it's ability to deal with massively complex geometries, and more distinguish it quite a distance from many of the commercial projects. Similarly from a developer's perspective, there's now immediate availability to the sourcecode and interaction with developers to make it into whaever is desired.

      The package was never written to be a user-friendly modeler. It was written by computer scientists specifically for the needs of vulnerability and lethality analysts. The tools are very numerical and informative. Many were written in a UNIX-spirit where you can tie tools and inputs/outputs together to achieve some desired end. There is 1 primary graphical tool in BRL-CAD akin to what you'd use in SolidWorks (MGED). There are 400 other command-line tools that do even more.

      Now with the project as open source, hopefully the community will step forward and help make it what they want it to be. The US Army has given the community a great heads start.
    • by iggymanz (596061) on Sunday January 09, 2005 @02:10AM (#11302247)
      I can see from replies by people who are involved in the project that BRLCAD is modelling for analysis, whereas in SolidWorks you have integrated tools for modelling to build, manufacture, document and QA: Bills of material, 2D drawing/perspective/views with dimensioning and tolerances, etc.
  • by iggymanz (596061) on Saturday January 08, 2005 @03:03PM (#11298179)
    Is there a preferred/traditional way to also make 2D drawings/paperspace views of the models with this system? Also, capabilities for multiuser environment? I come from AutoCAD/ProE/AutoTrol background
    • by brlcad (846783) on Saturday January 08, 2005 @10:09PM (#11301088)
      Alas, this is pretty much stricly a 3D package. We've looked at adding 2D capabilities for years, but the cost/benefit ratio was never there. The principle function of the package has been and remains computational analysis of geometry.
      • by iggymanz (596061) on Sunday January 09, 2005 @04:27PM (#11305394)
        thanks for the reply, now of course I'm curious to build BRLCAD and get into code and see if it's possible or sensible to have a way to transform and link geometric entities with an external "paperspace" section view that has all the drafting type entities in it. A couple decades ago in school I did some coursework of numerical methods for computational geometry with various splines and surfaces, will be fun to poke around in there if nothing else.

      • Many 3D packages produce poor 2D drawings. While working with the model in the design phase is very helpful, when the project gets to the prefab shop or field construction phase many of the model's advantages go away.

        This is usually because the fab/erection contractor cannot easily work with the model and keeping track of revisions can be a problem.

        I'm referring to plant design projects that feature a lot of piping in case you missed my URL.

        Great to see that the source is released, maybe we'll see an open-source 3D plant/piping design package running on Linux someday!

        Paul

        PS: Is BRL written for SMP? I'm pretty sure it must be.
  • by Doc Ruby (173196) on Saturday January 08, 2005 @03:07PM (#11298200) Homepage Journal
    Where's the repository of model files? I want to redesign the Navy's floating airport for civilian use in NYC.
  • by ispel (266661) on Saturday January 08, 2005 @03:10PM (#11298220)
    Check out the repository for this project hosted on SF [sourceforge.net]. Here's a link to the readme file history [sourceforge.net] (dates back to 17 years, 11 months ago!!!).

    It is possible they have been using CVS all these years; CVS was publically released in 1896 [wikipedia.org], though I believe they may have alternatively used RCS [wikipedia.org] and migrated to CVS somewhere down the line.

  • by DeadBugs (546475) on Saturday January 08, 2005 @03:21PM (#11298298) Homepage
    I'm not enough of a KDE programmer to know what it would take to port this. I would really like to see something like this in a standard linux distribution along side other great programs like mozilla, open office, GIMP. ETC. (or Koffice, Konqueror, etc.)
  • by Anonymous Coward on Saturday January 08, 2005 @03:37PM (#11298469)
    Given that the licenses are the GPL, LGPL, GFDL, and BSD, wouldn't it be more appropriate for the summary to say that BRL-CAD had been released as Free, rather than Open Source Software? This is Slashdot, where people are expected to know the difference.
  • by Cheerio Boy (82178) on Saturday January 08, 2005 @04:40PM (#11298969) Homepage Journal
    I have BRLCAD installed here on a Sun workstation at home and I can tell you that it takes some getting used to as it's not very user friendly.

    Like most powerful tools it's difficult to learn to use with effectiveness. That and the interface is more than a little clunky

    I honestly prefer things like SolidWorks which while not as powerful is a hell of a lot easier to use.
  • by wikinerd (809585) on Saturday January 08, 2005 @06:12PM (#11299650) Journal
    I thought all US Government material was in the public domain.
  • by Tough Love (215404) on Saturday January 08, 2005 @07:01PM (#11300043)
    I just thought I'd mention OpenCascade [opencascade.org]

    Very much underappreciated:

  • After growing up on Povray, I find that mesh-based modellers just feel far too fuzzy and vague to be at all useful. How are you supposed to do anything precisely by hauling points around by hand? What are you supposed to do if you discover that you wanted to change your mind about something half an hour ago? Do it all again? Ugh.

    CSG allows a completely different approach, more like programmer, that suits me far better. I'm currently 50% of the way through the download. Kewl.

    On an unrelated note, I suspect the 280kB PNG on their home page is causing them loads of pain at the moment...

    • by Pseudonym (62607) on Saturday January 08, 2005 @09:14PM (#11300808)
      After growing up on Povray, I find that mesh-based modellers just feel far too fuzzy and vague to be at all useful. How are you supposed to do anything precisely by hauling points around by hand? What are you supposed to do if you discover that you wanted to change your mind about something half an hour ago? Do it all again?

      You wouldn't say this if you'd ever used a decent mesh-based modeller. The graph-based systems of modellers like Maya and Houdini give you the best of both worlds: CSG if that's appropriate, and mesh-based modelling with the ability to edit any part of the history if that's appropriate.

      • by ikekrull (59661) on Saturday January 08, 2005 @10:13PM (#11301108) Homepage
        You would say that if you want to use traditional CAD methods like radius/chamfer instead of extrude/bevel etc.

        You would definitely say it if you wanted to create manufacturable models and communicate their parameters to a manual or automated machining process.

        You would say that if you need parametric modelling based on aspects of the model itself - e.g. you want your modelling tool to retain the relationships between entities in your model automatically - e.g. a dowel-piece is always .005mm smaller in radius than the hole it fits into etc. etc.

        Trimmed NURBS are about the only primitives Maya/Houdini share with 'real' solid modelling tools, and their implementation is focussed on a completely different use-case.

        CSG on parametric solids is a different kettle of fish from mesh-based CSG - and it is way, way more restrictive when it comes to organic modelling and fast workflow - which is what apps like Maya and Houdini are all about.

        Mesh-based modellers (and most NURBS-based modellers that are useful for general purpose modelling) do *not* cater to CAD-like construction and output (e.g. dimensioned drawings, constraint-based modelling) workflow, least of all apps like Maya. Houdini has a much more procedural approach, but i don't see anybody doing large-scale rapid protyping, mechanical design or engineering analysis with Houdini. If you'd like to provide an example of an organisation that switched from AutoCAD, Pro/Engineer or SolidWorks to Houdini/Maya for mechanical design purposes - go right ahead.

        Parametric solids-based modelling for mechanical design uses a completely different approach than surface-based modelling for animation/presentation, and there is a lot less of a crossover between the toolsets than you wqould think.

        • by Pseudonym (62607) on Sunday January 09, 2005 @07:16PM (#11306286)
          Trimmed NURBS are about the only primitives Maya/Houdini share with 'real' solid modelling tools, and their implementation is focussed on a completely different use-case.

          I thought it was fairly clear that the poster that I was replying to was interested in the same use case as Maya/Houdini (coming from POV-Ray), rather than CAD.

          I can certainly see why solid modelling would be a distinct advantage in CAD. People in the entertainment industry, on the other hand, want both in general. The reason why I mentioned this is that I suspect the original poster claimed to want CSG when in fact they just wanted nonlinear editing.

  • by starseeker (141897) on Saturday January 08, 2005 @09:44PM (#11300977) Homepage
    One of the complaints I hear most often about open source is the lack of powerful, free CAD software, and it's one of the few where the complaint is completely justified.

    BRL-CAD is not your typical college student weekend project - this thing is INDUSTRIAL STRENGTH and used in the REAL WORLD for years and years. This news just made my day, and I hope to put an ebuild up soon, given how clean the make process has been thus far :-).

    This is a great way for open source to get high powered applications - older products that have the power but not necessarily the modern interfaces. Maxima and Axiom are two other examples of projects far beyond the scope of ordinary open source, that were originally developed in government/industry and then released to the world. Blender is still another.

    So thanks to people giving some of the great but older applications new life again - it tremendously enriches the open source world and saves decades of coding by brilliant people!
  • by 4of12 (97621) on Monday January 10, 2005 @03:29PM (#11312654) Homepage Journal

    I've recently had cause to investigate design tools to a degree that I had not previously.

    My preference is open source. So imagine my dismay at finding that not just that the business world is held hostage to .doc, .xls, .ppt but that the design world is held hostage to .dwg .

    I saw some hope in the Open Design Alliance [opendesign.com], Open Cascade and some of the free CAD tools, but the range of secret but widely-used import and export formats that the commercial tools offer seem to make them an essential purchase for doing CAD work or development. That, in turn, is a barrier to entry to the development of free tools. Eg, the IGES standard, which is hard to find documented publicly, for free, seems to have more warts than a six ton toad because of decades of committee-added features.

    The temptation to establish and own a standard is too high to resist given the return on investment that can be obtained.

    I'm happy to see standard formats and commonly-used tools make their way to the free world so that vendors concentrate on true value-added products and services instead of milking windfalls of our IP-mad society.

Outside of a dog, a book is man's best friend. Inside of a dog, it is too dark to read.

Working...