Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Your installation process is overly complicated #141

Closed
lostinplace opened this issue Jul 14, 2015 · 14 comments
Closed

Your installation process is overly complicated #141

lostinplace opened this issue Jul 14, 2015 · 14 comments

Comments

@lostinplace
Copy link

you should write a script to maintain the dependencies, or create a package on any package manager to do so.

I know you probably can't do this for legal/product direction reasons, I just thought I'd drop a note to let you know, that this is something that developers complain a lot about when they have to work with Oracle

@cjbj
Copy link
Member

cjbj commented Jul 14, 2015

@lostinplace I disagree that installation is complex on Linux. You
install two Instant Client RPMs ('rpm -i *.rpm') and run 'npm install
oracledb'; nothing else is required at build or runtime. At most on
Linux/UNIX/OS X you have to unzip the Instant Client and set a few
environment variables.

If you are speaking about Windows, then well, it is Windows and a
complete pain for us all. So, tell us exactly what you want. What
platform(s)? What packages do you want managed? What package manager
would you prefer? What Oracle client versions do you want?

@cjbj cjbj added the question label Jul 14, 2015
@ecowden
Copy link

ecowden commented Jul 22, 2015

This is probably the single biggest issue we have with this library. Let me try and explain.

Desired State:

We'd really like to be able to npm install oracledb with no other dependencies on Mac, Windows and Linux. If we need to break apart the oracledb driver from the Instant Client, then we'd like to use npm for the Instant Client as well. Regardless, the same project with the same package.json dependencies should work on all platforms.

Why?

Mac. Most of our web developers use Macs. Instant Client installation on Mac OS X isn't too painful. The biggest issue is that there's not a good, cohesive way to set environment variables. Different developers use different shells, and IDEs can also start up with different environment contexts. The end result is that we have to do a lot of one-off troubleshooting. It's a pretty negative developer experience, and I've had more than one developer ask us why we would even use Oracle in the first place. I'd rather skip all that and just get coding.

Windows. Most of our dedicated Oracle developers use Windows for the Windows version of Toad. There's a lot of business analysts and others in the organization that use Windows, too. These people have varying degrees of technical expertise. We'd like to break down these silos a bit and promote more cross-functional development. The Windows installation has proven painful and error prone, and it's a terrible way to start off a collaborative effort.

Linux. Most of our server infrastructure runs Linux. That means that when we want to deploy, now we don't just need a server with Node installed, we also need yet another dependency. It's not just deploying applications, though. We repeat the same issue, for instance, when we want to do continuous integration and testing on our Jenkins server. An no, in a controlled enterprise environment, just downloading and installing a couple RPMs is not a simple thing!

Thanks!

@cjbj
Copy link
Member

cjbj commented Jul 23, 2015

@ecowden excellent summary. The power of customers' own words is always best.

@bchr02
Copy link

bchr02 commented Jul 23, 2015

This would fix everything: #18

@bchr02
Copy link

bchr02 commented Jul 29, 2015

@lostinplace, @ecowden In case you are interested, I created a video that might assist those trying to install on Windows: Video - install of oracledb on Windows 7 x64

@cjbj cjbj added enhancement and removed question labels Jul 31, 2015
@lostinplace
Copy link
Author

I'm on OSX actually

@lostinplace
Copy link
Author

I'm not saying that installation is impossible, just that it is unnecessarily difficult.

Even the step of adding two rpms before launching the package installation process adds complexity that is an irritant to a lot of developers, especially when for whatever reason, it just doesn't work.

I have nothing to say that @ecowden hasn't said better though

@ugate
Copy link

ugate commented Nov 14, 2015

+1 for installation complexity. Other DBs are much easier and do not typically require external installations/dependencies/directory manhandling. This is by far the biggest road-block for using Oracle with Node. One of the organizations I work for (~7k employees) is looking to expand our current use of Node and Oracle away from SQL Server, but this is a big deal for us in moving forward and may jeopardize our migration plans. @ecowden sums it up very well.

@cjbj @krismohan Are there any plans by Oracle to mitigate this issue anytime soon?

@hg-smart
Copy link

+1 for installation complexity, same package.json should work on "all" platforms, without installing visual studio prior installing oracledb.

@cjbj
Copy link
Member

cjbj commented Nov 16, 2015

@ugate in such a large organization can you centralize builds and make binaries available from a central repo? https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#winbins

Also check the great work @bchr02 has been doing on prebuilt binaries in #18

I'm going to close this issue as the problems are well known and are being addressed in various ways given the constraints.

@cjbj cjbj closed this as completed Nov 16, 2015
@ugate
Copy link

ugate commented Nov 16, 2015

@cjbj We can, but the challenge becomes managing those binaries on many different platforms/versions/etc. One of the nice things about working with SQL Server + Node was the use of TDS which minimized client overhead.

It's nice to see Oracle finally taking an interest in Node, but it's disheartening that it's not given the same attention and dedication as it's Java counterpart. Many organizations are migrating toward Node to reduce unnecessary complexity that other languages like Java are typically are known for. In fact, Node + oracledb is undeniably more complex than using JDBC. This is the opposite of what the Node community/enterprise has come to expect out of their migration/build processes. It's hard to justify to clients that we're reducing development time by transitioning to Node/micro services while we're adding 100+ MB thick client that's not OS/version agnostic/portable when doing so. I realize that oracledb has to work under the constraints that OCI clients provide, but it would be nice to see a paradigm shift at Oracle that understands the need to make a more significant effort toward future technologies like Node.

@cjbj
Copy link
Member

cjbj commented Nov 16, 2015

@ugate I understand your position and appreciate hearing from you. Node.js, although "young", is important to us: look at the announcement of https://cloud.oracle.com/nodejs and the use of Node is the https://cloud.oracle.com/mobile to name a few other touch points. Work is ongoing on a number of fronts.

@pedro-otero
Copy link

After reading all this and tutorials and videos and stuff, the step of the installation I'm most concerned about is the Visual Studio setup. It's big and slow, and you don't even actually install it, because you uncheck all the features. And yet it's slow. Of course this is not Oracle's fault. But couldn't Oracle provide a partial setup package with the C++ needed stuff and the part of the instant client? Would leverage a lot. I guess there would have to be some licensing/arranging with Microsoft. I just thought that maybe two big companies would find a way to do this easily.

@cjbj
Copy link
Member

cjbj commented Feb 4, 2016

@pedro-otero did you see #18 ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants