SOFA Statistics (http://www.sofastatistics.com) is an open source desktop Python statistics application with an emphasis on ease of use, learn as you go, and attractive output. This presentation covers the lead developer's experiences with some of the technical aspects of the project as well as project management issues.
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Developing and releasing SOFA Statistics
1. SOFA Paton-Simpson & Associates Ltd Auckland, New Zealand SOFA Statistics Developing and releasing a Python open source application Grant Paton-Simpson sofastatistics.com
15. SOFA Architecture ... Linking not importing SQLite MySQL MS Access PostgreSQL SQL Server SOFA Scripts from GUI or by hand (available for automation) HTML output (spreadsheet- friendly)
16.
17. Want control over the information I get about data configuration (e.g character set)
55. Only 1100 lines of code to make the data grid you saw in the demonstration (inc validation, ability to add new rows and edit values etc)
56. May be sensible to have more lines of documentation than code in some modules
57.
58. Found out Windows intercepted Tabs and Returns before they could be exposed and reacted to
59. But there was a solution SOFA Paton-Simpson & Associates Ltd Auckland, New Zealand wx.Grid
60. SOFA Paton-Simpson & Associates Ltd Auckland, New Zealand Example of wx.Grid code self.frame.Bind(wx.grid.EVT_GRID_EDITOR_CREATED, self.OnGridEditorCreated) … def OnGridEditorCreated(self, event): """ Need to bind KeyDown to the control itself e.g. a choice control. wx.WANTS_CHARS makes it work. """ control = event.GetControl() control.WindowStyle |= wx.WANTS_CHARS control.Bind(wx.EVT_KEY_DOWN, self.OnGridKeyDown) event.Skip() … def OnGridKeyDown(self, event): keycode = event.GetKeyCode() if keycode in (wx.WXK_TAB, wx.WXK_RETURN): etc The user clicks on a cell to edit a value. We bind to that event. Now we can grab the control ... … and respond to its key down event Now we're away again :-)
67. Make sure I have translations for any new strings I've added.
68. Make and test the new deb and Windows packages. I use VirtualBox to give me identical install environments each time.
69. Add the new files to Sourceforge (I wanted to consolidate downloads to help me measure usage).
70. Add a new release to Launchpad and Freshmeat complete with updated release notes and change log (used Bazaar to push to Launchpad so can browse my commit comments).
75. Revisit any important threads commenting on open source statistics packages. SOFA Paton-Simpson & Associates Ltd Auckland, New Zealand Release process
76.
77.
78.
79. Any files needed by an individual user are transferred during first use of application /home/username/sofa/... SOFA Paton-Simpson & Associates Ltd Auckland, New Zealand Making Debian Package (for Ubuntu)
84. Put program in Program Files and user files in Documents and Settingssernameofa.. SOFA Paton-Simpson & Associates Ltd Auckland, New Zealand NSIS Windows Installer