MicroStrategy Inc. v. Li

PRESENT: All the Justices MICROSTRATEGY INCORPORATED v. Record No. 032239 OPINION BY JUSTICE BARBARA MILANO KEENAN September 17, 2004 WENFENG LI, ET AL. FROM THE CIRCUIT COURT OF FAIRFAX COUNTY M. Langhorne Keith, Judge In this appeal, we consider whether the chancellor erred in holding that the plaintiff failed to meet its burden of proving that the defendants misappropriated certain trade secrets, within the meaning of the Virginia Uniform Trade Secrets Act (the Act), Code §§ 59.1-336 through –343. We will state the evidence in the light most favorable to the defendants, Actuate Corporation (Actuate), Wenfeng "Wayne" Li, and Xiaogang "Gary" Xue, the prevailing parties in the circuit court. Barner v. Chappell, 266 Va. 277, 283, 585 S.E.2d 590, 594 (2003); Jenkins v. Bay House Assocs., L.P., 266 Va. 39, 41, 581 S.E.2d 510, 511 (2003). According to this evidence, MicroStrategy Incorporated (MicroStrategy) and Actuate are "indirect competitors" that design, license, and support highly sophisticated computer software known as "business intelligence software." Business intelligence software facilitates data retrieval by allowing users to directly retrieve selected data from the volumes of information stored and collected by a business. The data that these businesses collect are stored in computer memories called "data warehouses." MicroStrategy competes primarily in an On Line Analytical Processing (OLAP) "power-user" market. OLAP is a feature that allows users to sort or rearrange columns of data in a business report and to "drill down" or engage in "data mining" within a column to retrieve more specific data from the report. Unlike MicroStrategy, Actuate primarily competes in "a less sophisticated market that does not require OLAP or other high- end analytics." MicroStrategy's "flagship" product, "MicroStrategy 7," was released in June 2000. MicroStrategy spent about $35,000,000 and four years in the design and implementation of MicroStrategy 7, the sales of which represent the bulk of MicroStrategy's revenue. MicroStrategy 7 was not merely an enhancement of MicroStrategy's previous software products, but was created "from scratch" when MicroStrategy chose to "completely rewrite its product" to address the structural limitations of its existing software and to meet its customers' evolving needs. MicroStrategy 7 features an enhanced ability to deliver information to a larger group of users and allows a greater number of users to have simultaneous access to the stored information. MicroStrategy 7 has increased reliability through the installation of a "failover function," which allows a 2 computer server's data to be "seamlessly redistributed" to other computer servers "with little or no disruption of service" in the event that a server "crashes." Customers who purchase MicroStrategy 7 also are required to purchase a "commercial relational database" to manage their data warehouse. Actuate's premier product, Actuate 6, was released in May 2002. Unlike MicroStrategy 7, Actuate 6 did not result from the development of a completely new software product, but was an enhancement of Actuate's existing software. The development of Actuate 6 was "in the early planning stages" by the time Actuate's previous product, Actuate 5, was released in December 2000. At "a high level," Actuate 5 and Actuate 6 are very similar products, the "primary difference" being that Actuate 5's "core servers" were combined into "a single process" for Actuate 6 and the server in Actuate 6 "operates in a cluster environment." Another major difference between Actuate 5 and Actuate 6 is the inclusion in Actuate 6 of a proprietary database which, unlike the software in MicroStrategy 7, allows customers to manage the data warehouse without purchasing a commercial relational database from a third party vendor. Both MicroStrategy and Actuate use the "C++" computer programming language to write the underlying "source code" for the design and implementation of their computer software 3 products. The C++ programming language is the "language of choice for systems programming on nearly all major computing platforms." MicroStrategy 7 and Actuate 6 both use "metadata" to organize and identify the data stored in their customers' data warehouses. "Metadata," which also is referred to as "data about data," is a relational database that contains information about the data located in a data warehouse. The metadata is accessed through certain tables and indexes, which collectively are known as the "schema." The tables and indexes in the schema provide the organizational structure for a product's metadata and allow a user to locate more quickly information stored in the user's data warehouse. The schema for the two companies' software products are "quite different." MicroStrategy 7 has a "homogeneous" schema in which different objects are stored in the same ten tables. Actuate 6, however, has a "heterogeneous" schema that stores objects in 44 different tables. The use of a "homogeneous" versus a "heterogeneous" design resulted in "a number of differences in the table structures for the two schemas" of MicroStrategy 7 and Actuate 6. MicroStrategy and Actuate also both use "StrongPointers" and "SmartPointers" (collectively, pointers) to combat "memory leak," which is a commonly occurring problem in the operation of 4 computer software programs. Memory leak occurs when a software program uses a portion of a computer's memory for a particular operation and fails to release that memory back to the computer once the operation is completed. A "pointer" is a feature that is written into a software program's source code and identifies specific pieces of a computer's memory. A "StrongPointer" is a pointer that is designed to release a portion of a computer's memory once that portion is no longer being used by the software program. A "SmartPointer" is a "more sophisticated" type of pointer that releases the computer's memory once the "last pointer to the memory has finished with the memory," similar to a system in which the "last one out turns off the lights." In May 1996 and June 1997, respectively, MicroStrategy hired Li and Xue as software engineers and assigned them to work on the development of MicroStrategy 7. While they were employed at MicroStrategy, both Li and Xue executed MicroStrategy's Employment Agreement in which they pledged not to disclose or use any of MicroStrategy's confidential information for their own benefit or for the benefit of any party other than MicroStrategy. Before joining MicroStrategy, Li earned undergraduate and master's degrees in computer science and acquired three years of software design experience working for various computer companies. Li's professional experience included the design of 5 a complex database schema that required the use of hundreds of tables to store information relating to customer usage. Prior to working at MicroStrategy, Xue also earned undergraduate and master's degrees in computer science, with an emphasis on database systems and design. Xue had served as a teaching assistant for a graduate course involving schema design. He also had worked as a research assistant on a project for the National Aeronautics and Space Administration (NASA) that involved the creation of a complex "object oriented relational database and table and indexing schema design." Both Li and Xue received several promotions during their employment with MicroStrategy. Li was promoted to the position of "lead engineer" for one of the teams working on the development of MicroStrategy 7, and he eventually became the head of that team. While in this leadership capacity, Li had access to all the design documents and the source code for the MicroStrategy 7 project. Xue also became the leader of one of the teams working on the MicroStrategy 7 project, and he wrote the source code implementing the design of the metadata schema for MicroStrategy 7. Li left MicroStrategy in November 2000 and was employed by Actuate later that month; Xue left in February 2001 and began working at Actuate shortly thereafter. Actuate assigned Li and Xue to work on the development of Actuate 6. 6 Xue created some of the tables and indexes for the metadata schema in Actuate 6. Li served as the head of the "server team" for Actuate 6 and was responsible for allocating resources and projects to various server teams and for reviewing designs and specifications to ensure that the product satisfied management's requirements. Although Li was a "hands-off manager" at Actuate and was not involved in any "low-level decision-making," he wrote some of the source code for the StrongPointers and SmartPointers in Actuate 6. In June 2001, MicroStrategy filed a bill of complaint against Li, Xue, and Actuate (collectively, the defendants) alleging, among other things, that the defendants misappropriated MicroStrategy's trade secrets in violation of the Act.1 MicroStrategy alleged that Li and Xue disclosed MicroStrategy's confidential information to Actuate, and that the defendants used that information in the design and implementation of Actuate's products. MicroStrategy sought damages in "an amount not less than" $5,000,000, and asked the chancellor to "enjoin Actuate from developing, marketing, selling, licensing, or making any use of any product that in any 1 MicroStrategy filed additional claims in its bill of complaint against some or all of the defendants alleging breach of contract, tortious interference with contractual relations, breach of fiduciary duty, and conspiracy to injure MicroStrategy in its trade or business. However, those claims are not before us in this appeal. 7 respect or to any degree is based on, derived from, or incorporates any of MicroStrategy's [c]onfidential [i]nformation or trade secrets." Code § 59.1-336 defines "trade secret" as follows: "Trade secret" means information, including but not limited to, a formula, pattern, compilation, program, device, method, technique, or process, that: 1. Derives independent economic value, actual or potential, from not being generally known to, and not being readily ascertainable by proper means by, other persons who can obtain economic value from its disclosure or use, and 2. Is the subject of efforts that are reasonable under the circumstances to maintain its secrecy. Code § 59.1-336 also defines "misappropriation," in relevant part: "Misappropriation" means: . . . . 2. Disclosure or use of a trade secret of another without express or implied consent by a person who . . . . b. At the time of disclosure or use, knew or had reason to know that his knowledge of the trade secret was . . . . (2) Acquired under circumstances giving rise to a duty to maintain its secrecy or limit its use; [or] (3) Derived from or through a person who owed a duty to the person seeking relief to maintain its secrecy or limit its use. 8 Initially, MicroStrategy claimed that the defendants misappropriated 242 trade secrets. However, before trial, MicroStrategy presented the chancellor with a list limited to eight alleged trade secrets that MicroStrategy maintained the defendants misappropriated. Three of those eight alleged trade secrets, MicroStrategy's StrongPointers, SmartPointers, and certain indexes in its metadata schema, are the subject of this appeal. At trial, Li testified that when he left his job at MicroStrategy, he did not take with him any of MicroStrategy's technological information, design documents, or copies of its source code, and that he did not bring any such information or documents to his employment at Actuate. Li stated that when he wrote the source code for Actuate's pointers, he used various resources, including two books about the C++ computer programming language and some Microsoft template libraries. Li also relied on his knowledge of other implementations of pointers available to the public and on his general knowledge of pointers and the C++ computer language. Li testified that he did not use any part of MicroStrategy's source code in choosing what features to include in Actuate's pointers. He stated that the task of writing the code for Actuate's pointers was not difficult compared to other source 9 codes he had written, and that while he "wouldn't call it the easiest one . . . it would be among those." Xue testified that he did not use MicroStrategy's table structures and indexes in creating the tables and indexes for the Actuate 6 metadata schema. Xue explained that the materials he relied on were the Actuate 5 source code, training manuals for Actuate 5, the Actuate 5 product itself, and certain documents describing Actuate's business needs and source code given to him by Paul Rogers, a principal engineer at Actuate. Xue stated that once he understood this information, all he needed to do was "apply the database design principles that [he] learned in [his] . . . undergrad and graduate curriculum to come up with the final table and indexes" for Actuate 6. Xue further explained that the index and table designs he developed at MicroStrategy could not have helped him in creating the indexes and tables for Actuate 6, because MicroStrategy 7 and Actuate 6 were two "very different" applications, and that a "particular design for one system . . . will only make sense if the application is exactly the same." Xue stated that the project he worked on at NASA was "far more complex" than either the MicroStrategy or the Actuate database schemas. Rogers testified that although each version of Actuate's product is built upon a previous version, between 20 and 30 percent of Actuate 6 was unique to that product and did not exist 10 in Actuate 5. He stated that through the application of "normalization rules" to the data in Actuate 5, one could create the metadata schema for the relational database in Actuate 6. Rogers also explained that most of the tables and indexes for Actuate 6 were completed before Xue's arrival at Actuate. Rogers stated that the resource materials he provided to Xue included "all the documentation" on Actuate 5, the "reverse engineering" of the data in Actuate 5's servers, the source code for Actuate 5, and access to metadata schema created by Rogers for a different part of Actuate 6. Rogers explained that while there were "different ways" in which a schema could be designed, there were only a few schema designs "that would make sense" given the important characteristics of Actuate 6. MicroStrategy presented the expert testimony of David J. Hutz, who earned a master's degree in applied mathematics and was employed by MicroStrategy between 1997 and 1999. During his employment at MicroStrategy, Hutz served as a program manager, product support manager, field engineer, and technical support engineer. Hutz testified that while Li "definitely" did not copy MicroStrategy's source code in his design of Actuate's SmartPointers, it was "not clear" whether Li copied MicroStrategy's code in his design of Actuate's StrongPointers. Hutz also stated that of 28 points of comparison between the 11 StrongPointers in MicroStrategy 7 and those in Actuate 6, three points were "unique" and were not found in the code for Actuate 5 or in the code of any pointer available to the public. He ultimately conceded, however, that it was "possible" that some features he considered "unique" could be found in other generally accessible sources. Hutz further conceded that the "only basis" for his opinion that Li had used or disclosed the design and implementation for MicroStrategy's StrongPointers was that "Li wrote the StrongPointer at Actuate and that Actuate's StrongPointer look[ed] similar to MicroStrategy's StrongPointer." Hutz assumed that Li, "without MicroStrategy's code in front of him and without having been one of the people who wrote the StrongPointer at MicroStrategy, . . . just remembered the entire design or the entire code when he sat down to write the Actuate code." However, Hutz agreed that it was "possible" that Li could have remembered features from other widely-available pointers at the time he wrote the code for Actuate's pointers. Hutz concluded that Xue could not have arrived at the index designs he created for Actuate "without relying on MicroStrategy's confidential information about its table structures and indexes." Hutz testified that five tables and their corresponding indexes in Xue's early drafts of Actuate's metadata schema "looked very similar" to five tables and indexes in MicroStrategy's metadata schema. But Hutz was unable to state an opinion regarding how 12 many of the final indexes in the metadata schema for Actuate 6 were "tainted . . . with MicroStrategy's confidential information and proprietary knowledge" because he had not examined the final indexes. The defendants presented the expert testimony of Dr. Scott D. Meyers, who has a Ph.D. in computer science and is one of the leading experts in the C++ computer programming language. The chancellor qualified Dr. Myers to testify as "an expert in the C++ programming language, the design and implementation of software memory management tools, generally, and the design and implementation specifically of . . . SmartPointers and StrongPointers." Dr. Meyers stated that "the idea of using [pointers] for resource management purposes is very widely known in the C++ community." He identified several "fundamental" design differences between MicroStrategy's and Actuate's pointers. One of those differences was that MicroStrategy's pointers could handle both "pointer[] and non-pointer resources" while Actuate's pointers could only handle "pointer resources." Dr. Meyers stated that this design decision was a "fundamental difference" because "[i]t speaks to how general" the designers are trying to make the software and it affects the way the source code is written. Another "fundamental difference" noted by Dr. Meyers was MicroStrategy's use of "assertions," which are "pieces" of source 13 code designed to find mistakes in the writing of the program, that were not used in Actuate's software. Dr. Meyers concluded that "[a]t a high level," Actuate's SmartPointers represented a "fundamentally different design" and were "not really comparable" to MicroStrategy's SmartPointers. Dr. Meyers also noted that the "number of template arguments" varied in the SmartPointers developed by the two companies, which resulted in designs that were "quite different." He stated that MicroStrategy used a "noninvasive design," while Actuate used an "invasive" design. According to Dr. Meyers, the choice whether to use an "invasive" versus a "noninvasive" design was "an amazingly fundamental design decision" because once that choice is made, "all kinds of other things fall out from that." Dr. Meyers further testified that "[a]t a very high level," MicroStrategy's SmartPointers did not contain any "unique features." He noted that while MicroStrategy's and Actuate's SmartPointers shared one feature that was not found in other widely-available SmartPointers, he did not consider that feature to be a "meaningful independent point of comparison" because it was "a direct fallout" of other design decisions made by the two companies. Dr. Meyers also concluded that "at a high level," the StrongPointers implemented by the two companies were "very different." He testified that 25 of 28 points of comparison 14 between MicroStrategy's and Actuate's StrongPointers "could not have been unique" because the designs either differed or were found in other StrongPointers available to the public. According to Dr. Meyers, of the remaining three features, one feature was "not a terribly novel idea because it [was] widely used throughout the standard library" for the C++ computer programming language and the second feature was "equivalent in functionality" to another commonly used function. While Dr. Meyers concluded that the third feature represented "a truly novel function," he had "great difficulty" imagining a context in which that feature would be a useful point of comparison because he could not determine any value that the feature added to the StrongPointers. The defendants also presented the expert testimony of Mark G. Soloway, who qualified as "an expert in the fields of computer software design and process and distributed systems architecture." Soloway earned an undergraduate degree in electrical engineering and computer science, and a master's degree in electrical engineering. He was employed by Actuate from 1995 to 2000 and served in various capacities with the company, including as an interim director of server technology, a principal engineer, and a chief server architect. Soloway testified that Xue's design of the five tables and their corresponding indexes for Actuate was based on "reasonable database design principles" and "generally accepted indexing 15 principles," and that Xue's tables and indexes in both his first and final draft of the metadata schema were "obvious" translations of those principles. Soloway explained that the indexes in the schemas of MicroStrategy and Actuate were "very different . . . in quite a few areas" and that in those instances in which the Actuate indexes had similar goals, their design was dictated either by a "reasonable entity relationship design" or by the specific requirements of Actuate's product. Soloway stated that Xue's initial schema design for Actuate, rather than his final design, should be the focus of any determination whether he had misappropriated MicroStrategy's indexing design. Soloway concluded that if Xue had misappropriated MicroStrategy's indexing design, then he would have included elements of that design in his initial draft for Actuate. Soloway testified, however, that Xue's initial draft did not include any such index design elements. The defendants also presented the expert testimony of Dr. Daniel A. Menascé, a professor of computer science who has a Ph.D. in computer science. Dr. Menascé testified that both Li and Xue were qualified computer scientists and computer engineers, and that they both possessed the training, education, and experience to have applied "generally-known computer science concepts" to arrive at the results that they produced in their work for Actuate. 16 Dr. Menascé also testified that the design of tables and indexes is a "pretty common type of homework assignment" for students in either undergraduate or graduate programs in computer science. Dr. Menascé stated that there is a "very well known set of rules" that students can use to create indexes, and that a homework assignment involving "a few tables" would typically take a student about "a couple of hours" to complete. In a comprehensive letter opinion that contained numerous findings of fact, the chancellor concluded that "MicroStrategy ha[d] failed to meet its burden of proof on all . . . alleged trade secrets," and held in favor of the defendants "on all counts" of the bill of complaint. The chancellor found that the expert testimony of Soloway and Dr. Meyers was "more persuasive" than Hutz's expert testimony, and the chancellor relied on the testimony of the defendants' experts in stating his findings and conclusions. The chancellor entered a final decree incorporating his letter opinion and awarded judgment in favor of the defendants. MicroStrategy appeals. MicroStrategy contends that the chancellor erred in holding that it failed to prove that the defendants misappropriated the alleged trade secrets. MicroStrategy asserts that the Act's definition of misappropriation includes the mere disclosure of a trade secret and that the defendants can be liable for 17 misappropriation even if they merely modified the trade secret or used it as a starting point or guide to assist their own efforts. MicroStrategy argues that it established the statutory element of misappropriation by showing that its pointers and Actuate's pointers shared "unique" features and by demonstrating the "substantial similarity" between its indexes and Xue's first draft of the indexes he designed for Actuate. MicroStrategy additionally contends that once it established a "prima facie" case of misappropriation, the chancellor should have required the defendants to rebut MicroStrategy's evidence with "evidence of independent invention." We disagree with MicroStrategy's arguments.2 2 MicroStrategy has made additional arguments on appeal that we do not address in view of our holding below. 18 Basic Principles Generally, the law affords the owner of a trade secret protection "against the disclosure or unauthorized use of the trade secret by those to whom the secret has been confided under the express or implied restriction of nondisclosure or nonuse." Kewanee Oil Co. v. Bicron Corp., 416 U.S. 470, 475 (1974). "The crucial characteristic of a trade secret is secrecy rather than novelty." Dionne v. Southeast Foam Converting & Packaging, Inc., 240 Va. 297, 302, 397 S.E.2d 110, 113 (1990). The Supreme Court explained this distinction in Kewanee Oil Co.: Novelty, in the patent law sense, is not required for a trade secret . . . . However, some novelty will be required if merely because that which does not possess novelty is usually known; secrecy, in the context of trade secrets, thus implies at least minimal novelty. 416 U.S. at 476. Absolute secrecy is not required to establish the existence of a trade secret. Dionne, 240 Va. at 302, 397 S.E.2d at 113; see Kewanee Oil Co., 416 U.S. at 475. Thus, the owner of a trade secret will not lose protection of the law by disclosing the secret to a licensee, an employee, or others, provided that the disclosure is made in express or implied confidence. Dionne, 240 Va. at 302, 397 S.E.2d at 113; see Kewanee Oil Co., 416 U.S. at 475. Because one of the primary purposes of trade secret protection is to encourage innovation and development, the law 19 will not be employed to restrict legitimate competition. See Kewanee Oil Co., 416 U.S. at 481-82; Minnesota Mining & Mfg. Co. v. Pribyl, 259 F.3d 587, 595 n.2 (7th Cir. 2001). Therefore, "[t]he owner of a trade secret is not entitled to prevent others from using public information to replicate his product, nor may the owner prevent others from making similar products which are not derived from the trade secret." American Can Co. v. Mansukhani, 742 F.2d 314, 329 (7th Cir. 1984). The law, however, will protect the owner of a trade secret from the disclosure or unauthorized use of the trade secret by another to whom the secret has been confided under the express or implied condition of nondisclosure or nonuse. Kewanee Oil Co., 416 U.S. at 475. Further, the law protects the trade secret owner from use of the secret by those who have obtained access to it through improper means. Id. at 475-76. The Virginia Act The plain language of the Act reflects the General Assembly's decision to protect the owner of a trade secret from another's misuse of that secret. Because the General Assembly has enacted legislation addressing this subject, the role of the courts is limited to construing and applying the terms set forth in the Act. See Dionne, 240 Va. at 304, 397 S.E.2d at 114. Depending on the facts of a particular case, software components, as parts of a computer "program," may be trade 20 secrets covered by the Act. See Code § 59.1-336. In order for a plaintiff to establish that such information has been the subject of a trade secret violation, two statutory elements must be proved, namely, the existence of a "trade secret" and its "misappropriation" by the defendant. See id. Thus, if a plaintiff fails to prove either required element, the plaintiff is not entitled to relief under the Act. See Code §§ 59.1-336 through –338. Under the definition of "trade secret" set forth in Code § 59.1-336, MicroStrategy was required to prove that the software components at issue: 1) had independent economic value from not being generally known and readily ascertainable by proper means by persons who could obtain economic value from their disclosure; and 2) were the subject of reasonable efforts to maintain their secrecy. To prove a "misappropriation" of alleged trade secrets under the Act, based on its theory of the case, MicroStrategy was required to establish two factors: 1) that the defendants disclosed or used trade secrets developed by MicroStrategy without its express or implied consent; and 2) that the defendants knew or had reason to know that their knowledge of the trade secrets was either acquired under circumstances giving rise to a duty to maintain their secrecy, or derived from or through a person who owed such a duty to MicroStrategy. Id. 21 Standard of Review Before we address MicroStrategy's assignments of error, we set forth our standard of review. Because the chancellor heard the evidence ore tenus, the court's decree is entitled to the same weight as a jury verdict. The Dunbar Group, LLC v. Tignor, 267 Va. 361, 366-67, 593 S.E.2d 216, 219 (2004); Shooting Point, L.L.C. v. Wescoat, 265 Va. 256, 264, 576 S.E.2d 497, 501 (2003); Chesterfield Meadows Shopping Ctr. Assocs., L.P. v. Smith, 264 Va. 350, 355, 568 S.E.2d 676, 679 (2002). The scope of our review also is defined by the nature of the questions before us. Therefore, we must determine whether the chancellor's holding that MicroStrategy failed to meet its burden of proving the statutory elements under the Act presents questions of fact or mixed questions of law and fact. A question of fact deals with the establishment of historical or physical facts. See Crocker Nat'l Bank v. City and County of San Francisco, 782 P.2d 278, 281 (Cal. 1989); Yellow Cab Co. of Va., Inc. v. Gulley, 169 Va. 611, 619, 194 S.E. 683, 686 (1938). In contrast, a mixed question of law and fact requires the application of legal principles to historical or physical facts and a determination whether the rules arising from those legal principles are satisfied under the facts. Pullman-Standard v. Swint, 456 U.S. 273, 290 n.19 (1982); Sandberg v. Virginia Bankshares, Inc., 979 F.2d 332, 350 (4th 22 Cir. 1992); Crocker Nat'l Bank, 782 P.2d at 281; see Anderson v. Dillow, 262 Va. 797, 800, 553 S.E.2d 526, 527 (2001). Based on this distinction, we conclude that the determination whether a trade secret exists ordinarily presents a question of fact to be determined by the fact finder from the greater weight of the evidence. See Defiance Button Mach. Co. v. C & C Metal Prods. Corp., 759 F.2d 1053, 1063 (2nd Cir. 1985); Learning Curve Toys, Inc. v. PlayWood Toys, Inc., 342 F.3d 714, 723 (7th Cir. 2003); Hulsenbusch v. Davidson Rubber Co., 344 F.2d 730, 734 (8th Cir. 1965); Rivendell Forest Prods., Ltd. v. Georgia-Pacific Corp., 28 F.3d 1042, 1045 (10th Cir. 1994); Elm City Cheese Co. v. Federico, 752 A.2d 1037, 1043 (Conn. 1999). Our conclusion reflects the chancellor's focus in cases of this nature. As the United States Court of Appeals has observed, the existence of a trade secret often is "not obvious" and "requires an ad hoc evaluation of all the surrounding circumstances. For this reason, the question of whether certain information constitutes a trade secret ordinarily is best 'resolved by a fact finder after full presentation of evidence from each side.' " Learning Curve Toys, Inc., 342 F.3d at 723 (quoting Lear Siegler, Inc. v. Ark-Ell Springs, Inc., 569 F.2d 286, 288-89 (5th Cir. 1978)). We also conclude that the issue whether a trade secret has been misappropriated generally presents a question of fact. See 23 Texas Urethane, Inc. v. Seacrest Marine Corp., 608 F.2d 136, 140 (5th Cir. 1979); Pioneer Hi-Bred Int'l v. Holden Found. Seeds, Inc., 35 F.3d 1226, 1239 (8th Cir. 1994). Such a determination is uniquely factual in nature because it ordinarily involves extensive circumstantial evidence that must be evaluated against the direct evidence often presented by defendants in a trade secrets case. See Eden Hannon & Co. v. Sumitomo Trust & Banking Co., 914 F.2d 556, 561 (4th Cir. 1990). The chancellor's resolution of a question of fact is binding on appeal unless plainly wrong or without evidence to support it. See The Dunbar Group, LLC, 267 Va. at 367, 593 S.E.2d at 219; Ryland v. Manor Care, Inc., 266 Va. 503, 509, 587 S.E.2d 515, 519 (2003); Shooting Point L.L.C., 265 Va. at 264, 576 S.E.2d at 501. Therefore, we will not set aside the chancellor's decree in the absence of such error. See The Dunbar Group, LLC, 267 Va. at 367, 593 S.E.2d at 219; Shooting Point L.L.C., 265 Va. at 264, 576 S.E.2d at 501. In addition, we observe that MicroStrategy does not challenge on appeal any of the chancellor's individual findings of fact. Therefore, we do not address the sufficiency of the evidence in support of those individual findings, because our appellate review is limited to errors properly assigned under our Rules. See Rule 5:17(c); Shaheen v. County of Mathews, 265 Va. 462, 476 n.8, 579 S.E.2d 162, 171 n.8 (2003); Fairfax County 24 Fire & Rescue Dep't v. Mottram, 263 Va. 365, 370 n.1, 559 S.E.2d 698, 700 n.1 (2002). Accordingly, our consideration of the record is limited to the issue whether the chancellor's factual findings support his conclusions. Burden of Proof We disagree with MicroStrategy's argument that the chancellor erred in failing to shift the burden of proof to the defendants to establish that Actuate's product was derived independently of MicroStrategy 7. The plain language of the Act does not provide any burden-shifting requirement. As we observed in Dionne, "the proponent must bear the burden of proving a trade-secret claim." 240 Va. at 303 n.2, 397 S.E.2d at 113 n.2. This burden does not shift, even when a plaintiff has presented a prima facie case. Therefore, we hold that MicroStrategy, as plaintiff, had the burden of proving by a preponderance of the evidence that the defendants misappropriated MicroStrategy's trade secrets, and that the defendants were not required to prove their product was independently derived. Adequacy of the Chancellor's Findings The chancellor made numerous factual findings in support of his conclusion that MicroStrategy failed to meet its burden of proving either statutory element of a trade secret violation. Because a failure of proof regarding either element will support 25 the chancellor's judgment in favor of the defendants, we turn directly to consider the chancellor's factual findings regarding the second element necessary to establish a trade secret violation, the issue of misappropriation. Pointers The chancellor found that the defendants did not misappropriate MicroStrategy's SmartPointer design or the design and implementation of its StrongPointer. The chancellor concluded that before Li was employed by MicroStrategy, he understood the "concept of controlling memory leaks with pointers" and was familiar with several reference sources that describe how these tools can be designed and implemented. The chancellor also found that a "knowledgeable C++ programmer" could design a SmartPointer or a StrongPointer "without having any of the reference sources in front of the programmer." In comparing the SmartPointers at issue, the chancellor found that the Actuate SmartPointer has "a fundamentally different design from MicroStrategy's. . . . They have different template arguments and Actuate's design is invasive while MicroStrategy's [design] is not." The chancellor also concluded that although the two SmartPointers shared one unique feature, this feature was a direct result of other design decisions. With regard to the StrongPointers, the chancellor found incredible Hutz's assumption that Li worked from his 26 memory of MicroStrategy's source code when designing Actuate's StrongPointers. The above conclusions culminated in the chancellor's factual finding that the pointers Li designed for Actuate "were not based on MicroStrategy's pointers but rather on public sources that he had before him when he drafted the pointers in question as well as his general knowledge of pointer technology." We hold that these factual findings, which are conclusive in this appeal, fully support the chancellor's determination that MicroStrategy failed to prove that the defendants misappropriated MicroStrategy's pointer technology. Metadata Schema The chancellor rejected Hutz's conclusion that Xue used or disclosed MicroStrategy's confidential information when he created five tables in Actuate's metadata schema. Instead, the chancellor relied on Soloway's testimony and concluded that the five tables at issue "were an obvious translation of the schema in Actuate 5 to that in Actuate 6." With respect to the index portion of the schema, in accordance with Soloway's testimony, the chancellor found that "the design of any index is driven by the table structure and well known software design princip[les]." Citing the different functions of the software products, the chancellor also found that because "Actuate did not support other commercial 27 databases[,] the creation of its tables and indexes was a far simpler task than that facing MicroStrategy's software engineers." Finally, the chancellor rejected Hutz's conclusion that Xue misappropriated MicroStrategy's indexes. These findings support the chancellor's conclusion that with regard to the metadata schema, "MicroStrategy failed to establish that the [defendants] misappropriated a trade secret." Therefore, we hold that the chancellor's factual findings fully support his resolution of all the trade secret misappropriation issues presented in this appeal.3 For these reasons, we will affirm the chancellor's judgment. Affirmed. 3 Based on our holding that MicroStrategy failed to establish one of the two required elements under the Act, that of misappropriation, we need not address MicroStrategy's remaining assignments of error that involve the Act's other required element, the existence of a trade secret. 28