Does any other framework ecosystem work the same way? I don't follow Rails or other ones as closely as I do Python and Django.
The core team has been willing to rip out and improve central infrastructure but never at the cost of unreasonable backward incompatibilities, and all changes are documented. Upgrading is never easy on large projects but it's been the easiest in Django. And the third-party packages pretty much fill every niche in a very modular way.
I see other devs complaining about their current frameworks' lack of documentation or testing and I feel like I'm in a parallel universe. I can never go back trivially to year-old JS code (and Rails isn't that much better) without some level of breakage or a new way of doing things.
Of course other technologies share a similar position on the matter, but they generally don't move as fast as Django does.
For the most part they've not had to make huge changes because they've made good decisions at the beginning and resisted doing silly things in the core. Contrast with Rails and their scriptaculous past, which was dumped for coffeescript, which I'm pretty sure will be dumped soon (coffeescript is fading from the js mindset now for react/jsx/angular/typescript).
You're joking, right? They break compatibility with every minor version, forcing tens of thousands of developers to waste valuable hours each time they update.
If there's something to learn from this project, it's that if you find your niche and gain enough momentum, you can piss on your user base and they'll say it's raining.
A quick Googling estimates that Basecamp generates 10 million+ a month in revenue.
That's the one thing I like about Rails. Features and design decisions tend to come from real life use cases. The core developers have every reason in the world to make it the best it can be because their entire business depends on it.
In my for-profit organization, we thought we should contribute to the free / open source projects that we were using and which were helping us make money. We wanted to pay our share.
We started by putting together a list, and that's pretty much where it ended. The list was enormous. Try it yourself, and don't forget the components of other products that are FOSS. EDIT: Here's Mozilla's attempt at making such a list, which they label "incomplete":
On one hand, it reflects the incredible contribution of FOSS software. On the other there was no way, in a busy workplace, we were going to spend days tracking down all those FOSS developers, finding ways to send them money, and implementing it.
On the other hand this feels a bit like "Build the web applications of today, tomorrow!" I think that's an inherent problem with kitchen sink frameworks; new things that come along have be shoehorned into the old way of doing things, except when they can't, and then you have to restructure your foundation. I stopped using Django a couple years ago because the kind of apps I wanted to build were REST APIs, websockets, a little static file serving, and connections to realtime backends like redis pubsubs or RabbitMQ. Django wasn't great at any of those, yet carried a lot of baggage from stuff I didn't need (e.g. form handing, templates).
I would recommend Flask and/or its underlying Werkzeug library (my personal preference) over Django.
There are some projects that Django is not the right solution for and something like Flask/Werkzeug is definitely better, for sure, but I'm hopeful that the work being done here will help out the majority of people; it brings a lot more than just WebSocket support to the table, that's just the headline feature most people run with.
Flask is basically abandoned, despite continually receiving undocumented commits.
Flask hasn't even had a PyPi release, or even a Git tag for that matter, since June, 2013. The documentation is also far behind.
The other main difference is Django is developed as part of a large organization, Flask is not. Get the right people together and that could be fixed easily...
I use Werkzeug directly rather than Flask, so I can't speak to whether Flask is abandonware or not, but I'm very happy with Werkzeug. With very little effort, I get to build just enough framework for my application, without having to be shoehorned into someone else's tradeoffs.
Have you tried out Falcon, btw? If so, how does it compare to Werkzeug?
They add tons. There are many commits, bug fixes, etc. It's just that there A) hasn't been a release to PyPi, B) is an inordinate quantity of unmerged pull requests, C) are many undocumented changes, and D) issues like https://github.com/mitsuhiko/flask/issues/1272 that are over a year old (I left a comment https://github.com/mitsuhiko/flask/issues/1575#issuecomment-... explaining the vicious circle that I believe is created by not releasing to PyPi). I commit to Django (and donate), but I would never commit to Flask when it makes no attempt at Industry Standards™ like PyPi releases.
I shouldn't have said it's "abandoned", because that's an insult to the parts of the community that are very active.
Im wondering what's a suitable alternative.... with SQLAlchemy and Celery/RQ integration?
This is the best news! Thanks @ Andrew Godwin (since I see him in here) for all the work you've done on Django over the past N years. I've contributed small amounts of money to the fellowship program 3 or 4 times now, but the sum of that program's entire fundraising for 2015 is almost tripled by this single grant, and the purpose of this grant money is so exciting. Channels is awesome; so is Django REST Framework. Adding the best of these things to the core and tightening some of the architecture sounds exciting. It helps to position Django for continued relevance, web services and real-time applications become more popular.
Why ask for donations if you are expecting to donate the money away instead of using it to improve your products?
I donated to mozilla a few weeks ago, but now I wonder if I should have just donated directly to django instead, skip the middleman that is not adding anything.
Nonprofits often fund themselves through donations, and award grants as a means of advancing their mission.
> I donated to mozilla a few weeks ago, but now I wonder if I should have just donated directly to django instead, skip the middleman that is not adding anything.
If your primary concern was the mission of the Django project, you should have donated to Django directly. If it was the mission of the Mozilla project, then donating to Mozilla makes sense. That the Mozilla project determined that one of the ways in which it should expend resources to achieve its goals was to give grants to other OSS projects for specific, identified tasks does not, in any way, change that the funds are being used to support the mission of the Mozilla project.
How many companies do you know that are giving back to the open-source projects they depend on? I don't know that many, so I think those that do should be praised for it.
Django is very widely used by Mozilla as far as I'm aware. By supporting djangoproject they are improving their (Mozilla's) products. This is not entirely altruistic on Mozilla's part.
I appreciate what you are saying and would agree if Mozilla were just looking around for worthwhile FOSS projects to donate money to without any regard for whether or not they were using or intending to use them to achieve their own goals.
Such a valuable use of donations!
To me, this is one of two things. Either Mozilla is saying "We'll give you money, but you gotta get rid of words we don't like", or they're actually spending significant efforts on political correctness.
Both outcomes are frankly disheartening. I will no longer be donating to Mozilla. They're spreading themselves thin as it is, they don't have the resources to throw away money on political pointlessness.
Not a lot of work - it's not a significant part of the grant to buildbot, and completely insignificant in the big picture of the other grants.
I can understand if you personally don't consider any efforts on such a topic worthwhile, and respect you for your position. But a lot of people do care about it, buildbot has wanted to do it for a while, and it harms no one to finally get this accomplished.
Doesn't it now?
See my detailed answer below [https://news.ycombinator.com/item?id=10721003] as to why this sort of thing is actively harmful.
Sad to see HN downvoting legitimate discussion left and right, though. This is as bad as reddit.
I do get the worry about overreach. Node.js has a PR that will automate looking for "problematic" words, which starts to sound Orwellian. However, the opposite extreme of "change no words no matter who is offended" can't work either. We need to find a reasonable middle ground.
It seems like removing "slave" is fairly reasonable - that's my feeling. What I find far more unreasonable are drive-by comments that complain without offering to do some work to help. But work to help is exactly what's happening in this (small part of this) story.
A better reason is that naming things is hard, and changing master/slave to leader/follower dilutes the accuracy of the metaphor. That's why hard drives and databases, etc use master/slave, and consensus algorithms or self-organizing networks use leader/follower.
After all, if you don't lose meaning from changing the terms, there's nothing to argue aganst from a technical perspective. Then it just becomes your ideologies vs. their's and now people are arguing about politics in pull requests instead of being productive.
> Buildbot's MOSS application: $10k to remove slave from all code/docs, $5k to work on stability/handling shutting down EC2 slaves when buildbot master crashes/exits/restarts (djmitche, 16:39:19)
Welcome to the "fear of offence" culture. Should coin a term for that - offendiphobic?
Edit: I'd like to point out to the silent downvoters here that there's legitimate concerns being raised in this subthread about money being wasted on political correctness, which are not being addressed by any of you. If you are unable to give a counterpoint, you should rethink your position instead of downvoting based on emotions.
For every person and in every culture, offending people is considered wrong. To suggest that it doesn't matter is not a serious argument.
Apparently 'slave' doesn't offend you. It doesn't offend me either (I remember being a little uncomfortable with it long ago, when I first encountered it, but I don't notice it now). But for me to say that therefore it is not offensive to others would be ignorant and self-centered, as if the world revolves around my views and experiences. If others say they are offended then I respect that; I hope they would respect my concerns if I was offended.
Also, a common cause of discrimination is due to honest ignorance on the part of people in the dominant group. Like all humans, they are blind to things that they don't experience themselves; for example, consider law enforcement discrimination against minorities. It's happened for decades or centuries, but wasn't taken seriously until we actually had film of it due to the spread of cameras. That's another good reason to think that whether or not something bothers me is not evidence of whether it offends others.
Finally, the dominant culture in the U.S. was built at a time of widespread, accepted discrimination, and many artefacts of that time persist. People may get tired of seeing so much of it being challenged and changed, from school buildings named after slave holders; Confederate flags; and movie casts, company executives, etc. being almost all white and mostly male, etc. But being tired of the challenge and change, rather than of the discrimination, is a 'first world' problem, so to speak.
That's actually not at all true. For many people, and in many cultures, certain things are considered both wrong and proper subjects for offense, certain things are considered wrong when they are the subject of offense (and thus are also proper, while not necessary, subjects of offense), and other things are not considered wrong independently of whether some people find them offensive (and, in fact, being offended by them, or at least expressing such offense, may be considered wrong itself.)
The idea that anything that anyone finds offensive is, ipso facto, wrong is not a cultural universal, and AFAICT not held by many people at all (even people who seem in some contexts to appeal to that idea seem to find some instances of offense unjustified and unworthy of consideration.)
There are words in the english language which are offensive because they are specifically employed to be offensive. Swear words, words used in offensive (as in, literally offensive) contexts, verbal abuse etc.
We avoid using this words in civilized discourse not because we're afraid to offend, but because we have no need for them. We don't intend to offend. If we intend to offend, we use them - there is no political correctness involved in not using actual offensive terms.
Now when a word has a non-offensive meaning and actually offends people, it's important to look at why this happens. Does it only offend one person or does it offend many? Is it meant to offend, is it used in an actual offensive context? Is the person being offended themselves or by proxy?
This is a conversation I've had before when the Django PR came up, so I'll save you looking these up. You'll note that in that PR, almost everybody praising the PR was white, 18-30 years old. The people being offended are near-unanimously fighting a cause that isn't their own.
There's nothing wrong with that of course - I'm not gay, yet I fight for gay rights for example. But was this ever actually an issue for the black community?
Do you know why it's important to answer that question? Because if the answer is no, then you are fabricating problems for a community you are not even a part of. It is not harmless - it is actively harmful.
If a word, a technical word, was not a problem one day, and is a problem the next, you have now artificially widened the gap a certain minority needs to cross in order to be part of the programming community.
And if you look at it closely, you'll see this is exactly what happened. This issue got artificially popular with Django (just about a decade after the LA nonissue). Now it's causing problems in other parts of the technical community. Something which wasn't a problem a year ago, is now a problem - your FOSS project which was open to all, is now perceived as potentially racist.
I don't get pissed off at these things because I get a kick out of discrimination. I get pissed off because they make things worse.
1) You are saying that you don't know if it's offensive to blacks. Shouldn't we find out before condemning the change?
2) I think you are blowing out of proportion the consequences of erring on the side of not offending. I think they are minor. It's really about a bigger issue, which is why both of us are writing so many words about it.
3) I take your word for it that this isn't the case for you, but for many people this issue is a proxy - a dog-whistle - for change to the status quo dominant culture. It's like people who objected to or advocated school busing when really it was about desegregation, or people fighting over Syrian refugees when it's really about Muslim immigrants (at least Trump was honest).
Anyway, the essential thing is to get these issues out in the open and learn from each other. Good talking to you.
I was very careful not to say anything on what I know. But since you bring it up, what I know is that the original issue in the tracker was created in bad faith and people hopped on the bandwagon. Addressing this is another discussion entirely.
> I think you are blowing out of proportion the consequences of erring on the side of not offending.
I'm open to hear arguments as to why what I'm saying is "blowing things out of proportions", when all I'm claiming is that the direct results of these actions are producing the exact negative of the effects they intend to. So really, my argument's proportion is relative to how large of an issue you think the original premise is.
Another consequence of course is opening your project up to abuse. If people see that you'll cave in to any form of "political correctness" pressure, they'll double down and find more faults, and if there are no more faults they'll create them for you. I'm speaking from experience - This is something we see a lot in the game development community.
I think it's unfair to the Django people to make that allegation without substantiating it. Otherwise it's just a mean rumor.
> all I'm claiming is that the direct results of these actions are producing the exact negative of the effects they intend to. ... If people see that you'll cave in to any form of "political correctness" pressure, they'll double down and find more faults, and if there are no more faults they'll create them for you.
It's hard to tell if you are making a prediction or saying it has happened. Could you provide evidence of these consequences happening to the Django project? Also, perhaps those additional faults are real to others but not to you - returning us to the orginal discussion of how one judges what is 'offensive'.
> "political correctness" pressure
I think today's "political correctness" is to criticize people pointing out any kind of prejudice. They are automatically assumed to be in bad faith and attacked, with the same criticisms almost every time, regardless of the content or merits of their complaint. It's an attempt to intimidate into silence anyone thinking about complaining, which I think is unhealthy and disrespectful.
> If a word, a technical word, was not a problem one day, and is a problem the next, you have now artificially widened the gap a certain minority needs to cross in order to be part of the programming community.
This is a stretch. Substituting careless technical writing for equally clear and meaningful terminology doesn't harm anyone's ability to stand up continuous integration.
You are misinterpreting what I'm saying. Substituting one word for another is not harmful in and of itself. The context around it makes it harmful.
For the sake of the argument, let's go to a parallel universe in which a group (any group) decides that the word "lambda" is offensive to them. Like very offensive, heavily politicized etc. It's not a very common word overall in English, but used quite a bit in specific domains.
Now let's say some small parts of the programming community gets together and agrees that "lambda" is offensive and changes it to a less-offensive equivalent. Is the programming community now more or less welcoming overall?
If there was a real problem with the word, the outcome is slightly positive. But if there wasn't, the outcome is extremely negative: Something which didn't use to be a problem, is now a problem. The community appears less inclusive.
Back to our universe now. Do you still think it's wise to carelessly change words whenever someone claims they're offended without actually verifying those claims? Is it still wise to bundle up to an issue you're not affected by when it's more than likely created by people who aren't affected by it either?
I do hope at least some people realize that this is widely open to abuse, as well.
Here's where I lose you. I don't see how it's more than very slightly negative. To whom is the community less inclusive? People who like to use the word "slave"? People who think this issue is a waste of time? You can find people like that for every issue; if that minor detail turns them away, they weren't going to stay long. People who ideologically object to the attention paid to prejudice or actually are prejudicial? The latter are an easy case; the former - anyone working on a team must learn to respect others' views and accept being outvoted, with regularity.
The majority of people don't have a problem - you're creating a problem for them.
You keep implying or asserting this, but you don't back it up. I don't believe it (unless taken literally, under the premise that only the interests of people in the majority matter). I believe you don't think it's a problem, but I've read many things over many years that disagree.
Also as pointed above, the issue is not a word _offends you_
There are not "legitimate concerns being raised", it's just you, complaining that money is being spent on "political correctness", as if it's somehow bad for a non-profit to spend money to try and improve the world.
Your other points are no more legitimate than "gay used to be a perfectly good word meaning happy how can we express happiness without it" or "people don't object to me when I call them [racial slur] so it must be fine" have ever been. Addressing them directly is exactly the sort of fruitless conversation derail nobody wants.
> There are not "legitimate concerns being raised", it's just you, complaining that money is being spent on "political correctness", as if it's somehow bad for a non-profit to spend money to try and improve the world.
OK so first of all, a significant amount of my donation money goes to Mozilla - so this is not me complaining where "money is being spent", it's me being concerned my money is not being spent efficiently.
Second, "to try and improve the world", sorry, what? Grepping out technical terms from documentation is "improving the world" now? You have one low bar for improvements. Mozilla's mission is to keep the web open and free (or so they claim), and political correctness has nothing to do with it. Even if it were a worthy goal to reword such docs (it's really not, and I explained why), it is not Mozilla's job. They're not good at that task nor are they a company you donate to to get such tasks done.
As for what you're going on about with the word "gay" or racial slurs... I'm honestly speechless if you're equating them together, let alone equating them to the word "slave" which is used non-offensively in several communities. If you up and decided that slave is a racial slur now, maybe I should just up and decide that your posts offend me and that they should be replaced with rainbows.
Second: "political correctness" is easily semantically replaced with "trying to avoid excluding people". Trying to avoid excluding people is a basic way to improve the world, and should be applied across all fields, including software engineering.
Third, I am pointing out that your point about language is without merit. There are all sorts of words which were considered one way by reasonable people at one time which no longer are. No matter how in the right you feel you are about the purity of using master/slave, the tide is against you. Just like analogously it was with those who thought certain racial slurs were purely descriptive.
If you think the tide is always right, you got another think coming. Your mentality seems to be "I'll be part of the tide to make sure I'm not racist". That is the mentality of someone who cannot form opinions of their own.
I'll make a sidenote here and remind you that that tide you're going on about is extreme american culture. In Europe, you bring this idiocy up and you will be laughed out of the front door. Amusingly, if you look at the upvote/downvote history on the posts here, you'll find that they coincide with active hours in the US. As a night owl, this is something I see a lot on HN and Reddit alike.
You shouldn't surf blindly. Naturally you choose the tide you want to surf. Do you want to ride the waves toward hatred, oppression and exclusion, or do you want to swim towards inclusion and togetherness? I choose the latter, even if it means seeming precious to some.
But I'm quite tired of this; there's clearly no way to explain to you that this is a fabricated issue which is damaging to both the minority group and the community. So by all means, keep riding the pretend wave - don't be surprised when it just makes things worse.
By the way, I didn't address it, but your idea that changing it could be damaging to a minority group is flatly idiotic. Even if you were right and this was terminology that wasn't truly offensive, it wouldn't render it offensive and thus create exclusion in other unchanged places where none had existed before. People understand that changes take time to propagate. The only theoretical danger would be the sort of devs who Take A Stand and wilfully continue to use the old language to make a point, regardless of who they offend. And, yes, those men would then be exclusionary. As you want to be.
You've spent a lot of time here being offended by political correctness, "wasted money" and alleged political motivations.
Can you think of why one sentence in a successful Buildbot grant proposal would get you so upset that you'd write thousands of words, many of which slander Mozilla, Django and Buildbot community members?
It wasn't logic that got you there, it was an emotional overreaction to something that really doesn't concern you at all except that it offends your politics.
And am I "offended" now? I'm not offended, I'm sad. I'm sad common sense is out of the window when it comes to treating minorities with respect and dignity.
This little thread is very representative of the circus of political correctness: A bunch of people not part of a minority, speaking and acting on behalf of a minority that did not have a problem in the first place.
Offending my politics. Good one.
It is a bit strange that the blog post listed the smallest donation first, which meant that the documentation change was the first task mentioned. But it's a tiny part of the whole picture.
So your argument is invalid.
In practical terms, what does this mean for those of us who use Django and Django REST Framework? Will there be a graceful transition path to the planned all-in-one model? What timescales are likely?
Also curious about which version(s) of Python are likely to see continued support.
I appreciate that some of these questions probably can't easily be answered yet, but a steer would be appreciated.
As for Python versions, there isn't any plan to drop 2.7 yet and Channels will work on it. It might be we move to Python 3 only at some point in the future, but there are no firm plans right now.
They have around 15 django libraries on GitHub as well https://github.com/mozilla?utf8=%E2%9C%93&query=django
Probably because they use it at mozilla.
I would also like to congratulate Mozilla for this program, several other great projects are being funded.
I'm new to AppEngine and I'm familiar with Django, so that would have been my first choice - but it seems like Flask, Werzkeug, Webapp2 are more popular - just curious why, or how good/bad Django is on it.
There's compromises in using the datastore - you can't do a lot of things that are dead simple with SQL, but in return you get massive scaleability. And the App Engine SDK itself can be a pain to work with, but there are also amazing features like task queues for background processing and Google Cloud Storage integration.
Other than Django I've used Bottle for very small App Engine projects. Works great, it's faster than Django, I'd still prefer Django for a typical complex web app where you need all the features.
Disclaimer: I work for Potato, which sponsors djangae development.
Oh good. $15,000 well spent.... sigh.
Really great stuff.
I've worked with Go but I would still prefer using Django to start off a new project. The rich set of libraries it provides is only rivaled by Rails among web frameworks. I've never felt I was fighting the framework and it actually taught me several good practices.
This grant shows how Django is embracing the new web and moving forward. I am happy I will be able to continue to use Django for use cases it does not cover now.