On Tue, Apr 28, 2009 at 10:17 PM, Nathan Auch [Sybase] <na...@sybase.com> wrote: > > I'm a developer on the core engine team of the SQL Anywhere database > server (http://www.sybase.com/products/databasemanagement/sqlanywhere). > We're in the final stages of adding a SQL Anywhere database backend to > Django and would like to share our work with the community. What is the > process for getting our new database backend into the main Django > repository?
Hi Nathan, Thanks for going to the effort of supporting Django! The more backends the merrier! The process of getting your backend into Django trunk goes a little something like this: 1) You open a new ticket describing the new feature (SQLAnywhere support) 2) You upload your backend as a patch against the Django trunk 3) You demonstrate over an extended period of time (6-12 months minimum) that you are committed to keeping your backend up to date. 4) We accept the backend, and give the developers of that backend limited commit access to keep the backend up to date. Step 3 is the big hurdle here. It requires that you keep up to date with any changes to the Django core - if we add a new function to the backend interface, or a new feature to queries (e.g., aggregates), you would be expected to port those changes in a timely fashion. It also means that someone (and preferable multiple someones) from Sybase's engineering team needs to get involved with the Django community, engaging with design discussions that affect database backends, etc. As a heads-up, there will be a few of these discussions in the near future. Multiple DB support has been accepted as a Google Summer of Code project - you can bet this will affect backends. Backend modifications required to support column/key-value stores (CouchDB/BigTable etc) may also crop up in the near future. This is a deliberately lengthy process. When we add a database backend to Django, we (the Django Core) are implicitly committing to keeping that backend up to date. Our old MSSQL backend went stale simply because the original contributor didn't maintain the code, and the core team didn't have ready access (or, for that matter, the personal inclination) to support the backend. We don't want to see a repeat of this, so we will err on the side of caution before adding a new backend. We're not going to add anything until we know that we're going to get a couple of committers that are both willing and able to maintain the backend for the long term. If any licenses are going to be required to test your backend, we'll probably hit you up for a few complimentary copies so the core team can independently test your code. We're also going to need to see some sort of demonstrated demand before we add a new backend to trunk. Prior to the addition of the Oracle backend, the Django mailing lists had regular requests for Oracle support. We still have regular requests for MSSQL support. Without wanting to squash egos, I can only find 2 requests in the Django-users archive for SQL Anywhere support. I appreciate there is a certain amount of "build it and they will come" involved here, but you will need to convince us that they actually will come if we build it :-) The good news is that from a purely technical perspective, your code doesn't need to be in the Django trunk in order for your userbase to use Django. Django database backends can be referenced as an external library. In your DATABASE_BACKEND setting, in addition to 'postgresql', 'sqlite3', and the other official backends, you can provide a python module name, and Django will load and use that backend. Supporting your backend as an external module will be the preferred approach for at least the short term. It's not a complete loss, though - you can use this external support as part of the process of proving you are committed to Django support. Download stats for that backend could also be used to demonstrate the level of user demand. As an interim measure, if you can show to us that you have a working backend, we're happy to put a note in our documentation that directs people to your external library and documentation. Yours, Russ Magee %-) --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-developers@googlegroups.com To unsubscribe from this group, send email to django-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-developers?hl=en -~----------~----~----~----~------~----~------~--~---