Thread: [Pyobjc-dev] Moving PyObjC and py2app forward
Brought to you by:
ronaldoussoren
From: Ronald O. <ron...@ma...> - 2014-12-10 22:11:23
|
Hi, ’Tis the time to be contemplative, and I’ve been thinking a bit about PyObjC, py2app: what I’d like to do with them, and how much time I have to work on them. Things don’t quite add up because there’s a lot more that I’d like to do than I expect to be able to do in any reasonable timeframe. In no particular order (and far from complete): Finish work to add metadata for APIs introduced in OSX 10.10 and 10.9 (update existing framework wrappers and add new ones where appropriate) It should be pretty straightforward to add metadata now that objective.metadata is based on libclang (thanks to James Ranking). It is however still a relatively large amount of work because it is necessary to manually check which APIs require manual additions to the metadata, and because I prefer to add unittests for the framework wrappers because those have caught a fair amount of problems in the past. Python 3.4 adds an “asyncio” library (with backports on PyPI). It would be useful to add a pluggable event loop that integrates with Cocoa’s runloop (NSRunloop and CFRunloop), and furthermore it would be interesting to see if the tasks and coroutines from asyncio can be used to simplify Cocoa code: any Cocoa code with a “completionHandler” argument block might give nicer python code when used from a coroutine. That is, instead of something like: def onCompletion(result): # … anObject.runTaskWithCompletionHandler(onCompletion) you’d get something like: result = anObject.runTask() # … There needs to be a significant example of how to write a GUI without using XIB files. To expand on the previous item: there needs to be a non-trivial example for writing a GUI with PyObjC that addresses issues one commonly runs into with writing code (aggressivly catch python exceptions before they cause problems in Cocoa, …). This can be used to enhance PyObjC itself: instead of adding work-arounds for odd behavior try to address the root cause. It’s time to try to refactor py2app into a library that does the work and a setuptools extension for the API. There are two reasons for that: this gives us a fighting chance to add useful unittests (py2app’s tests currently are primarily slow integration tests), and secondly this would make it a lot easier to design a modern interface that doesn’t rely on setuptools (using a declarative configuration file, …) py2app currently doesn’t support code signing, setuptools metadata, adding entire eggs/wheels and more. All of those are more and more necessary to ship the output of py2app outside of a controlled environment and AFAIK a number of py2app users work around the lack of those features by adding pre- and post-process scripting around py2app. Both py2app and PyObjC need significant work on their documentation. The documentation for py2app is minimal enough to make it effectively non-existing. PyObjC and py2app need some form of CI, especially for supporting platforms and libraries I don’t use regularly myself (for example OSX 10.6 support in PyObjC and support for PyQt in py2app). Something like Jenkins or buildbot could work, but setting up the infrastructure requires effort. I currently have to manually test, and due to lack of time I rarely run on older OSX releases and that seems to have resulted in breakage (for example issue #100 on PyObjC’s tracker). I’m not sure how to make serious progress with my current load (both work and privately). Does anyone have experience with crowd-funding for open-source work? Ronald |
From: Ronald O. <ron...@ma...> - 2015-01-29 18:21:29
|
> On 10 Dec 2014, at 23:11, Ronald Oussoren <ron...@ma...> wrote: > I’m not sure how to make serious progress with my current load (both work and privately). Does anyone have experience with crowd-funding for open-source work? I guess not. I’m still interested in idea’s on how to improve development/support for PyObjC. Ronald > On 10 Dec 2014, at 23:11, Ronald Oussoren <ron...@ma...> wrote: > > Hi, > > ’Tis the time to be contemplative, and I’ve been thinking a bit about PyObjC, py2app: what I’d like to do with them, and how much time I have to work on them. Things don’t quite add up because there’s a lot more that I’d like to do than I expect to be able to do in any reasonable timeframe. > > In no particular order (and far from complete): > > Finish work to add metadata for APIs introduced in OSX 10.10 and 10.9 (update existing framework wrappers and add new ones where appropriate) > > It should be pretty straightforward to add metadata now that objective.metadata is based on libclang (thanks to James Ranking). It is however still a relatively large amount of work because it is necessary to manually check which APIs require manual additions to the metadata, and because I prefer to add unittests for the framework wrappers because those have caught a fair amount of problems in the past. > > Python 3.4 adds an “asyncio” library (with backports on PyPI). It would be useful to add a pluggable event loop that integrates with Cocoa’s runloop (NSRunloop and CFRunloop), and furthermore it would be interesting to see if the tasks and coroutines from asyncio can be used to simplify Cocoa code: any Cocoa code with a “completionHandler” argument block might give nicer python code when used from a coroutine. > > That is, instead of something like: > > def onCompletion(result): > # … > > anObject.runTaskWithCompletionHandler(onCompletion) > > you’d get something like: > > result = anObject.runTask() > # … > > There needs to be a significant example of how to write a GUI without using XIB files. > To expand on the previous item: there needs to be a non-trivial example for writing a GUI with PyObjC that addresses issues one commonly runs into with writing code (aggressivly catch python exceptions before they cause problems in Cocoa, …). This can be used to enhance PyObjC itself: instead of adding work-arounds for odd behavior try to address the root cause. > > It’s time to try to refactor py2app into a library that does the work and a setuptools extension for the API. There are two reasons for that: this gives us a fighting chance to add useful unittests (py2app’s tests currently are primarily slow integration tests), and secondly this would make it a lot easier to design a modern interface that doesn’t rely on setuptools (using a declarative configuration file, …) > > py2app currently doesn’t support code signing, setuptools metadata, adding entire eggs/wheels and more. All of those are more and more necessary to ship the output of py2app outside of a controlled environment and AFAIK a number of py2app users work around the lack of those features by adding pre- and post-process scripting around py2app. > > Both py2app and PyObjC need significant work on their documentation. The documentation for py2app is minimal enough to make it effectively non-existing. > > PyObjC and py2app need some form of CI, especially for supporting platforms and libraries I don’t use regularly myself (for example OSX 10.6 support in PyObjC and support for PyQt in py2app). Something like Jenkins or buildbot could work, but setting up the infrastructure requires effort. I currently have to manually test, and due to lack of time I rarely run on older OSX releases and that seems to have resulted in breakage (for example issue #100 on PyObjC’s tracker). > > I’m not sure how to make serious progress with my current load (both work and privately). Does anyone have experience with crowd-funding for open-source work? > > Ronald > > > ------------------------------------------------------------------------------ > Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server > from Actuate! Instantly Supercharge Your Business Reports and Dashboards > with Interactivity, Sharing, Native Excel Exports, App Integration & more > Get technology previously reserved for billion-dollar corporations, FREE > http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk_______________________________________________ > Pyobjc-dev mailing list > Pyo...@li... > https://lists.sourceforge.net/lists/listinfo/pyobjc-dev |
From: Diez B. R. <de...@we...> - 2015-01-29 19:47:22
Attachments:
signature.asc
|
Hi, > On 29 Jan 2015, at 19:20, Ronald Oussoren <ron...@ma...> wrote: > >> On 10 Dec 2014, at 23:11, Ronald Oussoren <ron...@ma... <mailto:ron...@ma...>> wrote: >> I’m not sure how to make serious progress with my current load (both work and privately). Does anyone have experience with crowd-funding for open-source work? > > I guess not. I’m still interested in idea’s on how to improve development/support for PyObjC. This is not from personal experience, but observation of other maintainers e.g. like Christian Tismer & the psyco optimizing Python JIT, and the stackless python implementation. For both cases, he scored consulting gigs with companies that heavily used his projects, so that he could work on them and improve them. One was a computer trading company somewhere in the US, the other with the game studio CCP of Eve Online fame. So my suggestion would be to seek out companies that use pyobjc, and ask if they have an interest in employing you, on whatever base. Sorry that I can’t be of more help - crowd-funding has not worked for me so far, as these things seem to need (in my limited perception, not really deeply surveyed the landscape) a goal that has a certain “sexyness” (in lieu of a better term) - usually, that means a consumer product, such as a game, or self-driving cool box or some such. Diez |
From: Ronald O. <ron...@ma...> - 2015-02-02 06:51:01
|
> On 29 Jan 2015, at 20:46, Diez B. Roggisch <de...@we...> wrote: > > Hi, > > >> On 29 Jan 2015, at 19:20, Ronald Oussoren <ron...@ma... <mailto:ron...@ma...>> wrote: >> >>> On 10 Dec 2014, at 23:11, Ronald Oussoren <ron...@ma... <mailto:ron...@ma...>> wrote: >>> I’m not sure how to make serious progress with my current load (both work and privately). Does anyone have experience with crowd-funding for open-source work? >> >> I guess not. I’m still interested in idea’s on how to improve development/support for PyObjC. > > This is not from personal experience, but observation of other maintainers e.g. like Christian Tismer & the psyco optimizing Python JIT, and the stackless python implementation. > > For both cases, he scored consulting gigs with companies that heavily used his projects, so that he could work on them and improve them. One was a computer trading company somewhere in the US, the other with the game studio CCP of Eve Online fame. > > So my suggestion would be to seek out companies that use pyobjc, and ask if they have an interest in employing you, on whatever base. > > Sorry that I can’t be of more help - crowd-funding has not worked for me so far, as these things seem to need (in my limited perception, not really deeply surveyed the landscape) a goal that has a certain “sexyness” (in lieu of a better term) - usually, that means a consumer product, such as a game, or self-driving cool box or some such. That’s my perception as well. A site like kickstarter also appears to require you to work on a specific product (a gadget, new software, …) and not ongoing development of an existing project. Ronald > > Diez |
From: Jim T. <jw...@On...> - 2015-02-02 10:15:43
|
On 02/02/2015 03:50 PM, Ronald Oussoren wrote: > That’s my perception as well. A site like kickstarter also appears to > require you to work on a specific product (a gadget, new software, …) > and not ongoing development of an existing project. I've supported a project on BountySource that was for continuing support. (BountySource has both "issue bounties" and more general "project fundraisers.") https://www.bountysource.com/ https://github.com/bountysource/frontend/wiki/Frequently-Asked-Questions But I worry that the size of the community will make it difficult to generate enough funding. -- Jim Tittsler http://www.OnJapan.net/ GPG: 0x01159DB6 Python Starship http://Starship.Python.net/crew/jwt/ Mailman IRC irc://irc.freenode.net/#mailman |
From: Ian M. <ip...@po...> - 2015-01-30 16:43:55
|
As others have mentioned, most of the success stories I've heard for open-source maintainers going full-time revolve either around consulting gigs, or getting in-sourced to a company that's dedicated to the technology. I assume that if such an opportunity were available, and interested you, that you'd be doing it, so I infer that it's not. My impression is that for crowd funding open source projects to work, there has to be a sizable "crowd". You (Ronald) would know better than I, but I don't get the feeling that 'Python for native OS X development' has a very big crowd at the moment. With that in mind, when I think about PyObjC, and how it could attract more financial support, and specifically through crowd funding, I very quickly find myself thinking about ways to increase the user base. While the tasks you enumerated all sound like worthy steps to take in terms of the big picture, I'm not sure that any of them (directly, anyway) seem like the kind of thing that's going to attract tons of new users and help develop significant traction for the project. While OS X market penetration is rising with the tide of Apple as a whole, it seems like the most obvious way for PyObjC to get more traction would be to focus on making it a viable toolchain for iOS development. Without looking any further than the `ios` and `osx` tags on StackOverflow, the population of iOS developers positively dwarfs that of OS X developers. Furthermore, many iOS developers are new to the platform, and/or are writing cross-platform software, where the ability to work in a language like Python might be a really significant advantage. Of course, bringing PyObjC to iOS development involves a bunch of work that doesn't sound all that fun. Building Python for ARM, building PyObjC for ARM, spooling up a whole new platform's worth of metadata, making everything work in the simulator, integrating with Xcode, packaging, code-signing, all that crap. It sounds tedious, to say the least. But from where I sit, getting up and running on iOS seems like the best chance for PyObjC to become financially self-sufficient. Hell, bringing PyObjC to iOS sounds like a pretty good thing for a Python-using company to hire you to do, no? :) For my part, I mostly prefer working in the desktop idiom with OS X, so don't take this as the pining of an iOS fanatic. I'm just saying, funding feels likely to follow the crowd, and the crowd is, these days, without a doubt, on iOS. Anyway, I don't know if this is helpful at all, but it seemed like it was worth saying, so... Regards, Ian On Thu, Jan 29, 2015 at 1:20 PM, Ronald Oussoren <ron...@ma...> wrote: > On 10 Dec 2014, at 23:11, Ronald Oussoren <ron...@ma...> wrote: > > I’m not sure how to make serious progress with my current load (both work > and privately). Does anyone have experience with crowd-funding for > open-source work? > > > I guess not. I’m still interested in idea’s on how to improve > development/support for PyObjC. > > Ronald > > On 10 Dec 2014, at 23:11, Ronald Oussoren <ron...@ma...> wrote: > > Hi, > > ’Tis the time to be contemplative, and I’ve been thinking a bit about > PyObjC, py2app: what I’d like to do with them, and how much time I have to > work on them. Things don’t quite add up because there’s a lot more that > I’d like to do than I expect to be able to do in any reasonable timeframe. > > In no particular order (and far from complete): > > > - Finish work to add metadata for APIs introduced in OSX 10.10 and > 10.9 (update existing framework wrappers and add new ones where appropriate) > > It should be pretty straightforward to add metadata now that > objective.metadata is based on libclang (thanks to James Ranking). It is > however still a relatively large amount of work because it is necessary to > manually check which APIs require manual additions to the metadata, and > because I prefer to add unittests for the framework wrappers because those > have caught a fair amount of problems in the past. > > - Python 3.4 adds an “asyncio” library (with backports on PyPI). It > would be useful to add a pluggable event loop that integrates with Cocoa’s > runloop (NSRunloop and CFRunloop), and furthermore it would be interesting > to see if the tasks and coroutines from asyncio can be used to simplify > Cocoa code: any Cocoa code with a “completionHandler” argument block might > give nicer python code when used from a coroutine. > > That is, instead of something like: > > def onCompletion(result): > # … > > anObject.runTaskWithCompletionHandler(onCompletion) > > you’d get something like: > > result = anObject.runTask() > # … > > - There needs to be a significant example of how to write a GUI > without using XIB files. > - To expand on the previous item: there needs to be a non-trivial > example for writing a GUI with PyObjC that addresses issues one commonly > runs into with writing code (aggressivly catch python exceptions before > they cause problems in Cocoa, …). This can be used to enhance PyObjC > itself: instead of adding work-arounds for odd behavior try to address the > root cause. > > - It’s time to try to refactor py2app into a library that does the > work and a setuptools extension for the API. There are two reasons for > that: this gives us a fighting chance to add useful unittests (py2app’s > tests currently are primarily slow integration tests), and secondly this > would make it a lot easier to design a modern interface that doesn’t rely > on setuptools (using a declarative configuration file, …) > > - py2app currently doesn’t support code signing, setuptools metadata, > adding entire eggs/wheels and more. All of those are more and more > necessary to ship the output of py2app outside of a controlled environment > and AFAIK a number of py2app users work around the lack of those features > by adding pre- and post-process scripting around py2app. > > - Both py2app and PyObjC need significant work on their documentation. > The documentation for py2app is minimal enough to make it effectively > non-existing. > > - PyObjC and py2app need some form of CI, especially for supporting > platforms and libraries I don’t use regularly myself (for example OSX 10.6 > support in PyObjC and support for PyQt in py2app). Something like Jenkins > or buildbot could work, but setting up the infrastructure requires effort. > I currently have to manually test, and due to lack of time I rarely run on > older OSX releases and that seems to have resulted in breakage (for example > issue #100 on PyObjC’s tracker). > > > I’m not sure how to make serious progress with my current load (both work > and privately). Does anyone have experience with crowd-funding for > open-source work? > > Ronald > > > > ------------------------------------------------------------------------------ > Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server > from Actuate! Instantly Supercharge Your Business Reports and Dashboards > with Interactivity, Sharing, Native Excel Exports, App Integration & more > Get technology previously reserved for billion-dollar corporations, FREE > > http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk_______________________________________________ > Pyobjc-dev mailing list > Pyo...@li... > https://lists.sourceforge.net/lists/listinfo/pyobjc-dev > > > > > ------------------------------------------------------------------------------ > Dive into the World of Parallel Programming. The Go Parallel Website, > sponsored by Intel and developed in partnership with Slashdot Media, is > your > hub for all things parallel software development, from weekly thought > leadership blogs to news, videos, case studies, tutorials and more. Take a > look and join the conversation now. http://goparallel.sourceforge.net/ > _______________________________________________ > Pyobjc-dev mailing list > Pyo...@li... > https://lists.sourceforge.net/lists/listinfo/pyobjc-dev > > |
From: Ronald O. <ron...@ma...> - 2015-02-02 07:21:56
|
> On 29 Jan 2015, at 21:22, Sean Robinson <sea...@sc...> wrote: > > On 01/29/15 11:20, Ronald Oussoren wrote: >>> On 10 Dec 2014, at 23:11, Ronald Oussoren <ron...@ma...> wrote: >>> I’m not sure how to make serious progress with my current load (both work and privately). Does anyone have experience with crowd-funding for open-source work? >> >> I guess not. I’m still interested in idea’s on how to improve development/support for PyObjC. >> > > Have you considered applying to the Python Software Foundation for a grant? Not really, the work that needs to be done is IMHO only partially related to the PSF mission. Apart from that I think I’d should try to raise some funding from the community before talking to the PSF, at the very least that would show that it wouldn’t be a complete waste of funds. Before I can do any of that I’d have to get a clearer picture of what I’d like to do, and (more importantly) how to accomplish that. Ronald > > > -- > Sean Robinson > Physical Sciences Lab Technician > Physics, Astronomy, Geology > Scottsdale Community College |
From: Bob I. <bo...@re...> - 2015-02-02 18:00:39
|
On Sun, Feb 1, 2015 at 11:20 PM, Ronald Oussoren <ron...@ma...> wrote: > > > On 29 Jan 2015, at 21:22, Sean Robinson <sea...@sc...> > wrote: > > > > On 01/29/15 11:20, Ronald Oussoren wrote: > >>> On 10 Dec 2014, at 23:11, Ronald Oussoren <ron...@ma...> > wrote: > >>> I’m not sure how to make serious progress with my current load (both > work and privately). Does anyone have experience with crowd-funding for > open-source work? > >> > >> I guess not. I’m still interested in idea’s on how to improve > development/support for PyObjC. > >> > > > > Have you considered applying to the Python Software Foundation for a > grant? > > Not really, the work that needs to be done is IMHO only partially related > to the PSF mission. Apart from that I think I’d should try to raise some > funding from the community before talking to the PSF, at the very least > that would show that it wouldn’t be a complete waste of funds. > > Before I can do any of that I’d have to get a clearer picture of what I’d > like to do, and (more importantly) how to accomplish that. > Have you tried talking to anyone at Dropbox yet? They appear to still be using PyObjC in the Mac app, they might have the right incentives. -bob |
From: Greg E. <gre...@ca...> - 2015-02-02 23:39:49
|
Ronald Oussoren wrote: > > A site like kickstarter also appears to > require you to work on a specific product (a gadget, new software, …) > and not ongoing development of an existing project. Patreon might be a better option for something like PyObjC: https://www.patreon.com/ -- Greg |