Difference between revisions of "Deuces"
m (Corrected spelling mistakes) |
m (Deleted Bounding box optimization task) |
||
Line 35: | Line 35: | ||
| | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
| | ||
| |
Revision as of 12:44, 24 October 2020
This is a list of succinct tasks that are expected to take most people familiar with the prerequisites less than two hours to complete. It's a great starting point for anyone interested in contributing to BRL-CAD.
The tasks are all roughly the same complexity with no prior BRL-CAD experience expected. A description is provided along with a list of references and files you'll probably need to edit. Can we make it any easier?
Getting Started
Contact us (via IRC or brlcad-devel mailing list) if you have questions, comments, or ideas of your own you'd like to suggest.
We've made an awesome virtual disk image that has everything you need preconfigured and ready to go:
- Download our BRL-CAD Virtual Machine (VM) disk image.
- Install VirtualBox.
- Import and start the VM, log in (the password is "Brlcad!" without the quotes).
- Run "svn up brlcad-svn-trunk" and get started!
Pick a Task
We break down all tasks into one of five categories. Don't be worried if the tasks all sound confusing to you. Just pick one and start reading the references we've provided. Join IRC or our mailing list and ask questions.
- Code (programming)
- Documentation and Training (writing)
- Outreach and Research (graphics)
- Quality Assurance (testing)
- User Interface (designing)
Contents
- 1 Getting Started
- 2 Pick a Task
- 2.1 Code
- 2.1.1 Close MGED when both windows are closed
- 2.1.2 Implement a primitive centroid function
- 2.1.3 Implement a primitive curvature function
- 2.1.4 Implement a primitive UV-mapping callback
- 2.1.5 Implement a platform independent re-entrant sort function
- 2.1.6 Solve fonts related bug in new wiki theme
- 2.1.7 Better placement of icons in wiki theme
- 2.2 Documentation and Training
- 2.2.1 Add missing documentation (for any ONE command)
- 2.2.2 Write an article "BRL-CAD for dummies"
- 2.2.3 Translate "Contributors Guide To BRL-CAD" To Any Language
- 2.2.4 Write a "BRL-CAD Commands Quick Reference" document
- 2.2.5 Doxygen cleanup
- 2.2.6 Write up Wiki page tutorial on our Volumetric Primitive
- 2.2.7 Write a wiki tutorial on how to create a polygonal mesh (NMG) manually
- 2.2.8 Fix Image Formatting in BRL-CAD's DocBook Documentation (any ONE large document or 4 smaller documents)
- 2.2.9 Make a step by step tutorial for creating BRL-CAD model
- 2.2.10 Find 5 bugs in OGV
- 2.2.11 Find 5 coding guidelines violations in OGV
- 2.3 Outreach and Research
- 2.3.1 Profile NURBS prep performance
- 2.3.2 Continue investigating GMP integration
- 2.3.3 Design a T-Shirt for BRL-CAD
- 2.3.4 Design a coffee mug for BRL-CAD
- 2.3.5 Design BRL-CAD sticker
- 2.3.6 Design BRL-CAD phone/tablet back cover
- 2.3.7 Design a wallpaper set for BRL-CAD
- 2.3.8 Create Iron Man Arc Reactor Model in BRL-CAD
- 2.3.9 Tweak BRL-CAD logo to wish New Year
- 2.3.10 Tweak BRL-CAD logo to wish Merry Christmas
- 2.4 Quality Assurance
- 2.5 User Interface
- 2.5.1 Create an ISST screenshot or animation
- 2.5.2 Categorize all of BRL-CAD's commands into a spreadsheet
- 2.5.3 Design a Cover Photo for Facebook page (and other social networks)
- 2.5.4 Design a banner ad for BRL-CAD
- 2.5.5 Creating Motion Typography video for BRL-CAD
- 2.5.6 Create a screen-cast for BRL-CAD
- 2.5.7 Loading Google charts from API
- 2.5.8 Design a hall of fame for BRL-CAD developers
- 2.1 Code
- 3 When You're Done
Code
Tasks related to writing or refactoring code
See the When You're Done section above for details on submitting your changes.
Close MGED when both windows are closedBRL-CAD has an interactive geometry editor called MGED. It's often the starting point for beginners and allows creation and manipulation of models using commands. When mged is run, it creates 2 windows: a text-console command window and an interactive graphics window. When the user closes one of those windows, there is a bug. Closing the graphics window closes the command window. This task involves fixing this behavior so that ONLY closing both windows terminates the process properly and that closing either window does not take the other along with it. Code:
|
Implement a primitive centroid functionBRL-CAD provides more than two dozen types of geometry "primitives" such as ellipsoids, boxes, and cones. Every primitive is described by a collection of callback functions, for example rt_ell_bbox() returns the bounding box dimensions for an ellipsoid. Wikipedia, Wolfram Mathworld, and various other math sites (and research papers) around the web include the equations for most of our basic primitives while others are a little more tricky to compute. This task involves writing a new callback function that takes an rt_db_internal object and calculates its centroid (as a point_t 3D point). There are numerous examples in our code where we compute centroids for other primitives. The primitives that do not already have a centroid callback are itemized in following. References:
Code:
|
Implement a primitive curvature functionBRL-CAD provides more than two dozen types of geometry "primitives" such as ellipsoids, boxes, and cones each described by a collection of callback functions, for example rt_sph_bbox() returns the bounding box dimensions for a sphere. Wikipedia, Wolfram Mathworld, and various other math sites (and research papers) around the web include the equations for most of our basic primitives while others are a little more tricky to compute. This task involves writing the callback function rt_xxx_curve() that computes the curvature at a given point on the surface of a primitive such as;
There are numerous examples in our code where we compute the curvature for other primitives like the ellipsoid, sphere, elliptical parabola, etc. References:
Code:
|
Implement a primitive UV-mapping callbackBRL-CAD provides more than two dozen types of geometry "primitives" such as ellipsoids, boxes, and cones. Every primitive is described by a collection of callback functions, for example rt_ell_bbox() returns the bounding box dimensions for an ellipsoid. One of those functions describes a UV mapping of the object's surface, which is used for things like texture and bump mapping. An example of this is rt_ell_uv() in the src/librt/primitives/ell/ell.c source file for an ellipsoid. Several of our more complex primitive types (such as BoT, NMG, and BREP/NURBS) do not presently implement a UV-mapping function leading to unexpected runtime behavior. This task involves implementing a UV-mapping callback for any of the primitives that do not already have a functional UV-callback defined. Note that this is an advanced task that might take you more than a couple hours if you don't have solid coding skills, but it's ultimately just a few lines of code. See other primitives that already implement a UV-mapping callback for reference. References:
|
Implement a platform independent re-entrant sort functionThe classic C library qsort() does not support a context parameter. A work around is to store the context information in a static variable. However, this solution is not thread save and may result in unpredictable behavior. There are platform specific sort functions qsort_r() in incompatible versions for BSD and GNU and qsort_s() for MSVC. Your task is to implement a bu_sort() function for BRL-CAD which is platform independent. Code:
The new sort function could look like this: void bu_sort(genptr_t array, size_t nummemb, size_t sizememb, int (*compare)(const_genptr_t, const_genptr_t, genptr_t), genptr_t context); |
|}
BRL-CAD has been working on a new incarnation of the website and has developed a new wiki theme and wordpress theme. Wiki theme uses a font called 'open-sans' from google fonts directory. It's linked via CSS but it does not get loaded (we still see default serif all over the place). So your task will be to debug the CSS code and get Open Sans loaded. Links:
|
Better placement of icons in wiki themeBRL-CAD has been working on a new incarnation of the website and has developed a new wiki theme and wordpress theme. Wiki theme is responsive but has a small styling problem. On smaller screens icons near the search bar gets misplaced and unaligned. Your task would be to fix that. Task would include diving into sass file that corresponds to styling of this part of theme (given below) and adjusting spacing between icons to keep them aligned even at smaller screens. Links:
|
Documentation and Training
Tasks related to creating/editing documents and helping others learn more about BRL-CAD
Add missing documentation (for any ONE command)BRL-CAD is an extensive system with more than 400 commands and more than a million pages of documentation, but there are approximately 120 commands that are entirely undocumented: a-d archer asc2g asc2pix bot-bldxf bottest brep_cube brep_simple brickwall btclsh burst bw-a bw-d bwish c-d chan_add clutter contours d-a damdf dauto dauto2 d-bw dconv ddisp d-f dfft d-i dmod double-asc dpeak dsel dsp_add dstat d-u dwin euclid_format euclid_unformat fbgammamod f-d fence fhor f-i g-adrt g-euclid1 g-jack globe g-off i-a i-d i-f ihist imod istat jack-g kurt lowp molecule nmgmodel nmg-sgp off-g pipe pipetest pix2g pix3filter pixcount pixelswap pixembed pixfields pixfieldsep pixflip-fb pixpaste pix-spm pix-yuv plstat pyramid rawbot remapid rlesortmap rletovcr room rtcell rtexample rtfrac rtrad rtsil rtsrv script-tab sketch solshoot sphflake spltest spm-fb ssampview syn tea tea_nmg testfree texturescale torii ttcp tube txyz-pl u-a u-bw u-d u-f umod ustat vcrtorle vegitation wall wdb_example xbmtorle xyz-pl yuv-pix This task involves writing basic documentation for JUST ONE of those commands in the Docbook XML format. The command documentation should provide a one-sentence description, a detailed paragraph description (200+ words), explanation of all available command-line options, and one or more examples on how to use the command. Code:
|
Write an article "BRL-CAD for dummies"Although BRL-CAD has extensive documentation, still it needs a short and simple document which is particularly built for dummies. This task involves writing a article named BRL-CAD for dummies. This article should start with the installation process, if there is any existing installation guide for dummies, provide a link to it. The main motive of this article to empower dummy to make his/her first model using BRL-CAD. One thing to be kept in mind while writing this article is that this article is mainly concentrated for dummies. So use simple language to an extent and if you need to mention some technical term, first explain that term. The output of this task can be a pdf, html, doc, odt or any other document file that contains this article. Go through the link provided. Use screenshots and images to make it look attractive so that the reader is not bored. Reference: |
Translate "Contributors Guide To BRL-CAD" To Any LanguagePeople interested in improving BRL-CAD sometimes find themselves lost in a sea of information. In all, BRL-CAD has more than a million words of documentation across hundreds of manual pages, dozens of tutorials and examples, hundreds of wiki pages, dozens of technical papers, and other resources. There are literally thousands of features and this can sometimes pose problems. In 2013, a team of contributors got to California and worked on an entire book titled "Contributors Guide To BRL-CAD" in just a few days. This great resource needs to be translated to other languages to attract developers from other lingual backgrounds (who don't read English ) to contribute to BRL-CAD. This task involves translating the chapters/sections of the "Contributors Guide To BRL-CAD" into a language of your choice such as Mandarin, French, Chinese, Spanish, German, Hindi, Arabic, Russian, etc. Chapters/Sections include
The output of this task can be a pdf, html, doc, odt or any other document file that contains the translated article.Images in the original document (see link in Reference below) should not be changed ! only text should be. Reference: |
Write a "BRL-CAD Commands Quick Reference" documentThere is already a command quick reference for BRL-CAD's MGED geometry editing tool, but there is not a similar document for BRL-CAD's 400+ command-line commands. This task involves writing a quick reference document similar to the MGED quick reference but for BRL-CAD commands. The sheet should minimally include the following commands: mged, rt*, *-g, g-*, fb*, *fb, nirt, remrt, rtsrv, asc2g, g2asc, dbupgrade, pix*, *pix, *-*, brlman, benchmark References: |
Doxygen cleanupBRL-CAD uses Doxygen for most API documentation but the comment blocks are not optimally set up for Doxygen output. This task involves cleaning up the Doxygen comments in the library so that useful reports and API documentation automatically generated (correctly, completely, and cleanly). Verify/fix any Doxygen syntax. Verify/fix groups so that functions are organized neatly and all contained within a group. Provide patches that give clean (PDF) output from Doxygen. References:
|
Write up Wiki page tutorial on our Volumetric PrimitiveBRL-CAD provides a couple dozen distinct primitives. Each primitive is defined by a set of parameters. Several of the more complex primitives have a wiki page describing them in more detail with an example on how to create them. This task involves writing up a page on the VOL primitive. Figure out how to use it (see the "in" command), create an example input data set, and write up a wiki page on exactly what steps are needed similar to our other wiki pages: References:
Show how to create a VOL with at least two layers/slices. Include images like the other examples. Put the write-up at http://brlcad.org/wiki/VOL |
Write a wiki tutorial on how to create a polygonal mesh (NMG) manuallyBRL-CAD provides a couple dozen distinct primitives. Each primitive is defined by a set of parameters. Several of the more complex primitives have a wiki page describing them in more detail with an example on how to create them. This task involves writing up a page on the NMG polygonal mesh primitive. Figure out how to use it (not a simple task, will require some trial and error), create an example input, and write up a wiki page on exactly what steps are needed similar to our other wiki pages: References:
Note the "facetize" command in mged will convert an existing object into NMG format. The get/put commands should help from there like the sketch tutorial. Show how to create an NMG cube or wedge or similar simple shape. Include images like the other examples. Put the write-up at http://brlcad.org/wiki/NMG |
Fix Image Formatting in BRL-CAD's DocBook Documentation (any ONE large document or 4 smaller documents)The majority of BRL-CAD's documentation is defined as DocBook files, from which other formats (HTML, PDF, man page, etc.) can be generated. PDF files present a particular challenge, and have some very specific requirements to achieve "good" formatting. BRL-CAD's DocBook files need to uniformly use a style of image inclusion that is aware of what "role" the image is supposed to serve. A "basic" image inclusion example looks like this: <mediaobject> <imageobject> <imagedata align="center" fileref="../../lessons/en/images/img.png" format="PNG"/> </imageobject> <caption> <para> Caption goes here. </para> </mediaobject> This task involves switching image inclusions that use the above style to something like the following: <mediaobject> <imageobject role="html"> <imagedata align="center" fileref="../../books/en/images/img.png" format="PNG"/> </imageobject> <imageobject role="fo"> <imagedata align="center" fileref="../../books/en/images/img.png" format="PNG"/> </imageobject> <caption> <para> Caption goes here. </para> </mediaobject> The "role" flag to imageobject provides the opportunity to specify different image formatting options when the output is HTML (role="html") or PDF (role="fo"). The captions should be preserved as above on mediaobjects that have them, but mediaobjects without a caption should also be converted and there is no need to add a caption in such cases. Any patch that makes changes to the DocBook sources should result in a successful "make doc" build test. This won't generate PDF documents, but it will validate the XML files and produce HTML - remember that introducing breakage means the patch won't be accepted. Remember, the tasks are simply to do the above conversion for all images in the file or files, not to introduce PDF specific formatting. Formatting fixes will be needed, but they are very much "case by case" and will take both additional time and a working Apache FOP installation, as well as knowledge of how to enable PDF generation. If all image inclusions have been converted successfully and a student is interested in actually fixing the formatting, please discuss it with us on IRC or the mailing list. References:
Code:
|
Make a step by step tutorial for creating BRL-CAD modelBRL-CAD is said to have an expert friendly User Interface so new users mostly have a tough time getting around it's UI and making models. So anything link Django poll app tutorial https://docs.djangoproject.com/en/dev/intro/tutorial01/ would be very helpful.
|
Find 5 bugs in OGVOnline Geometry Viewer is a web based application with which you can see 3D .g models in browser without the use of any plugins. Your task will be to deploy OGV locally and find 5 bugs or errors in it. |
Find 5 coding guidelines violations in OGVOnline Geometry Viewer is a web based application with which you can see 3D .g models in browser without the use of any plugins. Your task will be to deploy OGV locally, look into code and see if any coding guidelines are violated. |
Outreach and ResearchTasks related to community management, outreach/marketing, studying problems, and recommending solutions
Quality AssuranceTasks related to testing and ensuring code is of high quality
User InterfaceTasks related to user experience research or user interface design and interaction
Design a hall of fame for BRL-CAD developersWe love our developers and want to have a special place in it's website to thank and motivate hard working folks behind BRL-CAD. Your task would be to use an image manipulation software such as GIMP or Photoshop and design a hall of fame page for developers. It should have avatars and names of all the developers. For inspiration you can take a look at http://underscores.me/. You are free to experiment and design anyway you want, just make sure that the color scheme and font-scheme is consistent with the new BRL-CAD web design. Links:
|
When You're Done
For non-code, just send us your file(s). For code changes, you will be expected to provide a patch file. Make sure you read your patch file before submitting it. Make sure your patch file will apply cleanly to an unmodified checkout of BRL-CAD:
svn co https://brlcad.svn.sourceforge.net/svnroot/brlcad/brlcad/trunk brlcad.edit cd brlcad.edit # make changes svn diff > ~/my.patch # read ~/my.patch file with text editor cd .. svn co https://brlcad.svn.sourceforge.net/svnroot/brlcad/brlcad/trunk brlcad.fresh cd brlcad.fresh patch -p0 < ~/my.patch # submit your patch file to our patches tracker