Difference between revisions of "Google Code In/2017/Tasks"

From BRL-CAD
(Task chain ideas)
(up to 81 coding tasks)
Line 22: Line 22:
  
 
* C: OpenCL pipelining
 
* C: OpenCL pipelining
* Qt/C++: openscad-style asc-to-display GUI
 
 
* C: Boolean evaluation debugging
 
* C: Boolean evaluation debugging
 
* Javascript: OGV
 
* Javascript: OGV
 
* ThreeJS/Verb: OGV Nurbs
 
* ThreeJS/Verb: OGV Nurbs
* C: Layer object callbacks
 
* C: Annotation object callbacks
 
 
* C/C++: libbu C++11 threading
 
* C/C++: libbu C++11 threading
 +
** implement bu_semaphore_acquire/bu_semaphore_release in C++11
 +
** implement bu_parallel in C++11
 +
* C/C++: libbu container testing
 +
** Write program comparing performance of bu_list vs c++ lists
 +
** Write program comparing performance of bu_list stacks vs c++ queues
 +
** Write program comparing performance of bu_hash vs c++ map
 +
** Write program comparing performance of bn_randmt vs c++ random
 
* C/C++: primitive unit tests (ProcDBs)
 
* C/C++: primitive unit tests (ProcDBs)
** arb8/arb7/arb6/arb5/arb4
+
** arb8/arb7/arb6/arb5/arb4, arbn, ars, datum, dsp, ebm, ehy, ell/sph, epa, eto, extrude, half, hrt, hyp, metaball, pipe, pnts, revolve, rhc, rpc, sketch, submodel, superell, tgc/rec, tor, vol
** arbn
 
** ars
 
** datum
 
** dsp
 
** ebm
 
** ehy
 
** ell/sph
 
** epa
 
** eto
 
** extrude
 
** half
 
** hrt
 
** hyp
 
** metaball
 
** pipe
 
** pnts
 
** revolve
 
** rhc
 
** rpc
 
** sketch
 
** submodel
 
** superell
 
** tgc/rec
 
** tor
 
** vol
 
 
** (intentionally leaving out bot, brep, bspline, cline, grip, joint, nmg, part, poly)
 
** (intentionally leaving out bot, brep, bspline, cline, grip, joint, nmg, part, poly)
 
* Docbook/XML: primitive guide
 
* Docbook/XML: primitive guide
 +
** arb8/arb7/arb6/arb5/arb4, arbn, ars, datum, dsp, ebm, ehy, ell/sph, epa, eto, extrude, half, hrt, hyp, metaball, pipe, pnts, revolve, rhc, rpc, sketch, submodel, superell, tgc/rec, tor, vol
 +
** also: bot, brep, nmg
 +
** (intentionally leaving out bspline, cline, grip, joint, part, poly)
 
* Qt/C++: New visualization GUI
 
* Qt/C++: New visualization GUI
* C: point cloud object callbacks
+
* Qt/C++: geometry viewer
 +
** [https://github.com/asadpiz/brlcad-viewer BRL-CAD Viewer]: (Task 1) Open a simple GLFW window from the source
 +
** [https://github.com/asadpiz/brlcad-viewer BRL-CAD Viewer]: (Task 2) Write a program that opens geometry, executes db_walk_tree(), and gets a bounding box.
 +
** [https://github.com/asadpiz/brlcad-viewer BRL-CAD Viewer]: (Task 3) Print out the bounding box center point into the GUI
 +
** [https://github.com/asadpiz/brlcad-viewer BRL-CAD Viewer]: (Task 4) Display wireframes, regions on to the window.
 +
* Qt/C++: openscad-style asc-to-display GUI
 +
** (Task 1) Open a simple Qt window from source
 +
** (Task 2) Write a program that opens .asc, displays in Qt text window
 +
** (Task 3) Write a simple program that converts .asc to .g in memory
 +
** (Task 4) Write a simple program that renders an in-memory .g to .pix
 +
** (Task 5) Write a program that displays a .pix image into a Qt window
 +
** (Task 6) Tie it all together: Qt button that converts, renders, and displays.
 
* C/C++: appleseed integration
 
* C/C++: appleseed integration
 +
** Create and render a box in Appleseed and BRL-CAD
 +
** Write a small program in BRL-CAD that renders an image
 +
** Write a small program in Appleseed that renders an image
 +
** Implement an Appleseed hello world plugin
 +
** Integrate BRL-CAD rendering into Appleseed plugin
 
* C: Boolean weaving unit tests
 
* C: Boolean weaving unit tests
* Docs: geometry URI specification
+
** implement a regression test for rt_boolweave()
* C: image object callbacks
+
** implement a regression test for rt_boolfinal()
 +
* C: Annotation object callbacks
 +
* C: point cloud object callbacks
 +
** Implement the prep() and shot() functions for point clouds
 +
** Implement a function that reads point data from files
 +
** Integrate function reading points from files into libged
 
* C: libged plugin refactoring
 
* C: libged plugin refactoring
* Qt/C++: geometry viewer
 
* Docbook/XML: datum docs
 
* HTML/CSS: website integration
 
 
* C/C++: stand-alone geometry viewer GUI
 
* C/C++: stand-alone geometry viewer GUI
 
* C: Centroid/Volume/Surf_area
 
* C: Centroid/Volume/Surf_area
** [https://github.com/asadpiz/brlcad-viewer BRL-CAD Viewer]: (Task 1) Open a simple GLFW window from the source
+
* HTML/CSS: website integration
** [https://github.com/asadpiz/brlcad-viewer BRL-CAD Viewer]: (Task 2) Write a program that opens geometry, executes db_walk_tree(), and gets a bounding box.
+
* Docs: geometry URI specification
** [https://github.com/asadpiz/brlcad-viewer BRL-CAD Viewer]: (Task 3) Print out the bounding box center point into the GUI
+
* Docbook/XML: datum docs
** [https://github.com/asadpiz/brlcad-viewer BRL-CAD Viewer]: (Task 4) Display wireframes, regions on to the window.
+
 
 +
* Disconsidered...
 +
** C: Layer object callbacks
 +
** C: image object callbacks
  
 
==Independent task ideas==
 
==Independent task ideas==

Revision as of 03:27, 26 November 2017

Dashboard for Ideas for the Google Code In 2017

Roles

  • Coder (C/C++)
  • Web Coder (Javascript/HTML)
  • Modeler
  • Writer

Beginner tasks

These require absolutely no prior experience or knowledge.

  • Anyone: Download and run BRL-CAD (via VM), submit screenshot
  • Anyone: Communications checklist: chat, mailing list, survey
  • Coder: Compile BRL-CAD from source, submit screenshot
  • Web Coder: Clone BRL-CAD website or OGV, submit screenshot
  • Modeler: Model a cup, submit model
  • Writer: Blog about any task, submit link
  • Annotate a primitive: Submit screenshot

Task chain ideas

These would take us more than 2 hours, to be broken up into multiple tasks.

  • C: OpenCL pipelining
  • C: Boolean evaluation debugging
  • Javascript: OGV
  • ThreeJS/Verb: OGV Nurbs
  • C/C++: libbu C++11 threading
    • implement bu_semaphore_acquire/bu_semaphore_release in C++11
    • implement bu_parallel in C++11
  • C/C++: libbu container testing
    • Write program comparing performance of bu_list vs c++ lists
    • Write program comparing performance of bu_list stacks vs c++ queues
    • Write program comparing performance of bu_hash vs c++ map
    • Write program comparing performance of bn_randmt vs c++ random
  • C/C++: primitive unit tests (ProcDBs)
    • arb8/arb7/arb6/arb5/arb4, arbn, ars, datum, dsp, ebm, ehy, ell/sph, epa, eto, extrude, half, hrt, hyp, metaball, pipe, pnts, revolve, rhc, rpc, sketch, submodel, superell, tgc/rec, tor, vol
    • (intentionally leaving out bot, brep, bspline, cline, grip, joint, nmg, part, poly)
  • Docbook/XML: primitive guide
    • arb8/arb7/arb6/arb5/arb4, arbn, ars, datum, dsp, ebm, ehy, ell/sph, epa, eto, extrude, half, hrt, hyp, metaball, pipe, pnts, revolve, rhc, rpc, sketch, submodel, superell, tgc/rec, tor, vol
    • also: bot, brep, nmg
    • (intentionally leaving out bspline, cline, grip, joint, part, poly)
  • Qt/C++: New visualization GUI
  • Qt/C++: geometry viewer
    • BRL-CAD Viewer: (Task 1) Open a simple GLFW window from the source
    • BRL-CAD Viewer: (Task 2) Write a program that opens geometry, executes db_walk_tree(), and gets a bounding box.
    • BRL-CAD Viewer: (Task 3) Print out the bounding box center point into the GUI
    • BRL-CAD Viewer: (Task 4) Display wireframes, regions on to the window.
  • Qt/C++: openscad-style asc-to-display GUI
    • (Task 1) Open a simple Qt window from source
    • (Task 2) Write a program that opens .asc, displays in Qt text window
    • (Task 3) Write a simple program that converts .asc to .g in memory
    • (Task 4) Write a simple program that renders an in-memory .g to .pix
    • (Task 5) Write a program that displays a .pix image into a Qt window
    • (Task 6) Tie it all together: Qt button that converts, renders, and displays.
  • C/C++: appleseed integration
    • Create and render a box in Appleseed and BRL-CAD
    • Write a small program in BRL-CAD that renders an image
    • Write a small program in Appleseed that renders an image
    • Implement an Appleseed hello world plugin
    • Integrate BRL-CAD rendering into Appleseed plugin
  • C: Boolean weaving unit tests
    • implement a regression test for rt_boolweave()
    • implement a regression test for rt_boolfinal()
  • C: Annotation object callbacks
  • C: point cloud object callbacks
    • Implement the prep() and shot() functions for point clouds
    • Implement a function that reads point data from files
    • Integrate function reading points from files into libged
  • C: libged plugin refactoring
  • C/C++: stand-alone geometry viewer GUI
  • C: Centroid/Volume/Surf_area
  • HTML/CSS: website integration
  • Docs: geometry URI specification
  • Docbook/XML: datum docs
  • Disconsidered...
    • C: Layer object callbacks
    • C: image object callbacks

Independent task ideas

These should take one of us 2-4 hours of effort to complete.

  • Model and render the number "404"
  • Model and render the word "BRL-CAD"
  • Model and render the BRL-CAD logo