Making Python more enterprise technology
For some reason Python seems not to be seen as an enterprise technology unlike Java or .net. Do you think there any steps that could be taken, to change this opinion? I love Python, but all job offers I can find at the moment are web development. At my company we use Python a lot, but that's only because my lead is a very sensible person and sees python potential and me and my friend are python enthusiasts. Anyway, beside one Python + Qt project we mostly use Django for projects. How can this be changed? What Python is lacking? -- Filip Gruszczyński
2010/5/9 Filip Gruszczyński <gruszczy@gmail.com>:
For some reason Python seems not to be seen as an enterprise technology unlike Java or .net. Do you think there any steps that could be taken, to change this opinion? I love Python, but all job offers I can find at the moment are web development. At my company we use Python a lot, but that's only because my lead is a very sensible person and sees python potential and me and my friend are python enthusiasts. Anyway, beside one Python + Qt project we mostly use Django for projects. How can this be changed? What Python is lacking?
The only thing lacking from Python / Django to make it "Enterprise Ready" is an SLA (Service Level Agreement) that said enterprise company can pay 200k/y for that gets them nothing. Both Java and .Net have SLAs companies can pay for that lets them call and bitch about bugs, and an Account Manager on the other end that knows how to make pissed off corporate bigwigs happy without giving them anything.
In other words in your opinion Python needs a group of associated companies, that would provide additional support? Isn't that just a cool idea for a bussiness ;-)? -- Filip Gruszczyński
2010/5/9 Filip Gruszczyński <gruszczy@gmail.com>:
In other words in your opinion Python needs a group of associated companies, that would provide additional support? Isn't that just a cool idea for a bussiness ;-)?
Yes, but since neither python nor django have corporate entities behind them any company providing an SLA would be viewed as suspect by "enterprise" companies. The SLAs would need to be directly with the Python Software Foundation and the Django Foundation to be accepted as those are the closest things to corporate entities behind the software. That is the other main reason Java & .Net are viewed as "Enterprise Ready", they have a large corporation behind their development. So there is someone with deep pockets for the "enterprise" company to sue if they feel their SLA has been violated. If you had not guessed the term "Enterprise Ready" is just laughable to me. Any programing language that solves the problem with a minimum amount of effort is "Enterprise Ready". For frameworks and tools to be "Enterprise Ready" the only qualifications I need are, 1) It is not in beta (does not need to be a 1.0+ release though) 2) Active development is still on going 3) They have some form of support where I can ask questions and find work arounds / fixes to issues I come across. One company I worked for used the Remedy ticketing system over a free open source system only because they could pay 200k/y and have a support engineer on the phone within 4 hours of reporting a problem / asking a question. What really dove the point home to me that the "Enterprise Ready" stamp on the software was a joke was when I was developing a front end to the Remedy SOAP interface I found a bug in which a comment fields delimiters were sent as invalid XML. Spent 6 hours on the phone & remote desktop with their engineer who finally admitted it was a bug, but told us "We wont fix that, you need to wait a few months and buy our new "X.0" version which will have that fixed". The new "X.0" version would cost an additional 50k to upgrade to and an extra 30k/y for the SLA. That isnt to say SLAs are all bad, but the marketing hype around the term "Enterprise Ready" is. What the term means to me is "This software should work, but if it doent do quite what you want tough luck cause we only support it in xyz configuration. If it does not work in xyz configuration feel free to call 800-dont-care and we will listen to your issue and may provide a work around. If it is a real bug thank you for reporting it, the fix will be in our next major release that you can pay to upgrade to"
2010/5/9 Dj Gilcrease <digitalxero@gmail.com>:
2010/5/9 Filip Gruszczyński <gruszczy@gmail.com>:
For some reason Python seems not to be seen as an enterprise technology unlike Java or .net. ... What Python is lacking?
The only thing lacking from Python / Django to make it "Enterprise Ready" is an SLA (Service Level Agreement) that said enterprise company can pay 200k/y for that gets them nothing.
There are also some dynamic/security tradeoffs that BigCorp would make differently. In python, I can reset the values of sys.*, and it will affect other programs running on the same virtual machine. There isn't really any good way to detect (let alone prevent) this. [Err, unless you count running different processes on different virtual machines, which is what they already do in for Java *in practice*, but ... somehow it isn't acceptable to rely on that.] -jJ
On Sun, May 9, 2010 at 11:28 PM, Jim Jewett <jimjjewett@gmail.com> wrote:
[...] In python, I can reset the values of sys.*, and it will affect other programs running on the same virtual machine.
I'm a bit confused by what you are trying to say. By "virtual machine", do you mean the python byte code interpretor? But generally each instance of the python virtual machine only runs one program. Or, by "virtual machine" do you mean the kvm/vmware sort of thing? But if so, what mechanism are you thinking is used to reset these values? Patching a file in the python library directory? -Bruce
On Mon, May 10, 2010 at 9:44 AM, Bruce Frederiksen <dangyogi@gmail.com> wrote:
On Sun, May 9, 2010 at 11:28 PM, Jim Jewett <jimjjewett@gmail.com> wrote:
[...] In python, I can reset the values of sys.*, and it will affect other programs running on the same virtual machine.
I'm a bit confused by what you are trying to say.
By "virtual machine", do you mean the python byte code interpretor?
Yes.
But generally each instance of the python virtual machine only runs one program.
"Not done in practice" isn't a sufficiently strong argument to get a new infrastructure technology past an architectural board. (A single product which happens to use or embed python, yes. Approval of python for developing new internal products, no.)
... what mechanism are you thinking is used to reset these values? Patching a file in the python library directory?
That would be a problem, but probably acceptable. The real concern is that running code can, for example, change the value of sys.stdout, and other programs will see that newly modified value. And, again, the fact that they wouldn't normally be running in the same process anyhow doesn't seem to be sufficient answer. In some ways, this is just a FUD argument, but ... monkeypatching really *is* a pain for various audits and separations of authority. A variant to the python module type that prevents monkeypatching (and using that variant for the builtin libraries) might make some difference. -jJ
On Mon, May 10, 2010 at 10:04 AM, Jim Jewett <jimjjewett@gmail.com> wrote:
The real concern is that running code can, for example, change the value of sys.stdout, and other programs will see that newly modified value.
No, no they wouldn't. It is not possible to run multiple python apps in a single process, unless you write your own process that is importing all these apps and running them in some way.
And, again, the fact that they wouldn't normally be running in the same process anyhow doesn't seem to be sufficient answer. In some ways, this is just a FUD argument, but ... monkeypatching really *is* a pain for various audits and separations of authority. A variant to the python module type that prevents monkeypatching (and using that variant for the builtin libraries) might make some difference.
Monkeypatching only ever affects your application instance since other applications are in other python processes there is no overlap or code contamination.
On Mon, May 10, 2010 at 10:29 AM, Dj Gilcrease <digitalxero@gmail.com> wrote:
On Mon, May 10, 2010 at 10:04 AM, Jim Jewett <jimjjewett@gmail.com> wrote:
The real concern is that running code can, for example, change the value of sys.stdout, and other programs will see that newly modified value.
No, no they wouldn't. It is not possible to run multiple python apps in a single process, unless you write your own process that is importing all these apps and running them in some way.
For example, (the python equivalent of) a web server with multiple different cgi scripts. If you say each applet should use its own python process, then the architecture board will scream about resource hogging and startup latency, even though that probably is what they do now for both Perl and Java.
And, again, the fact that they wouldn't normally be running in the same process anyhow doesn't seem to be sufficient answer. In some ways, this is just a FUD argument, but ... monkeypatching really *is* a pain for various audits and separations of authority. A variant to the python module type that prevents monkeypatching (and using that variant for the builtin libraries) might make some difference.
Monkeypatching only ever affects your application instance since other applications are in other python processes there is no overlap or code contamination.
Even if that guarantee were acceptable (but see above), the answer wouldn't be. You can't tell from file1 that file2 has monkey-patched something they both use. You can't tell that an upgrade to third-party library foo won't monkey-patch it differently. Yes, this is true in practice with Java and factories, and you can't really audit closed-source anyhow, and ... in the end, it doesn't matter. Change is scary, so python (or any new infrastructure technology) has to at least be able to get things right, even when, in practice, Java and Perl (or any incumbent technology) do not need to. -jJ
Jim Jewett <jimjjewett@gmail.com> wrote:
Change is scary, so python (or any new infrastructure technology) has to at least be able to get things right, even when, in practice, Java and Perl (or any incumbent technology) do not need to.
Well, there's hope! After all, Java and Perl somehow *became* incumbent technologies. Bill
Jim Jewett <jimjjew...@gmail.com> wrote:
"Not done in practice" isn't a sufficiently strong argument to get a new infrastructure technology past an architectural board. (A single product which happens to use or embed python, yes. Approval of python for developing new internal products, no.)
This is just nonsense. I've worked for enterprise orgs that use Python to do exactly that. It's been a long term trend to move away from discrete desktop apps and towards intranet-bound web apps instead. Python is ideal for this use, and none of the security issues you're citing apply.
The real concern is that running code can, for example, change the value of sys.stdout, and other programs will see that newly modified value.
Pure, unmitigated FUD.
alex23 writes:
Jim Jewett <jimjjew...@gmail.com> wrote:
"Not done in practice" isn't a sufficiently strong argument to get a new infrastructure technology past an architectural board. (A single product which happens to use or embed python, yes. Approval of python for developing new internal products, no.)
This is just nonsense. [...]
The real concern is that running code can, for example, change the value of sys.stdout, and other programs will see that newly modified value.
Pure, unmitigated FUD.
Jim didn't say it was *his* concern, just that he has so far been at best partially successful in convincing people that it's no more an issue for Python than for incumbent platforms. That's the reality you see in many places, and I don't see how you can blame people who work in that kind of environment for hoping for a Pythonic solution to it. Heaven knows, the *people* who run things aren't going to change! If it's not practical to change those parts of Python, OK, education of the bosses is all that's left.
"Stephen J. Turnbull" <step...@xemacs.org> wrote:
Jim didn't say it was *his* concern, just that he has so far been at best partially successful in convincing people that it's no more an issue for Python than for incumbent platforms.
Jim said:
There are also some dynamic/security tradeoffs that BigCorp would make differently. In python, I can reset the values of sys.*, and it will affect other programs running on the same virtual machine.
He doesn't say "my employers believe", he quite clearly states that _he can modify sys.* and it will be picked up by other programs. The fact that the Python interpreter _doesn't work that way_ he dismisses as irrelevant shortly after, which I just cannot follow. If anyone can show me how I can run one python program and have it modify the sys.stdout of an existing running python process without explicitly coding the latter to allow for it, please, I'd love to be enlightened.
alex23 writes:
If anyone can show me how I can run one python program and have it modify the sys.stdout of an existing running python process without explicitly coding the latter to allow for it, please, I'd love to be enlightened.
It's easiest to think outside the box of modifying internals of a python process from outside. Specifically (as already mentioned), suppose the python process is a webserver, or a persistent CGI server, or something like that. Then people who write application modules for that process think of their module as "the program", even though in our reality they are just data (well, a library) for the real process. That "program" is loaded into the process using "import" as usual, and can modify sys.stdout simply by assigning to it. What that means to the architecture board is that they are going to have to write up some coding standards about globals, when you can create them, when you can touch them, what you can do when you do mess with them, what kind of cleanup is required, and how and where you must document all of the above when you do it. I'm not at all surprised that they throw up their hands and say "no, thanks".
Stephen J. Turnbull wrote:
What that means to the architecture board is that they are going to have to write up some coding standards about globals, when you can create them, when you can touch them, what you can do when you do mess with them, what kind of cleanup is required, and how and where you must document all of the above when you do it. I'm not at all surprised that they throw up their hands and say "no, thanks".
From my experience, Python most effectively makes its way into organisations the way Linux did originally: developers are able to get approval to use it at a fairly low level because it doesn't cost anything, the licensing is more than reasonable and it will get the job done. Once it is in the door and being used for "support" tasks, it slowly makes its way closer and closer to core internal business applications (as different tasks come up, developers do initial
It's also the reason AppEngine cuts out a bunch of things to make it easier to keep apps under control:) prototypes in Python to try out functionality, then ask the obvious question "hey, how about we do the real thing in Python as well?"). Java and .NET have large organisations behind them with significant marketing budgets pushing them as the programming platform du jour. Python, like Linux before Red Hat started making money and the enterprise server hardware vendors got involved, relies more on word of mouth and unpaid advocacy. Cheers, Nick. -- Nick Coghlan | ncoghlan@gmail.com | Brisbane, Australia ---------------------------------------------------------------
On Tue, 11 May 2010 22:37:19 +1000 Nick Coghlan <ncoghlan@gmail.com> wrote:
From my experience, Python most effectively makes its way into organisations the way Linux did originally: developers are able to get approval to use it at a fairly low level because it doesn't cost anything, the licensing is more than reasonable and it will get the job done. Once it is in the door and being used for "support" tasks, it slowly makes its way closer and closer to core internal business applications (as different tasks come up, developers do initial prototypes in Python to try out functionality, then ask the obvious question "hey, how about we do the real thing in Python as well?").
My latest customer was a PHP and Java shop. I used Python for the work I had to do, and recently I learnt that their IT department had started hiring (or trying to hire) people with Python competences. That might indicate they intend to invest more in Python. Regards Antoine.
"Stephen J. Turnbull" <step...@xemacs.org> wrote:
What that means to the architecture board is that they are going to have to write up some coding standards about globals, when you can create them, when you can touch them, what you can do when you do mess with them, what kind of cleanup is required, and how and where you must document all of the above when you do it. I'm not at all surprised that they throw up their hands and say "no, thanks".
... So a fictional architecture board's imagined opinion somehow trumps the actual concrete experience I've had with working with Python in an enterprise environment? Wow. Good luck with this thread. I'm not entirely sure what the point of it is, but I'm sure you'll all come to some amazing conclusions by the end of it.
2010/5/9 Filip Gruszczyński <gruszczy@gmail.com>:
For some reason Python seems not to be seen as an enterprise technology unlike Java or .net. Do you think there any steps that could be taken, to change this opinion? I love Python, but all job offers I can find at the moment are web development. At my company we use Python a lot, but that's only because my lead is a very sensible person and sees python potential and me and my friend are python enthusiasts. Anyway, beside one Python + Qt project we mostly use Django for projects. How can this be changed? What Python is lacking?
I believe that marketing, or lack of, has played a big role in Python's acceptance. Java and C# have a big advantage by being promoted so heavily by large, well-known companies. When I talk to people I know in the enterprise space they don't understand exactly what Python is or what it can be. The pointy haired managers know that in a pinch they can get Java/C# guys because there are so many. Outsourcing (I personally don't like) is also much easier with Java/C#. -- David blog: http://www.traceback.org twitter: http://twitter.com/dstanek
On 2010-05-11, David Stanek wrote:
2010/5/9 Filip Gruszczyński <gruszczy@gmail.com>:
For some reason Python seems not to be seen as an enterprise technology unlike Java or .net. Do you think there any steps that could be taken, to change this opinion? I love Python, but all job offers I can find at the moment are web development. At my company we use Python a lot, but that's only because my lead is a very sensible person and sees python potential and me and my friend are python enthusiasts. Anyway, beside one Python + Qt project we mostly use Django for projects. How can this be changed? What Python is lacking?
I believe that marketing, or lack of, has played a big role in Python's acceptance. Java and C# have a big advantage by being promoted so heavily by large, well-known companies. When I talk to people I know in the enterprise space they don't understand exactly what Python is or what it can be.
The pointy haired managers know that in a pinch they can get Java/C# guys because there are so many. Outsourcing (I personally don't like) is also much easier with Java/C#.
As far as I'm aware no big company specifically promoted or promotes C++ (apart from those selling commercial compilers & related tools), yet C++ is still very widely used. Naturally, C++'s C-compatibility has been a big help, but most languages nowadays are C compatible (at least as far as being able to access C functions inside C libraries, and this includes Python of course). I think that one of the big wins for C++ (and C) was ISO standardization. Companies that use C++ know that they can get compliant compilers which gives them long term confidence that C++ is safe to invest in. (Of course Pascal is also standardized, and it hasn't helped the language at all.) Unfortunately, C++ has developed at a glacial pace in the last decade, with a much too long gap between standards. (They are hoping to get the gap down to five years _after_ the 2011 or 2012 standard is ratified!) If Python were to be standardized it would become much more visible and a much safer corporate bet. Such a process wouldn't be easy and I doubt anyone would want to update the standard too often. One possible way would be to standardize one particular version, but not the next two minor releases. For example, standardize 3.2, but not 3.3 or 3.4, then standardize 3.5, but not 3.6 or 3.7, and so on. This would mean that the standardization effort would take place about every four years (and which would only affect those involved in the standardization process). There would however, be a cost to the development community: maintaining the standardized version (e.g., bug & security fixes) until it is superceded. My 2c on "enterprise" Python;-) -- Mark Summerfield, Qtrac Ltd, www.qtrac.eu C++, Python, Qt, PyQt - training and consultancy "Advanced Qt Programming" - ISBN 0321635906
Mark Summerfield wrote:
One possible way would be to standardize one particular version, but not the next two minor releases. For example, standardize 3.2, but not 3.3 or 3.4, then standardize 3.5, but not 3.6 or 3.7, and so on. This would mean that the standardization effort would take place about every four years (and which would only affect those involved in the standardization process). There would however, be a cost to the development community: maintaining the standardized version (e.g., bug & security fixes) until it is superceded.
Someone could always decide to standardise Python 2.7 ;) Cheers, Nick. -- Nick Coghlan | ncoghlan@gmail.com | Brisbane, Australia ---------------------------------------------------------------
Mark Summerfield writes:
As far as I'm aware no big company specifically promoted or promotes C++
That's because the U.S. government dismembered it and in the process kneecapped a national treasure. :-P
If Python were to be [ISO] standardized it would become much more visible and a much safer corporate bet.
Perl managed without it, and AFAIK there is no ISO or ANSI Java, either (the #3 Google hit was "Sun Drops ISO Java Standards Effort For Good" from 1999). Admittedly, EMCAscript is there, but that came afterward, pushed by enterprises that had already adopted Javascript, and wanted to stop the Netscape vs. Microsoft whipsaw. In fact, Python not only has an excellent standard, but it has excellent testing of the standard, what with 4 major implementations aiming for conformance IIUC, plus assorted near-implementations such as Cython and Stackless. I suspect that a well-run marketing campaign by the PSF, starting by trademarking "Standard Python" and getting some funding to set up a conformance testing certification program, would do wonders at not such great expense.
On 2010-05-12, Stephen J. Turnbull wrote:
Mark Summerfield writes:
As far as I'm aware no big company specifically promoted or promotes C++
That's because the U.S. government dismembered it and in the process kneecapped a national treasure. :-P
Ah...
If Python were to be [ISO] standardized it would become much more visible and a much safer corporate bet.
Perl managed without it, and AFAIK there is no ISO or ANSI Java, either (the #3 Google hit was "Sun Drops ISO Java Standards Effort For Good" from 1999). Admittedly, EMCAscript is there, but that came afterward, pushed by enterprises that had already adopted Javascript, and wanted to stop the Netscape vs. Microsoft whipsaw.
True, and _what_ a language got specified!
In fact, Python not only has an excellent standard, but it has excellent testing of the standard, what with 4 major implementations aiming for conformance IIUC, plus assorted near-implementations such as Cython and Stackless. I suspect that a well-run marketing campaign by the PSF, starting by trademarking "Standard Python" and getting some funding to set up a conformance testing certification program, would do wonders at not such great expense.
I'm sure you're right, but I guess it would be quite an undertaking. -- Mark Summerfield, Qtrac Ltd, www.qtrac.eu C++, Python, Qt, PyQt - training and consultancy "Programming in Python 3 (Second Edition)" - ISBN 0321680561
Mark Summerfield writes:
On 2010-05-12, Stephen J. Turnbull wrote:
In fact, Python not only has an excellent standard, but it has excellent testing of the standard, what with 4 major implementations aiming for conformance IIUC, plus assorted near-implementations such as Cython and Stackless. I suspect that a well-run marketing campaign by the PSF, starting by trademarking "Standard Python" and getting some funding to set up a conformance testing certification program, would do wonders at not such great expense.
I'm sure you're right, but I guess it would be quite an undertaking.
I'm not at all sure I'm right<wink>, but the point is that it need not be such a huge undertaking. There are some governments out there who might be willing to supply some funding, and perhaps some consultancies might like to get into the certification game for fun and profit. It wouldn't be as big as deal as ISO, of course, but you get what you pay for (even if it's just a fancier rubber stamp!) OTOH, you might attract the attention of an on-average smarter crowd of PHBs this way, even if it's smaller than ISO certification would get. That has its advantages, too.
On Tue, May 11, 2010 at 11:13 PM, Stephen J. Turnbull <stephen@xemacs.org> wrote:
Mark Summerfield writes:
> If Python were to be [ISO] standardized it would become much more > visible and a much safer corporate bet.
Perl managed without it, and AFAIK there is no ISO or ANSI Java, either (the #3 Google hit was "Sun Drops ISO Java Standards Effort For Good" from 1999). Admittedly, EMCAscript is there, but that came afterward, pushed by enterprises that had already adopted Javascript, and wanted to stop the Netscape vs. Microsoft whipsaw.
[Within BigCorp] In my experience, Perl does "suffer" for it -- it is OK to admit that an application is already in written in Perl, and it *may* be OK to keep it in Perl instead of translating it to Java, but approval for a *new* application in Perl is non-trivial. I've never seen approval for an application in ECMAScript. I have seen several approvals for projects in HTML, with the one-paragraph expansion making it clear that this includes a smorgasbord of related "standards". These related standards always include JavaScript (only rarely called ECMAScript), if anything is called out at all. They usually include CSS and XML. In theory, python could slip in there, but because it is a server side technology, it still triggers questions on why the server isn't written in Java, or at least a "Microsoft standard".
In fact, Python not only has an excellent standard, but it has excellent testing of the standard, what with 4 major implementations aiming for conformance IIUC, plus assorted near-implementations such as Cython and Stackless. I suspect that a well-run marketing campaign by the PSF, starting by trademarking "Standard Python" and getting some funding to set up a conformance testing certification program, would do wonders at not such great expense.
My guess is that it still wouldn't be enough -- but I'm pretty confident that it would indeed help. -jJ
Python is ready for the enterprise; the enterprise is not ready for Python ;-) 2010/5/10 Filip Gruszczyński <gruszczy@gmail.com>:
For some reason Python seems not to be seen as an enterprise technology unlike Java or .net. Do you think there any steps that could be taken, to change this opinion? I love Python, but all job offers I can find at the moment are web development. At my company we use Python a lot, but that's only because my lead is a very sensible person and sees python potential and me and my friend are python enthusiasts. Anyway, beside one Python + Qt project we mostly use Django for projects. How can this be changed? What Python is lacking?
-- Filip Gruszczyński _______________________________________________ Python-ideas mailing list Python-ideas@python.org http://mail.python.org/mailman/listinfo/python-ideas
participants (12)
-
alex23
-
Antoine Pitrou
-
Bill Janssen
-
Bruce Frederiksen
-
David Stanek
-
Dj Gilcrease
-
Filip Gruszczyński
-
George Sakkis
-
Jim Jewett
-
Mark Summerfield
-
Nick Coghlan
-
Stephen J. Turnbull