Download presentation
Presentation is loading. Please wait.
Published byCoral Little Modified over 9 years ago
1
Tom Connolly Rob Liddel Scott Lucas
2
© 2008 Tom Connolly, Rob Liddel, and Scott Lucas This presentation is Copyrighted by Tom Connolly, Rob Liddel, and Scott Lucas This presentation is distributed under the Creative Commons Attribution License 3.0: http://creativecommons.org/licenses/by/3.0 You are free to Reuse and Remix, provided that you give credit to the authors
3
Agenda Introduction Process Bug Discussion First Impressions of Open Source Conclusion
4
Introduction Goal Immerse ourselves in an open source community Be able to accomplish something and contribute in a meaningful way To understand the scope of a established open source project and the difficulty inherent to entering
5
Process Decide on a project Enter the community Download the source code Join the mailing list Discover and discuss possible bugs Squash the bugs Contribute fixes back to the community
6
Bug Discussion
7
Improve Print() in Java Bug #0007886 C++ version of Print() Starts by printing class name and address Useful when debugging Java version of Print() Class name and address are not as useful when debugging Need information about the Java objects
8
Process Found and examined the Print() function Upon rereading the description, saw that a.patch file was supplied and that the problem had already been solved Learned about.patch files Reviewed.patch changes and confirmed that the changes were correct
9
Solution/Comments Solution Comments In actuality, the solution was already solved Nothing additional needed to be done Bugs that have been fixed need to be marked appropriately Time would have been better allocated working on a new bug
10
Consolidate getline functions Bug #0006446 Multiple “my_getline” functions are declared in various.cxx files Place function in separate file
11
Process Located the different my_getline functions Examine discrepancies between different versions of the function Create the new my_getline function Update existing files and test
12
Solution/Comments Solution Comments Reached by examining various versions of the function Simple to implement, given that it is already written Tough to fix existing code Currently testing the fix Early identification of issue would have saved time
13
Fix QVtkWidget Bug #0007065 Uses key presses as int References an array of size 256 Only checked for non negative values Potential for array reference with too large a number
14
Process Found and examined the ascii_to_key_sym() function Examined array being referenced Replaced logic to check for both upper and lower bounds Tested the changes for expected outcomes
15
Solution/Comments Solution Comments Relatively basic Could have been avoided if initial implementation had been better tested Shows importance of bounds checking for both upper and lower bounds
16
Fix Boundary representation Bug #0007760 vtkImplicitPlaneRepresentation Edges Property Not Set Important for when a plane intersects with boundary Bug submission provided a proposed solution Lack of function understanding led to question of if this would actually work Required extensive testing that is ongoing
17
Process Found and located area of proposed change Examined structure of related actors Made proposed change Tested
18
Solution/Comments Solution Comments Implement proposed correction Test with various scenarios Difficult to fix a bug if you do not know what you think you are fixing works Still not assured that the fix works all of the time
19
Stop vtkVariant Crashes Bug #0006851 vtkObject* o = NULL; vtkVariant v(o); // <- crashes Also a vtkVariant v(NULL); gives me a compiler warning warning: passing NULL to non-pointer argument 1 of ‘vtkVariant::vtkVariant(long int)’
20
Process Contact the reporter of the bug to request additional information. Turns out that the reporter abandoned the approach which led to this bug and took a different route. However he was still interested in a fix. Locate possible crash locations in vtkVariant.cxx Implement fixes and test Forward results to reporter
21
Solution/Comments Solution Comments The fix was as simple as adding a conditional statement which checked to see if the constructor parameter was a null pointer Unfortunately, the testing files do not directly test the vtkVariant.cxx file, so the bug is not caught by automatic testing Makes one wonder how often implementations are dropped due to simple mistakes If subversion is used to save previous testing files, this sort of problem becomes a matter of matching the bug’s report date with the version of the source code. Source control becomes key for large, long term projects
22
First Impressions of Open Source Accessing the source code is simple, but fixing foreign code is tough Lack of experience lowered overall efficiency The current design of VTK’s bug tracking is unfriendly to newcomers
23
Conclusion Experience we have gained will increase our efficiency in the future open source projects we work on Organization and communication are key Strength in numbers
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.