Editing Community Publication Portal
From BRL-CAD
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 43: | Line 43: | ||
==Final Review== | ==Final Review== | ||
+ | ====Wanted - Software Maintainer for Windows Binary Platform==== | ||
+ | We need a software maintainer/release maintainer. Maintainers are needed for free and open source software to perform a variety of tasks. As BRL-CAD is a cross-platform system it has maintainers allocated to many binary platforms but does not currently have one for Windows. We are looking for someone to fill this job as it’s an essential role when releasing software. | ||
− | + | Role of a Software Maintainer | |
− | |||
− | + | A maintainer is someone who is basically willing to support creating the release for a particular platform (In this case Windows). They would be required to undertake a lot of work but this would prove very satisfying as there are thousands of binary downloads every month. This would mean a vast number of users would be making use of software you had contributed to. Overall as a maintainer you would be supporting our software on the Windows platform. | |
+ | Below are some of the typical responsibilities you would have as a software maintainer to give you an idea of the type of work you could potentially be doing. | ||
+ | • Building source code into a binary package (Windows) for distribution | ||
− | + | • Commit patches | |
− | |||
− | + | • Organize code in a source repository | |
− | + | • Cryptographically signing binaries (for verification of a person’s authenticity) | |
− | + | • Naming a binary release | |
− | + | • Patching a release | |
− | + | • Compiling a binary release | |
− | + | • Posting a binary release | |
− | + | • Create/Prepare notes on a binary release | |
− | + | • Announce binary release | |
− | + | • Platform-specific fixes | |
− | + | • Investigate platform-specific (Windows) issues, bugs and requests. | |
+ | Being a software maintainer is a useful experience which can broaden your career prospects. To find out more or to indicate your interest, announce your interest either through: | ||
− | + | - BRL-CAD devel Mailing List - http://sourceforge.net/p/brlcad/mailman/brlcad-devel/ | |
− | + | - BRL-CAD IRC Channel - http://brlcad.org/wiki/IRC | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | BRL-CAD IRC Channel - http://brlcad.org/wiki/IRC | ||
Further Information | Further Information | ||
− | |||
If you wish for more detail about releases on BRL-CAD, visit this link: http://svn.code.sf.net/p/brlcad/code/brlcad/trunk/HACKING | If you wish for more detail about releases on BRL-CAD, visit this link: http://svn.code.sf.net/p/brlcad/code/brlcad/trunk/HACKING | ||
(Go to the section on releases near the bottom of the page) | (Go to the section on releases near the bottom of the page) | ||
− | |||
For a definition of a Software/Release maintainer, visit this link: | For a definition of a Software/Release maintainer, visit this link: | ||
http://en.wikipedia.org/wiki/Software_maintainer | http://en.wikipedia.org/wiki/Software_maintainer | ||
− | |||
Article written by Alexander Lotsu | Article written by Alexander Lotsu | ||
− | ====Google Code In 2013 | + | ====Google Code In 2013 Announcements==== |
− | + | Out of only 10 chosen, its glad to announce that BRL-CAD was accepted to participate in [http://www.google-melange.com/gci/homepage/google/gci2013 Google Code-In (GCI)]! It is the second consecutive year in which BRL-CAD is participating. Complementary to the highly successful Google Summer of Code program for university students, GCI is a contest encouraging pre-university students (age 13-17) to get involved with open source. Students will work our [http://brlcad.org/wiki/GCI_Tasks "itty-bitty "] tasks related to code, documentation/training, outreach/research, quality assurance, and user interface. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | The BRL-CAD open source community is honored to be selected for GCI, now in a forth year running. With no shortage of introductory tasks helping improve the state of open source CAD, students may begin making submissions on November 18,2013. For a detailed timeline of important events and more information please review the [http://www.google-melange.com/gci/document/show/gci_program/google/gci2013/help_page Frequently Asked Questions] For an introduction and itemization of all organizations participating in GCI, see the Google Open Source [http://google-opensource.blogspot.in/2013/11/mentoring-organizations-for-google-code.html Blog ] and watch their [http://www.youtube.com/watch?v=CW5yNIDPZeY screencast]. | |
====BRL-CAD Accomplishments : GCI 2012==== | ====BRL-CAD Accomplishments : GCI 2012==== | ||
Line 185: | Line 139: | ||
Pl: Would you continue to contribute to BRL-CAD? | Pl: Would you continue to contribute to BRL-CAD? | ||
− | An: Of course ! I continued to contribute even after Google Summer of Code. Even if my contributions aren't as numerous as I would like because of my crowded academic schedule, I am trying t | + | An: Of course ! I continued to contribute even after Google Summer of Code. Even if my contributions aren't as numerous as I would like because of my crowded academic schedule, I am trying to contribute for as much as possible. Contributing to BRL-CAD helps me improve knowledge as well as providing code that is actually useful for a large number of people. |
+ | |||
+ | |||
+ | ====Google Summer of Code: Jianbang Wu==== | ||
+ | by: John | ||
+ | |||
+ | This article is based on some questions I asked Jianbang and in his profile page. | ||
+ | |||
+ | Jianbang Wu (also known as Phoenix) participated in BRL-CAD development during Google Summer of Code 2012. His work was "to convert implicit Constructive Solid Geometry (CGS) primitives to boundary representations (BREPs)". He is a sophomore student in Peking University, China. | ||
+ | His skills involve C/C++, Object Oriented Programming, data structures, algorithms, math, and image processing. | ||
+ | |||
+ | Jianbang chose to apply to BRL-CAD because "The mentors of BRL-CAD are really nice. :)" and because he loves computer graphics and math. | ||
+ | He started working without any Computer Aided Design (CAD) software experience, which he learned during the summer. | ||
+ | He worked on two projects: | ||
+ | |||
+ | First, he followed Cliff's suggestion: "Implicit to NURBS conversion". This consisted in the conversion from implicit primitives to Non Uniform Rational Basis Spline (NURBS) primitives. In this project he also modified some unfinished conventions and added some new primitives. | ||
+ | Since he finished this task before the mid-term evaluation, he decided to make a follow-up: "NURBS surface-surface intersection". | ||
+ | |||
+ | Finally, he suggests future Google Summer of Code students to "Follow your interest, choose the project you like, and you will find Google Summer of Code really an excellent experience". | ||
+ | |||
+ | You can check out some images related with his work here: | ||
+ | |||
+ | http://brlcad.org/wiki/User:Phoenix/GSoc2012/Reports#Test_Results | ||
+ | |||
+ | Related with his first work: | ||
+ | * m35.g: component (left: implicit + csg, right: brep + csg) | ||
+ | [[Image:M35.implicit.png]] [[Image:M35.brep.png]] | ||
+ | |||
+ | Related with his second work: | ||
+ | * The intersection curves (green) of a tgc (red) and an epa (blue). (Two segments) | ||
+ | [[Image:Tgc epa.png]] | ||
+ | |||
+ | John is a Google Code-In student living in Portugal. He's favourite language is Python although he's considering to widen his knowledge to C. | ||
+ | |||
+ | ==== Linux Release Packaging Process: A mission for Jordi Sayol ==== | ||
+ | By: John | ||
+ | |||
+ | Jordi Sayol is the man behind the automation of the BRL-CAD Linux release packaging process, which he recently finished. His work continues the one made previously by Manuel A. Fernandez Montecelo in .dbm packages. | ||
+ | |||
+ | This article is based on some questions I asked him and on an interview made to Jordi by Gala, a Google Code-in student. | ||
+ | |||
+ | Jordi has been working with BRL-CAD since January 2011,with his Linux experience (as advanced user) as his only companion. By that time, he started to collaborate on-line with other BRL-CAD team members. | ||
+ | |||
+ | With such a massive project, which has millions of lines of code, he decided to take as his responsability the building of binary packages for Linux systems, since he's not a programmer. | ||
+ | |||
+ | In both interviews, he explains quite accurately the process of making those. He has made two scripts that automate the whole work. What the scripts do is to handle all the pre-building proccess and then create the packages. "In fact the building job is done by debhelper to create deb packages, and the rpmbuild command to create rpm packages. The scripts tries to ensures that all dependencies needed by these commands are available, copy Linux specific files, create configuration files, etc. before building the packages". | ||
+ | The scripts allow anyone to easily create their own deb/rpm packages as needed", since they "create deb/rpm packages for the host architecture where they are executed". | ||
+ | This allows BRL-CAD to be distributed Debian-like and Fedora-like systems, which means a great variety of platforms where BRL-CAD will be able to work. Unfortunately, since Fedora and OpenSUSE don't share the same nomenclature, their rpm packages must be separate ones. | ||
+ | The scripts can be found at the "sh" folder when you download the BRL-CAD sources. | ||
+ | |||
+ | Since he is not a programmer (only an advanced Linux user), he won't develop other parts of the code, but I think all the BRL-CAD community can be grateful for what he has done. | ||
+ | |||
+ | by John. | ||
+ | |||
+ | John is a Google Code-In student living in Portugal. He's favourite language is Python although he's considering to widen his knowledge to C. | ||
+ | |||
+ | Gala Taylor is a 2012 Google Code-In participant. Although she has used various Free and Open Source Software (FOSS) products over the years, and has contributed example files and tutorials to several projects, this is the first time she has actively participated in the development of FOSS code. Gala is currently in 9th grade, and her favorite computer language is Java. | ||
+ | |||
+ | ==== Gala Taylor: New BRL-CAD Linux Release Packaging Process Automation ==== | ||
+ | By: Gala Taylor | ||
+ | |||
+ | BRL-CAD supports Debian, Ubuntu, Fedora, and openSUSE, and other Linux distributions. Jordi Sayol recently finished automating the BRL-CAD Linux release packaging process, and he took some time out to chat with Gala Taylor about it - and also answer some question about what it's like to work on the BRL-CAD project. | ||
+ | |||
+ | '''Gala Taylor (GT)''': How long have you been working on the BRL-CAD project? | ||
+ | |||
+ | '''Jordi Sayol (JS)''': I've been involved with the BRL-CAD project since January 2011. | ||
+ | |||
+ | '''GT''': How much education and experience were required to prepare you to contribute to the BRL-CAD project? | ||
+ | |||
+ | '''JS''': My experience is just as an advanced Linux user. | ||
+ | |||
+ | '''GT''': Do you need to physically meet with the other team members in order to contribute to the BRL-CAD project, or is it sufficient to work on-line? | ||
+ | |||
+ | '''JS''': All of my collaboration is done on-line. | ||
+ | |||
+ | '''GT''': The BRL-CAD project is a collection of over four hundred tools, utilities and applications, with over a million lines of source code. With such a massive and complex system, how do you decide what to work on? Is it necessary to understand all that code in order to contribute to the project? | ||
+ | |||
+ | '''JS''': My responsibility is focused on building binary packages of BRL-CAD for Linux systems. | ||
+ | |||
+ | '''GT''': Besides the release processing work which is described in the HACKING file, can you walk me through the process of actually transforming a developer’s checked-in source code into an .rpm or .deb that is ready to be downloaded and installed? | ||
+ | |||
+ | '''JS''': It's quite simple. I have created two bash scripts that automate this process. The "sh/make_deb.sh" script creates a deb package installable on Debian-like systems. This currently includes Debian, Ubuntu, Linux Mint, and other distributions. The "sh/make_rpm.sh" script creates an rpm package for Fedora-like systems. This includes Fedora, Centos, Redhat, and some other distributions, or OpenSUSE, depending on the system where it is built. There are separate rpm packages for Fedora and OpenSUSE because they do not share the same nomenclature on their packages. Note also that both scripts create deb/rpm packages for the host architecture where they are executed, and that the results are currently only tested on x86_32 and x86_64 hosts. | ||
+ | |||
+ | With these scripts, anyone can easily create their own deb/rpm packages as needed. This is especially useful if the user wants to install BRL-CAD on a very old system, maybe requiring special compilation for specific graphic cards drivers, etc. | ||
+ | |||
+ | '''GT''': Thank your for your time today and your contributions to BRL-CAD, Mr. Sayol! | ||
+ | |||
+ | '''JS''': It was a pleasure. | ||
+ | |||
+ | |||
+ | Please visit the BRL-CAD project website for more information: http://brlcad.org | ||
− | |||
− | |||
− | + | '''Jordi Sayol''' is the maintainer of the BRL-CAD Linux release packaging process. | |
− | |||
− | + | '''Gala Taylor''' is a 2012 Google Code-In participant. Although she has used various Free and Open Source Software (FOSS) products over the years, and has contributed example files and tutorials to several projects, this is the first time she has actively participated in the development of FOSS code. Gala is currently in 9th grade, and her favorite computer language is Java. | |
− | + | ---- | |
− | ==== | + | ==== Kyle Bodt: Ronja ==== |
− | + | http://brlcad.org/wiki/Ronja | |
− | + | Ronja (Reasonable Optical Near Joint Access) is an innovative piece of equipment that utilizes reliable optical data links to create a current communication range of 1.4 km and a speed of 10Mbps full duplex that can be used as a general purpose wireless link for virtually any networking project. This is a very important project for Twibright Labs, a small group of computer science graduate students operating out of Charles University in Prague in the Czech Republic. The group specializes in the usage of Free Software and User Controlled Technology Development. | |
− | + | The primary output for the Ronja project is a design. The lab does not intend to manufacture and sell the hardware that is being designed but wants to engage in open source development of the technology. The philosophy surrounding User Controlled Technology is the ideal that the end-user is provided with unrestricted access to the intellectual property surrounding the technology, including the tools that are being used to create it. One tool playing an integral part in the development of the Ronja designs is BRL-CAD. All of the models that Twibright labs use to display the different variants of their Ronja concept were created with the help of BRL-CAD. BRL-CAD has allowed the members of Twibright labs to create instructional diagrams so that the users and builders of their open source technology will be able to have the latest information with regard to the proper construction of a Ronja unit. The interactive geometry editor and ray-tracers in BRL-CAD are an integral part in the communication of design plans for Twibright labs and enables them to connect with the users, who are the driving force behind the User Controlled Technology ideal. | |
+ | |||
+ | ---- | ||
+ | |||
+ | == Initial Drafts == | ||
+ | These are incomplete articles being worked on. Short 250 to 500-word articles (not counting tables, images, etc) are usually perfect. | ||
==== Documentation Redux ==== | ==== Documentation Redux ==== | ||
Line 414: | Line 460: | ||
A/N: Written as a Google Code-in 2013 task. | A/N: Written as a Google Code-in 2013 task. | ||
− | BRL-CAD is a | + | BRL-CAD is a software based on decades of development and contains over a million lines of code. Any project of such magnitude is bound to face problems with ensuring consistency and high standards across its various aspects. The core team behind BRL-CAD, however, have sought to alleviate such issues as far as possible, and hence have put in place an extensive range of measures designed to maintain and improve the quality and maintainability of its code. |
− | + | As an open-source software, BRL-CAD relies on input from numerous developers, both existing and new, from across the world. With individual developers having differing methods and standards of coding, the quality and styles of each contributor’s code are likely to vary. Thus, the BRL-CAD team has ensured that all developers have easy access to the same guidelines and tools used to ensure code consistency and quality. | |
+ | |||
+ | A ‘HACKING’ document included with the rest of the software gives a detailed description of the universal guidelines and good practices in all BRL-CAD code, for easy reference by contributors. The scope of these guidelines include formatting issues, such as indentation and stylistic whitespace conventions; code organization, including the locations where various types of code should be stored in; and code conventions, for example the discouraging of the use of global variables within code. Furthermore, the document also provides general guidelines for miscellaneous aspects of development such as the incrementing of version numbers, handling of bugs or unexpected behavior, and submission of patches. | ||
+ | |||
+ | BRL-CAD encourages the use of various tools to make it easier for developers to check for problems or errors in their code. One of these is the Simian similarity analyzer, a frequently used program that searches for instances of code that is repeated across multiple files. This is particularly useful given the inevitable duplication resulting from decades of development. Developers can then use the findings of the analyzer to refactor the largest or most frequently duplicated code into reusable, space-saving functions. | ||
[[Image:Simian_analysis_sample_output.PNG]] | [[Image:Simian_analysis_sample_output.PNG]] | ||
''Sample output of Simian similarity analyzer. Screenshot courtesy of BRL-CAD wiki.'' | ''Sample output of Simian similarity analyzer. Screenshot courtesy of BRL-CAD wiki.'' | ||
+ | |||
+ | BRL-CAD also has an built-in tool to allow developers to easily check for errors within their code. The CPPCHECK-CLEANUP tool can be called with a single line of input into the command line interface, and checks for issues in all of the source code files. The tool can be customized to search only for specific issues, such as those relating to style or unused functions. | ||
[[Image:CPPCHECK-CLEANUP_sample_output.PNG]] | [[Image:CPPCHECK-CLEANUP_sample_output.PNG]] | ||
Line 426: | Line 478: | ||
''Sample output of CPPCHECK-CLEANUP tool. Screenshot courtesy of BRL-CAD wiki.'' | ''Sample output of CPPCHECK-CLEANUP tool. Screenshot courtesy of BRL-CAD wiki.'' | ||
− | BRL-CAD enforces the practice of strict compilation, treating all of the compiler’s warnings as matters that have to be resolved before development can proceed | + | BRL-CAD enforces the practice of strict compilation, or the treating of issues detected by the compiler as errors instead of mere warnings. This acts as another safety barrier for the detection of potential problems with the code. By treating all of the compiler’s warnings as matters that have to be resolved before development can proceed, any detected issues that are in actual fact errors can be fixed. Even false positives, or incorrectly detected errors, are often due to weaknesses in the code that can hinder development or increase the risk of bugs or failures in the future, and these can also be dealt with. |
− | + | To further deal with any errors that may have slipped into the code, BRL-CAD has since 2006 participated in the Coverity Scan Initiative, where a thorough static source code analysis is performed and a detailed list of detected problems generated. | |
[[Image:CoverityExample2.png]] | [[Image:CoverityExample2.png]] | ||
Line 434: | Line 486: | ||
''Coverity analysis showing secure coding suggestions. Image courtesy of BRL-CAD wiki.'' | ''Coverity analysis showing secure coding suggestions. Image courtesy of BRL-CAD wiki.'' | ||
− | + | After the 2011 edition of the scan, a team of core developers met up in person and spent a week inspecting and fixing over fifteen hundred of these issues. Consequently, BRL-CAD’s defect density was reduced to just 0.22 defects per thousand lines of code- less than a quarter of the industry average. In addition, a publicly available document was created to present a peer-reviewed, tested and documented workflow for addressing issues reported in the Coverity Static Analysis, to aid further resolving of the reported problems as well as future maintenance of code. | |
− | |||
− | |||
− | |||
− | |||
− | |||
---- | ---- | ||
− | |||
− | |||
− | |||
− | |||
== Idea Hopper == | == Idea Hopper == |